From 0b9a0e823331dc851ab6af731a072476d22bfaa9 Mon Sep 17 00:00:00 2001 From: Lukas Taegert-Atkinson Date: Tue, 14 Dec 2021 06:30:47 +0100 Subject: [PATCH] fix(commonjs): inject module name into dynamic require function (#1038) --- packages/commonjs/src/dynamic-modules.js | 35 +- packages/commonjs/src/generate-imports.js | 9 +- packages/commonjs/src/transform-commonjs.js | 38 +- .../form/constant-template-literal/output.js | 1 - .../form/ignore-ids-function/output.js | 1 - .../test/fixtures/form/ignore-ids/output.js | 1 - .../multi-entry-module-exports/output1.js | 1 - .../multiple-var-declarations-b/output.js | 1 - .../multiple-var-declarations-c/output.js | 1 - .../form/multiple-var-declarations/output.js | 1 - .../fixtures/form/no-exports-entry/output.js | 1 - .../form/node-require-methods/output.js | 1 - .../fixtures/form/require-collision/output.js | 1 - .../unambiguous-with-default-export/output.js | 1 - .../form/unambiguous-with-import/output.js | 1 - .../unambiguous-with-named-export/output.js | 1 - .../dynamic-require-alias-hack/_config.js | 7 + .../dynamic-require-alias-hack/main.js | 9 + .../dynamic-require-alias-hack/stub.js | 3 + .../commonjs/test/snapshots/function.js.md | 736 +++++++++++------- .../commonjs/test/snapshots/function.js.snap | Bin 20734 -> 21233 bytes 21 files changed, 499 insertions(+), 351 deletions(-) create mode 100755 packages/commonjs/test/fixtures/function/dynamic-require-alias-hack/_config.js create mode 100755 packages/commonjs/test/fixtures/function/dynamic-require-alias-hack/main.js create mode 100755 packages/commonjs/test/fixtures/function/dynamic-require-alias-hack/stub.js diff --git a/packages/commonjs/src/dynamic-modules.js b/packages/commonjs/src/dynamic-modules.js index 82f34c78e..c00c21511 100644 --- a/packages/commonjs/src/dynamic-modules.js +++ b/packages/commonjs/src/dynamic-modules.js @@ -63,6 +63,9 @@ export function getDynamicRequireModules(patterns, dynamicRequireRoot) { const FAILED_REQUIRE_ERROR = `throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');`; +export const COMMONJS_REQUIRE_EXPORT = 'commonjsRequire'; +export const CREATE_COMMONJS_REQUIRE_EXPORT = 'createCommonjsRequire'; + export function getDynamicModuleRegistry( isDynamicRequireModulesEnabled, dynamicRequireModules, @@ -70,7 +73,7 @@ export function getDynamicModuleRegistry( ignoreDynamicRequires ) { if (!isDynamicRequireModulesEnabled) { - return `export function commonjsRequire(path) { + return `export function ${COMMONJS_REQUIRE_EXPORT}(path) { ${FAILED_REQUIRE_ERROR} }`; } @@ -100,25 +103,25 @@ ${dynamicModuleProps} }); } -export function commonjsRequire(path, originalModuleDir) { - var resolvedPath = commonjsResolveImpl(path, originalModuleDir); - if (resolvedPath !== null) { - return getDynamicModules()[resolvedPath](); +export function ${CREATE_COMMONJS_REQUIRE_EXPORT}(originalModuleDir) { + function handleRequire(path) { + var resolvedPath = commonjsResolve(path, originalModuleDir); + if (resolvedPath !== null) { + return getDynamicModules()[resolvedPath](); + } + ${ignoreDynamicRequires ? 'return require(path);' : FAILED_REQUIRE_ERROR} } - ${ignoreDynamicRequires ? 'return require(path);' : FAILED_REQUIRE_ERROR} -} - -function commonjsResolve (path, originalModuleDir) { - const resolvedPath = commonjsResolveImpl(path, originalModuleDir); - if (resolvedPath !== null) { - return resolvedPath; + handleRequire.resolve = function (path) { + var resolvedPath = commonjsResolve(path, originalModuleDir); + if (resolvedPath !== null) { + return resolvedPath; + } + return require.resolve(path); } - return require.resolve(path); + return handleRequire; } -commonjsRequire.resolve = commonjsResolve; - -function commonjsResolveImpl (path, originalModuleDir) { +function commonjsResolve (path, originalModuleDir) { var shouldTryNodeModules = isPossibleNodeModulesPath(path); path = normalize(path); var relPath; diff --git a/packages/commonjs/src/generate-imports.js b/packages/commonjs/src/generate-imports.js index 7fb85393d..9c3aaa02e 100644 --- a/packages/commonjs/src/generate-imports.js +++ b/packages/commonjs/src/generate-imports.js @@ -1,3 +1,4 @@ +import { COMMONJS_REQUIRE_EXPORT, CREATE_COMMONJS_REQUIRE_EXPORT } from './dynamic-modules'; import { DYNAMIC_MODULES_ID, EXPORTS_SUFFIX, @@ -92,14 +93,16 @@ export function getRequireHandlers() { resolveRequireSourcesAndGetMeta, needsRequireWrapper, isEsModule, - usesRequire, + isDynamicRequireModulesEnabled, getIgnoreTryCatchRequireStatementMode ) { const imports = []; imports.push(`import * as ${helpersName} from "${HELPERS_ID}";`); - if (usesRequire) { + if (dynamicRequireName) { imports.push( - `import { commonjsRequire as ${dynamicRequireName} } from "${DYNAMIC_MODULES_ID}";` + `import { ${ + isDynamicRequireModulesEnabled ? CREATE_COMMONJS_REQUIRE_EXPORT : COMMONJS_REQUIRE_EXPORT + } as ${dynamicRequireName} } from "${DYNAMIC_MODULES_ID}";` ); } if (exportMode === 'module') { diff --git a/packages/commonjs/src/transform-commonjs.js b/packages/commonjs/src/transform-commonjs.js index 3fb8602cd..851115b47 100644 --- a/packages/commonjs/src/transform-commonjs.js +++ b/packages/commonjs/src/transform-commonjs.js @@ -16,6 +16,7 @@ import { isTruthy, KEY_COMPILED_ESM } from './ast-utils'; +import { COMMONJS_REQUIRE_EXPORT, CREATE_COMMONJS_REQUIRE_EXPORT } from './dynamic-modules'; import { rewriteExportsAndGetExportsBlock, wrapCode } from './generate-exports'; import { getRequireHandlers, @@ -201,12 +202,6 @@ export default async function transformCommonjs( checkDynamicRequire(node.start); uses.require = true; const requireNode = node.callee.object; - magicString.appendLeft( - node.end - 1, - `,${JSON.stringify( - dirname(id) === '.' ? null /* default behavior */ : virtualDynamicRequirePath - )}` - ); replacedDynamicRequires.push(requireNode); return; } @@ -221,12 +216,6 @@ export default async function transformCommonjs( if (hasDynamicArguments(node)) { if (isDynamicRequireModulesEnabled) { checkDynamicRequire(node.start); - magicString.appendLeft( - node.end - 1, - `, ${JSON.stringify( - dirname(id) === '.' ? null /* default behavior */ : virtualDynamicRequirePath - )}` - ); } if (!ignoreDynamicRequires) { replacedDynamicRequires.push(node.callee); @@ -400,7 +389,13 @@ export default async function transformCommonjs( const requireName = deconflict([scope], globals, `require${capitalize(nameBase)}`); const isRequiredName = deconflict([scope], globals, `hasRequired${capitalize(nameBase)}`); const helpersName = deconflict([scope], globals, 'commonjsHelpers'); - const dynamicRequireName = deconflict([scope], globals, 'commonjsRequire'); + const dynamicRequireName = + replacedDynamicRequires.length > 0 && + deconflict( + [scope], + globals, + isDynamicRequireModulesEnabled ? CREATE_COMMONJS_REQUIRE_EXPORT : COMMONJS_REQUIRE_EXPORT + ); const deconflictedExportNames = Object.create(null); for (const [exportName, { scopes }] of exportsAssignmentsByName) { deconflictedExportNames[exportName] = deconflict([...scopes], globals, exportName); @@ -412,10 +407,17 @@ export default async function transformCommonjs( }); } for (const node of replacedDynamicRequires) { - magicString.overwrite(node.start, node.end, dynamicRequireName, { - contentOnly: true, - storeName: true - }); + magicString.overwrite( + node.start, + node.end, + isDynamicRequireModulesEnabled + ? `${dynamicRequireName}(${JSON.stringify(virtualDynamicRequirePath)})` + : dynamicRequireName, + { + contentOnly: true, + storeName: true + } + ); } // We cannot wrap ES/mixed modules @@ -470,7 +472,7 @@ export default async function transformCommonjs( resolveRequireSourcesAndGetMeta, needsRequireWrapper, isEsModule, - uses.require, + isDynamicRequireModulesEnabled, getIgnoreTryCatchRequireStatementMode ); const exportBlock = isEsModule diff --git a/packages/commonjs/test/fixtures/form/constant-template-literal/output.js b/packages/commonjs/test/fixtures/form/constant-template-literal/output.js index 08f8bd02d..ed766a8a3 100644 --- a/packages/commonjs/test/fixtures/form/constant-template-literal/output.js +++ b/packages/commonjs/test/fixtures/form/constant-template-literal/output.js @@ -1,5 +1,4 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -import { commonjsRequire as commonjsRequire } from "_commonjs-dynamic-modules"; import { __exports as input } from "\u0000fixtures/form/constant-template-literal/input.js?commonjs-exports" import require$$0 from "\u0000CWD/fixtures/form/constant-template-literal/tape.js?commonjs-proxy"; diff --git a/packages/commonjs/test/fixtures/form/ignore-ids-function/output.js b/packages/commonjs/test/fixtures/form/ignore-ids-function/output.js index de90c6826..9bf413331 100644 --- a/packages/commonjs/test/fixtures/form/ignore-ids-function/output.js +++ b/packages/commonjs/test/fixtures/form/ignore-ids-function/output.js @@ -1,5 +1,4 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -import { commonjsRequire as commonjsRequire } from "_commonjs-dynamic-modules"; import { __exports as input } from "\u0000fixtures/form/ignore-ids-function/input.js?commonjs-exports" import require$$0 from "\u0000CWD/fixtures/form/ignore-ids-function/bar.js?commonjs-proxy"; diff --git a/packages/commonjs/test/fixtures/form/ignore-ids/output.js b/packages/commonjs/test/fixtures/form/ignore-ids/output.js index e37256ccb..7bf69819c 100644 --- a/packages/commonjs/test/fixtures/form/ignore-ids/output.js +++ b/packages/commonjs/test/fixtures/form/ignore-ids/output.js @@ -1,5 +1,4 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -import { commonjsRequire as commonjsRequire } from "_commonjs-dynamic-modules"; import { __exports as input } from "\u0000fixtures/form/ignore-ids/input.js?commonjs-exports" import require$$0 from "\u0000CWD/fixtures/form/ignore-ids/bar.js?commonjs-proxy"; diff --git a/packages/commonjs/test/fixtures/form/multi-entry-module-exports/output1.js b/packages/commonjs/test/fixtures/form/multi-entry-module-exports/output1.js index 5bf32420e..214e817e3 100644 --- a/packages/commonjs/test/fixtures/form/multi-entry-module-exports/output1.js +++ b/packages/commonjs/test/fixtures/form/multi-entry-module-exports/output1.js @@ -1,5 +1,4 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -import { commonjsRequire as commonjsRequire } from "_commonjs-dynamic-modules"; import require$$0 from "\u0000CWD/fixtures/form/multi-entry-module-exports/input2.js?commonjs-proxy"; const t2 = require$$0; diff --git a/packages/commonjs/test/fixtures/form/multiple-var-declarations-b/output.js b/packages/commonjs/test/fixtures/form/multiple-var-declarations-b/output.js index 05bb39f86..93cf331d5 100644 --- a/packages/commonjs/test/fixtures/form/multiple-var-declarations-b/output.js +++ b/packages/commonjs/test/fixtures/form/multiple-var-declarations-b/output.js @@ -1,5 +1,4 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -import { commonjsRequire as commonjsRequire } from "_commonjs-dynamic-modules"; import { __exports as input } from "\u0000fixtures/form/multiple-var-declarations-b/input.js?commonjs-exports" import require$$0 from "\u0000CWD/fixtures/form/multiple-var-declarations-b/a.js?commonjs-proxy"; diff --git a/packages/commonjs/test/fixtures/form/multiple-var-declarations-c/output.js b/packages/commonjs/test/fixtures/form/multiple-var-declarations-c/output.js index 74dc40f2e..d5d652e50 100644 --- a/packages/commonjs/test/fixtures/form/multiple-var-declarations-c/output.js +++ b/packages/commonjs/test/fixtures/form/multiple-var-declarations-c/output.js @@ -1,5 +1,4 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -import { commonjsRequire as commonjsRequire } from "_commonjs-dynamic-modules"; import { __exports as input } from "\u0000fixtures/form/multiple-var-declarations-c/input.js?commonjs-exports" import require$$0 from "\u0000CWD/fixtures/form/multiple-var-declarations-c/b.js?commonjs-proxy"; diff --git a/packages/commonjs/test/fixtures/form/multiple-var-declarations/output.js b/packages/commonjs/test/fixtures/form/multiple-var-declarations/output.js index 38a4a54aa..3e05dfdb0 100644 --- a/packages/commonjs/test/fixtures/form/multiple-var-declarations/output.js +++ b/packages/commonjs/test/fixtures/form/multiple-var-declarations/output.js @@ -1,5 +1,4 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -import { commonjsRequire as commonjsRequire } from "_commonjs-dynamic-modules"; import { __exports as input } from "\u0000fixtures/form/multiple-var-declarations/input.js?commonjs-exports" import require$$0 from "\u0000CWD/fixtures/form/multiple-var-declarations/a.js?commonjs-proxy"; import require$$1 from "\u0000CWD/fixtures/form/multiple-var-declarations/b.js?commonjs-proxy"; diff --git a/packages/commonjs/test/fixtures/form/no-exports-entry/output.js b/packages/commonjs/test/fixtures/form/no-exports-entry/output.js index b10040f7b..252fd167f 100644 --- a/packages/commonjs/test/fixtures/form/no-exports-entry/output.js +++ b/packages/commonjs/test/fixtures/form/no-exports-entry/output.js @@ -1,5 +1,4 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -import { commonjsRequire as commonjsRequire } from "_commonjs-dynamic-modules"; import { __exports as input_1 } from "\u0000fixtures/form/no-exports-entry/input.js?commonjs-exports" import require$$0 from "\u0000CWD/fixtures/form/no-exports-entry/dummy.js?commonjs-proxy"; diff --git a/packages/commonjs/test/fixtures/form/node-require-methods/output.js b/packages/commonjs/test/fixtures/form/node-require-methods/output.js index b1ceb2c2a..6aff4d3e1 100644 --- a/packages/commonjs/test/fixtures/form/node-require-methods/output.js +++ b/packages/commonjs/test/fixtures/form/node-require-methods/output.js @@ -1,5 +1,4 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -import { commonjsRequire as commonjsRequire } from "_commonjs-dynamic-modules"; import { __exports as input } from "\u0000fixtures/form/node-require-methods/input.js?commonjs-exports" var getFilePath = input.getFilePath = function getFilePath(someFile) { diff --git a/packages/commonjs/test/fixtures/form/require-collision/output.js b/packages/commonjs/test/fixtures/form/require-collision/output.js index d760dbf85..44fd7b388 100644 --- a/packages/commonjs/test/fixtures/form/require-collision/output.js +++ b/packages/commonjs/test/fixtures/form/require-collision/output.js @@ -1,5 +1,4 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -import { commonjsRequire as commonjsRequire } from "_commonjs-dynamic-modules"; import { __exports as input } from "\u0000fixtures/form/require-collision/input.js?commonjs-exports" import require$$1 from "\u0000CWD/fixtures/form/require-collision/foo.js?commonjs-proxy"; diff --git a/packages/commonjs/test/fixtures/form/unambiguous-with-default-export/output.js b/packages/commonjs/test/fixtures/form/unambiguous-with-default-export/output.js index 51bfef8ef..b2a41f38e 100644 --- a/packages/commonjs/test/fixtures/form/unambiguous-with-default-export/output.js +++ b/packages/commonjs/test/fixtures/form/unambiguous-with-default-export/output.js @@ -1,5 +1,4 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -import { commonjsRequire as commonjsRequire } from "_commonjs-dynamic-modules"; import { __exports as input } from "\u0000fixtures/form/unambiguous-with-default-export/input.js?commonjs-exports" import "\u0000CWD/fixtures/form/unambiguous-with-default-export/foo.js?commonjs-proxy"; diff --git a/packages/commonjs/test/fixtures/form/unambiguous-with-import/output.js b/packages/commonjs/test/fixtures/form/unambiguous-with-import/output.js index 8b277a597..76b7883b0 100644 --- a/packages/commonjs/test/fixtures/form/unambiguous-with-import/output.js +++ b/packages/commonjs/test/fixtures/form/unambiguous-with-import/output.js @@ -1,5 +1,4 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -import { commonjsRequire as commonjsRequire } from "_commonjs-dynamic-modules"; import { __exports as input } from "\u0000fixtures/form/unambiguous-with-import/input.js?commonjs-exports" import "\u0000CWD/fixtures/form/unambiguous-with-import/foo.js?commonjs-proxy"; diff --git a/packages/commonjs/test/fixtures/form/unambiguous-with-named-export/output.js b/packages/commonjs/test/fixtures/form/unambiguous-with-named-export/output.js index c84e44011..a31cc3202 100644 --- a/packages/commonjs/test/fixtures/form/unambiguous-with-named-export/output.js +++ b/packages/commonjs/test/fixtures/form/unambiguous-with-named-export/output.js @@ -1,5 +1,4 @@ import * as commonjsHelpers from "_commonjsHelpers.js"; -import { commonjsRequire as commonjsRequire } from "_commonjs-dynamic-modules"; import { __exports as input } from "\u0000fixtures/form/unambiguous-with-named-export/input.js?commonjs-exports" import "\u0000CWD/fixtures/form/unambiguous-with-named-export/foo.js?commonjs-proxy"; diff --git a/packages/commonjs/test/fixtures/function/dynamic-require-alias-hack/_config.js b/packages/commonjs/test/fixtures/function/dynamic-require-alias-hack/_config.js new file mode 100755 index 000000000..f52126137 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/dynamic-require-alias-hack/_config.js @@ -0,0 +1,7 @@ +module.exports = { + description: 'resolves both windows and posix paths', + pluginOptions: { + dynamicRequireTargets: ['fixtures/function/dynamic-require-alias-hack/stub.js'], + ignoreDynamicRequires: true + } +}; diff --git a/packages/commonjs/test/fixtures/function/dynamic-require-alias-hack/main.js b/packages/commonjs/test/fixtures/function/dynamic-require-alias-hack/main.js new file mode 100755 index 000000000..636d42e03 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/dynamic-require-alias-hack/main.js @@ -0,0 +1,9 @@ +/* eslint-disable global-require */ +// noinspection UnnecessaryLocalVariableJS + +// A hack used in many old libraries, saying "workaround to exclude package from browserify list." +// Will bypass rollup-commonjs finding out that this is a require that should not go through the plugin, and will do an infinite search. +const _require = require; +const buffer = _require('buffer'); + +t.is(buffer, require('buffer')); diff --git a/packages/commonjs/test/fixtures/function/dynamic-require-alias-hack/stub.js b/packages/commonjs/test/fixtures/function/dynamic-require-alias-hack/stub.js new file mode 100755 index 000000000..28a021e39 --- /dev/null +++ b/packages/commonjs/test/fixtures/function/dynamic-require-alias-hack/stub.js @@ -0,0 +1,3 @@ +module.exports = function () { + return 'Hello there'; +}; diff --git a/packages/commonjs/test/snapshots/function.js.md b/packages/commonjs/test/snapshots/function.js.md index 70584b812..1e80780c8 100644 --- a/packages/commonjs/test/snapshots/function.js.md +++ b/packages/commonjs/test/snapshots/function.js.md @@ -417,25 +417,25 @@ Generated by [AVA](https://avajs.dev). });␊ }␊ ␊ - function commonjsRequire(path, originalModuleDir) {␊ - var resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ - if (resolvedPath !== null) {␊ - return getDynamicModules()[resolvedPath]();␊ + function createCommonjsRequire(originalModuleDir) {␊ + function handleRequire(path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return getDynamicModules()[resolvedPath]();␊ + }␊ + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ }␊ - throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ + handleRequire.resolve = function (path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return resolvedPath;␊ + }␊ + return require.resolve(path);␊ + };␊ + return handleRequire;␊ }␊ ␊ function commonjsResolve (path, originalModuleDir) {␊ - const resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ - if (resolvedPath !== null) {␊ - return resolvedPath;␊ - }␊ - return require.resolve(path);␊ - }␊ - ␊ - commonjsRequire.resolve = commonjsResolve;␊ - ␊ - function commonjsResolveImpl (path, originalModuleDir) {␊ var shouldTryNodeModules = isPossibleNodeModulesPath(path);␊ path = normalize(path);␊ var relPath;␊ @@ -508,7 +508,7 @@ Generated by [AVA](https://avajs.dev). let message;␊ ␊ function takeModule(withName) {␊ - return commonjsRequire(`./${withName}`, "/fixtures/function/dynamic-module-require");␊ + return createCommonjsRequire("/fixtures/function/dynamic-module-require")(`./${withName}`);␊ }␊ ␊ try {␊ @@ -551,25 +551,25 @@ Generated by [AVA](https://avajs.dev). });␊ }␊ ␊ - function commonjsRequire(path, originalModuleDir) {␊ - var resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ - if (resolvedPath !== null) {␊ - return getDynamicModules()[resolvedPath]();␊ + function createCommonjsRequire(originalModuleDir) {␊ + function handleRequire(path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return getDynamicModules()[resolvedPath]();␊ + }␊ + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ }␊ - throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ + handleRequire.resolve = function (path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return resolvedPath;␊ + }␊ + return require.resolve(path);␊ + };␊ + return handleRequire;␊ }␊ ␊ function commonjsResolve (path, originalModuleDir) {␊ - const resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ - if (resolvedPath !== null) {␊ - return resolvedPath;␊ - }␊ - return require.resolve(path);␊ - }␊ - ␊ - commonjsRequire.resolve = commonjsResolve;␊ - ␊ - function commonjsResolveImpl (path, originalModuleDir) {␊ var shouldTryNodeModules = isPossibleNodeModulesPath(path);␊ path = normalize(path);␊ var relPath;␊ @@ -642,7 +642,7 @@ Generated by [AVA](https://avajs.dev). let message;␊ ␊ function takeModule(withName) {␊ - return commonjsRequire(`./${withName}`, "/fixtures/function/dynamic-require");␊ + return createCommonjsRequire("/fixtures/function/dynamic-require")(`./${withName}`);␊ }␊ ␊ try {␊ @@ -665,6 +665,8 @@ Generated by [AVA](https://avajs.dev). { 'main.js': `'use strict';␊ ␊ + var main = {};␊ + ␊ var direct;␊ var hasRequiredDirect;␊ ␊ @@ -705,25 +707,25 @@ Generated by [AVA](https://avajs.dev). });␊ }␊ ␊ - function commonjsRequire(path, originalModuleDir) {␊ - var resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ - if (resolvedPath !== null) {␊ - return getDynamicModules()[resolvedPath]();␊ + function createCommonjsRequire(originalModuleDir) {␊ + function handleRequire(path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return getDynamicModules()[resolvedPath]();␊ + }␊ + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ }␊ - throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ + handleRequire.resolve = function (path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return resolvedPath;␊ + }␊ + return require.resolve(path);␊ + };␊ + return handleRequire;␊ }␊ ␊ function commonjsResolve (path, originalModuleDir) {␊ - const resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ - if (resolvedPath !== null) {␊ - return resolvedPath;␊ - }␊ - return require.resolve(path);␊ - }␊ - ␊ - commonjsRequire.resolve = commonjsResolve;␊ - ␊ - function commonjsResolveImpl (path, originalModuleDir) {␊ var shouldTryNodeModules = isPossibleNodeModulesPath(path);␊ path = normalize(path);␊ var relPath;␊ @@ -789,14 +791,12 @@ Generated by [AVA](https://avajs.dev). return path;␊ }␊ ␊ - var main = {};␊ - ␊ var submodule = {};␊ ␊ /* eslint-disable import/no-dynamic-require, global-require */␊ ␊ function takeModule(name) {␊ - return commonjsRequire(name, "/fixtures/function/dynamic-require-absolute-import/sub");␊ + return createCommonjsRequire("/fixtures/function/dynamic-require-absolute-import/sub")(name);␊ }␊ ␊ submodule.moduleDirect = takeModule('module/direct');␊ @@ -815,6 +815,140 @@ Generated by [AVA](https://avajs.dev). `, } +## dynamic-require-alias-hack + +> Snapshot 1 + + { + 'main.js': `'use strict';␊ + ␊ + var require$$0 = require('buffer');␊ + ␊ + function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }␊ + ␊ + var require$$0__default = /*#__PURE__*/_interopDefaultLegacy(require$$0);␊ + ␊ + var stub;␊ + var hasRequiredStub;␊ + ␊ + function requireStub () {␊ + if (hasRequiredStub) return stub;␊ + hasRequiredStub = 1;␊ + stub = function () {␊ + return 'Hello there';␊ + };␊ + return stub;␊ + }␊ + ␊ + var dynamicModules;␊ + ␊ + function getDynamicModules() {␊ + return dynamicModules || (dynamicModules = {␊ + "/fixtures/function/dynamic-require-alias-hack/stub.js": requireStub␊ + });␊ + }␊ + ␊ + function createCommonjsRequire(originalModuleDir) {␊ + function handleRequire(path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return getDynamicModules()[resolvedPath]();␊ + }␊ + return require(path);␊ + }␊ + handleRequire.resolve = function (path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return resolvedPath;␊ + }␊ + return require.resolve(path);␊ + };␊ + return handleRequire;␊ + }␊ + ␊ + function commonjsResolve (path, originalModuleDir) {␊ + var shouldTryNodeModules = isPossibleNodeModulesPath(path);␊ + path = normalize(path);␊ + var relPath;␊ + if (path[0] === '/') {␊ + originalModuleDir = '';␊ + }␊ + var modules = getDynamicModules();␊ + var checkedExtensions = ['', '.js', '.json'];␊ + while (true) {␊ + if (!shouldTryNodeModules) {␊ + relPath = normalize(originalModuleDir + '/' + path);␊ + } else {␊ + relPath = normalize(originalModuleDir + '/node_modules/' + path);␊ + }␊ + ␊ + if (relPath.endsWith('/..')) {␊ + break; // Travelled too far up, avoid infinite loop␊ + }␊ + ␊ + for (var extensionIndex = 0; extensionIndex < checkedExtensions.length; extensionIndex++) {␊ + var resolvedPath = relPath + checkedExtensions[extensionIndex];␊ + if (modules[resolvedPath]) {␊ + return resolvedPath;␊ + }␊ + }␊ + if (!shouldTryNodeModules) break;␊ + var nextDir = normalize(originalModuleDir + '/..');␊ + if (nextDir === originalModuleDir) break;␊ + originalModuleDir = nextDir;␊ + }␊ + return null;␊ + }␊ + ␊ + function isPossibleNodeModulesPath (modulePath) {␊ + var c0 = modulePath[0];␊ + if (c0 === '/' || c0 === '\\\\') return false;␊ + var c1 = modulePath[1], c2 = modulePath[2];␊ + if ((c0 === '.' && (!c1 || c1 === '/' || c1 === '\\\\')) ||␊ + (c0 === '.' && c1 === '.' && (!c2 || c2 === '/' || c2 === '\\\\'))) return false;␊ + if (c1 === ':' && (c2 === '/' || c2 === '\\\\')) return false;␊ + return true;␊ + }␊ + ␊ + function normalize (path) {␊ + path = path.replace(/\\\\/g, '/');␊ + var parts = path.split('/');␊ + var slashed = parts[0] === '';␊ + for (var i = 1; i < parts.length; i++) {␊ + if (parts[i] === '.' || parts[i] === '') {␊ + parts.splice(i--, 1);␊ + }␊ + }␊ + for (var i = 1; i < parts.length; i++) {␊ + if (parts[i] !== '..') continue;␊ + if (i > 0 && parts[i - 1] !== '..' && parts[i - 1] !== '.') {␊ + parts.splice(--i, 2);␊ + i--;␊ + }␊ + }␊ + path = parts.join('/');␊ + if (slashed && path[0] !== '/') path = '/' + path;␊ + else if (path.length === 0) path = '.';␊ + return path;␊ + }␊ + ␊ + var main = {};␊ + ␊ + /* eslint-disable global-require */␊ + ␊ + // noinspection UnnecessaryLocalVariableJS␊ + ␊ + // A hack used in many old libraries, saying "workaround to exclude package from browserify list."␊ + // Will bypass rollup-commonjs finding out that this is a require that should not go through the plugin, and will do an infinite search.␊ + const _require = createCommonjsRequire("/fixtures/function/dynamic-require-alias-hack");␊ + const buffer = _require('buffer');␊ + ␊ + t.is(buffer, require$$0__default["default"]);␊ + ␊ + module.exports = main;␊ + `, + } + ## dynamic-require-code-splitting > Snapshot 1 @@ -851,25 +985,25 @@ Generated by [AVA](https://avajs.dev). });␊ }␊ ␊ - function commonjsRequire(path, originalModuleDir) {␊ - var resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ - if (resolvedPath !== null) {␊ - return getDynamicModules()[resolvedPath]();␊ + function createCommonjsRequire(originalModuleDir) {␊ + function handleRequire(path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return getDynamicModules()[resolvedPath]();␊ + }␊ + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ }␊ - throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ + handleRequire.resolve = function (path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return resolvedPath;␊ + }␊ + return require.resolve(path);␊ + };␊ + return handleRequire;␊ }␊ ␊ function commonjsResolve (path, originalModuleDir) {␊ - const resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ - if (resolvedPath !== null) {␊ - return resolvedPath;␊ - }␊ - return require.resolve(path);␊ - }␊ - ␊ - commonjsRequire.resolve = commonjsResolve;␊ - ␊ - function commonjsResolveImpl (path, originalModuleDir) {␊ var shouldTryNodeModules = isPossibleNodeModulesPath(path);␊ path = normalize(path);␊ var relPath;␊ @@ -941,14 +1075,14 @@ Generated by [AVA](https://avajs.dev). ␊ for (const index of [1, 2]) {␊ try {␊ - message = commonjsRequire(`./target${index}.js`, "/fixtures/function/dynamic-require-code-splitting");␊ + message = createCommonjsRequire("/fixtures/function/dynamic-require-code-splitting")(`./target${index}.js`);␊ } catch (err) {␊ ({ message } = err);␊ }␊ t.is(message, index.toString());␊ }␊ ␊ - exports.commonjsRequire = commonjsRequire;␊ + exports.createCommonjsRequire = createCommonjsRequire;␊ `, 'main.js': `'use strict';␊ ␊ @@ -960,7 +1094,7 @@ Generated by [AVA](https://avajs.dev). ␊ for (const index of [1, 2]) {␊ try {␊ - message = lib2.commonjsRequire(`./target${index}.js`, "/fixtures/function/dynamic-require-code-splitting");␊ + message = lib2.createCommonjsRequire("/fixtures/function/dynamic-require-code-splitting")(`./target${index}.js`);␊ } catch (err) {␊ ({ message } = err);␊ }␊ @@ -1026,25 +1160,25 @@ Generated by [AVA](https://avajs.dev). });␊ }␊ ␊ - function commonjsRequire(path, originalModuleDir) {␊ - var resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ - if (resolvedPath !== null) {␊ - return getDynamicModules()[resolvedPath]();␊ + function createCommonjsRequire(originalModuleDir) {␊ + function handleRequire(path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return getDynamicModules()[resolvedPath]();␊ + }␊ + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ }␊ - throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ + handleRequire.resolve = function (path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return resolvedPath;␊ + }␊ + return require.resolve(path);␊ + };␊ + return handleRequire;␊ }␊ ␊ function commonjsResolve (path, originalModuleDir) {␊ - const resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ - if (resolvedPath !== null) {␊ - return resolvedPath;␊ - }␊ - return require.resolve(path);␊ - }␊ - ␊ - commonjsRequire.resolve = commonjsResolve;␊ - ␊ - function commonjsResolveImpl (path, originalModuleDir) {␊ var shouldTryNodeModules = isPossibleNodeModulesPath(path);␊ path = normalize(path);␊ var relPath;␊ @@ -1113,7 +1247,7 @@ Generated by [AVA](https://avajs.dev). /* eslint-disable import/no-dynamic-require, global-require */␊ ␊ function takeModule(withName) {␊ - return commonjsRequire(`./${withName}`, "/fixtures/function/dynamic-require-es-entry");␊ + return createCommonjsRequire("/fixtures/function/dynamic-require-es-entry")(`./${withName}`);␊ }␊ ␊ var importer = takeModule('submodule.js');␊ @@ -1181,25 +1315,25 @@ Generated by [AVA](https://avajs.dev). });␊ }␊ ␊ - function commonjsRequire(path, originalModuleDir) {␊ - var resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ - if (resolvedPath !== null) {␊ - return getDynamicModules()[resolvedPath]();␊ + function createCommonjsRequire(originalModuleDir) {␊ + function handleRequire(path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return getDynamicModules()[resolvedPath]();␊ + }␊ + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ }␊ - throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ + handleRequire.resolve = function (path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return resolvedPath;␊ + }␊ + return require.resolve(path);␊ + };␊ + return handleRequire;␊ }␊ ␊ function commonjsResolve (path, originalModuleDir) {␊ - const resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ - if (resolvedPath !== null) {␊ - return resolvedPath;␊ - }␊ - return require.resolve(path);␊ - }␊ - ␊ - commonjsRequire.resolve = commonjsResolve;␊ - ␊ - function commonjsResolveImpl (path, originalModuleDir) {␊ var shouldTryNodeModules = isPossibleNodeModulesPath(path);␊ path = normalize(path);␊ var relPath;␊ @@ -1270,7 +1404,7 @@ Generated by [AVA](https://avajs.dev). /* eslint-disable import/no-dynamic-require, global-require */␊ ␊ function takeModule(withName) {␊ - return commonjsRequire(`./${withName}`, "/fixtures/function/dynamic-require-extensions");␊ + return createCommonjsRequire("/fixtures/function/dynamic-require-extensions")(`./${withName}`);␊ }␊ ␊ const withExtension = takeModule('submodule.js');␊ @@ -1379,25 +1513,25 @@ Generated by [AVA](https://avajs.dev). });␊ }␊ ␊ - function commonjsRequire(path, originalModuleDir) {␊ - var resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ - if (resolvedPath !== null) {␊ - return getDynamicModules()[resolvedPath]();␊ + function createCommonjsRequire(originalModuleDir) {␊ + function handleRequire(path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return getDynamicModules()[resolvedPath]();␊ + }␊ + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ }␊ - throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ + handleRequire.resolve = function (path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return resolvedPath;␊ + }␊ + return require.resolve(path);␊ + };␊ + return handleRequire;␊ }␊ ␊ function commonjsResolve (path, originalModuleDir) {␊ - const resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ - if (resolvedPath !== null) {␊ - return resolvedPath;␊ - }␊ - return require.resolve(path);␊ - }␊ - ␊ - commonjsRequire.resolve = commonjsResolve;␊ - ␊ - function commonjsResolveImpl (path, originalModuleDir) {␊ var shouldTryNodeModules = isPossibleNodeModulesPath(path);␊ path = normalize(path);␊ var relPath;␊ @@ -1468,7 +1602,7 @@ Generated by [AVA](https://avajs.dev). /* eslint-disable import/no-dynamic-require, global-require */␊ ␊ function takeModule(withName) {␊ - return commonjsRequire(`./${withName}`, "/fixtures/function/dynamic-require-globs");␊ + return createCommonjsRequire("/fixtures/function/dynamic-require-globs")(`./${withName}`);␊ }␊ ␊ t.is(takeModule('submodule1.js'), 'submodule1');␊ @@ -1521,25 +1655,25 @@ Generated by [AVA](https://avajs.dev). });␊ }␊ ␊ - function commonjsRequire(path, originalModuleDir) {␊ - var resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ - if (resolvedPath !== null) {␊ - return getDynamicModules()[resolvedPath]();␊ + function createCommonjsRequire(originalModuleDir) {␊ + function handleRequire(path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return getDynamicModules()[resolvedPath]();␊ + }␊ + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ }␊ - throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ + handleRequire.resolve = function (path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return resolvedPath;␊ + }␊ + return require.resolve(path);␊ + };␊ + return handleRequire;␊ }␊ ␊ function commonjsResolve (path, originalModuleDir) {␊ - const resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ - if (resolvedPath !== null) {␊ - return resolvedPath;␊ - }␊ - return require.resolve(path);␊ - }␊ - ␊ - commonjsRequire.resolve = commonjsResolve;␊ - ␊ - function commonjsResolveImpl (path, originalModuleDir) {␊ var shouldTryNodeModules = isPossibleNodeModulesPath(path);␊ path = normalize(path);␊ var relPath;␊ @@ -1610,7 +1744,7 @@ Generated by [AVA](https://avajs.dev). /* eslint-disable import/no-dynamic-require, global-require */␊ ␊ function takeModule(withName) {␊ - return commonjsRequire(withName, "/fixtures/function/dynamic-require-instances");␊ + return createCommonjsRequire("/fixtures/function/dynamic-require-instances")(withName);␊ }␊ ␊ takeModule('./direct').value = 'direct-instance';␊ @@ -1645,25 +1779,25 @@ Generated by [AVA](https://avajs.dev). });␊ }␊ ␊ - function commonjsRequire(path, originalModuleDir) {␊ - var resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ - if (resolvedPath !== null) {␊ - return getDynamicModules()[resolvedPath]();␊ + function createCommonjsRequire(originalModuleDir) {␊ + function handleRequire(path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return getDynamicModules()[resolvedPath]();␊ + }␊ + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ }␊ - throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ + handleRequire.resolve = function (path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return resolvedPath;␊ + }␊ + return require.resolve(path);␊ + };␊ + return handleRequire;␊ }␊ ␊ function commonjsResolve (path, originalModuleDir) {␊ - const resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ - if (resolvedPath !== null) {␊ - return resolvedPath;␊ - }␊ - return require.resolve(path);␊ - }␊ - ␊ - commonjsRequire.resolve = commonjsResolve;␊ - ␊ - function commonjsResolveImpl (path, originalModuleDir) {␊ var shouldTryNodeModules = isPossibleNodeModulesPath(path);␊ path = normalize(path);␊ var relPath;␊ @@ -1734,7 +1868,7 @@ Generated by [AVA](https://avajs.dev). /* eslint-disable import/no-dynamic-require, global-require */␊ ␊ function takeModule(withName) {␊ - return commonjsRequire(`./${withName}`, "/fixtures/function/dynamic-require-json");␊ + return createCommonjsRequire("/fixtures/function/dynamic-require-json")(`./${withName}`);␊ }␊ ␊ t.deepEqual(takeModule('dynamic.json'), { value: 'present' });␊ @@ -1822,25 +1956,25 @@ Generated by [AVA](https://avajs.dev). });␊ }␊ ␊ - function commonjsRequire(path, originalModuleDir) {␊ - var resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ - if (resolvedPath !== null) {␊ - return getDynamicModules()[resolvedPath]();␊ + function createCommonjsRequire(originalModuleDir) {␊ + function handleRequire(path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return getDynamicModules()[resolvedPath]();␊ + }␊ + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ }␊ - throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ + handleRequire.resolve = function (path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return resolvedPath;␊ + }␊ + return require.resolve(path);␊ + };␊ + return handleRequire;␊ }␊ ␊ function commonjsResolve (path, originalModuleDir) {␊ - const resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ - if (resolvedPath !== null) {␊ - return resolvedPath;␊ - }␊ - return require.resolve(path);␊ - }␊ - ␊ - commonjsRequire.resolve = commonjsResolve;␊ - ␊ - function commonjsResolveImpl (path, originalModuleDir) {␊ var shouldTryNodeModules = isPossibleNodeModulesPath(path);␊ path = normalize(path);␊ var relPath;␊ @@ -1911,7 +2045,7 @@ Generated by [AVA](https://avajs.dev). /* eslint-disable import/no-dynamic-require, global-require */␊ ␊ function takeModule$1(name) {␊ - return commonjsRequire(name, "/fixtures/function/dynamic-require-package/sub");␊ + return createCommonjsRequire("/fixtures/function/dynamic-require-package/sub")(name);␊ }␊ ␊ var sub = {␊ @@ -1922,7 +2056,7 @@ Generated by [AVA](https://avajs.dev). /* eslint-disable import/no-dynamic-require, global-require */␊ ␊ function takeModule(name) {␊ - return commonjsRequire(name, "/fixtures/function/dynamic-require-package");␊ + return createCommonjsRequire("/fixtures/function/dynamic-require-package")(name);␊ }␊ ␊ t.is(takeModule('.'), 'same-directory');␊ @@ -1945,21 +2079,21 @@ Generated by [AVA](https://avajs.dev). { 'entry.js': `'use strict';␊ ␊ - var entry$1;␊ + var entry$1 = {};␊ + ␊ + var entry;␊ var hasRequiredEntry;␊ ␊ function requireEntry () {␊ - if (hasRequiredEntry) return entry$1;␊ + if (hasRequiredEntry) return entry;␊ hasRequiredEntry = 1;␊ - entry$1 = 'custom-module';␊ - return entry$1;␊ + entry = 'custom-module';␊ + return entry;␊ }␊ ␊ - var entry = {};␊ - ␊ t.is(requireEntry(), 'custom-module');␊ ␊ - module.exports = entry;␊ + module.exports = entry$1;␊ `, } @@ -1999,25 +2133,25 @@ Generated by [AVA](https://avajs.dev). });␊ }␊ ␊ - function commonjsRequire(path, originalModuleDir) {␊ - var resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ - if (resolvedPath !== null) {␊ - return getDynamicModules()[resolvedPath]();␊ + function createCommonjsRequire(originalModuleDir) {␊ + function handleRequire(path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return getDynamicModules()[resolvedPath]();␊ + }␊ + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ }␊ - throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ + handleRequire.resolve = function (path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return resolvedPath;␊ + }␊ + return require.resolve(path);␊ + };␊ + return handleRequire;␊ }␊ ␊ function commonjsResolve (path, originalModuleDir) {␊ - const resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ - if (resolvedPath !== null) {␊ - return resolvedPath;␊ - }␊ - return require.resolve(path);␊ - }␊ - ␊ - commonjsRequire.resolve = commonjsResolve;␊ - ␊ - function commonjsResolveImpl (path, originalModuleDir) {␊ var shouldTryNodeModules = isPossibleNodeModulesPath(path);␊ path = normalize(path);␊ var relPath;␊ @@ -2088,7 +2222,7 @@ Generated by [AVA](https://avajs.dev). /* eslint-disable import/no-dynamic-require, global-require */␊ ␊ function takeModuleWithDelimiter(name, delimiter) {␊ - return commonjsRequire(`.${delimiter}${name.replace(/=/g, delimiter)}`, "/fixtures/function/dynamic-require-relative-paths");␊ + return createCommonjsRequire("/fixtures/function/dynamic-require-relative-paths")(`.${delimiter}${name.replace(/=/g, delimiter)}`);␊ }␊ ␊ t.is(takeModuleWithDelimiter('sub=submodule.js', '/'), 'submodule');␊ @@ -2150,25 +2284,25 @@ Generated by [AVA](https://avajs.dev). });␊ }␊ ␊ - function commonjsRequire(path, originalModuleDir) {␊ - var resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ - if (resolvedPath !== null) {␊ - return getDynamicModules()[resolvedPath]();␊ + function createCommonjsRequire(originalModuleDir) {␊ + function handleRequire(path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return getDynamicModules()[resolvedPath]();␊ + }␊ + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ }␊ - throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ + handleRequire.resolve = function (path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return resolvedPath;␊ + }␊ + return require.resolve(path);␊ + };␊ + return handleRequire;␊ }␊ ␊ function commonjsResolve (path, originalModuleDir) {␊ - const resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ - if (resolvedPath !== null) {␊ - return resolvedPath;␊ - }␊ - return require.resolve(path);␊ - }␊ - ␊ - commonjsRequire.resolve = commonjsResolve;␊ - ␊ - function commonjsResolveImpl (path, originalModuleDir) {␊ var shouldTryNodeModules = isPossibleNodeModulesPath(path);␊ path = normalize(path);␊ var relPath;␊ @@ -2239,7 +2373,7 @@ Generated by [AVA](https://avajs.dev). /* eslint-disable import/no-dynamic-require, global-require */␊ ␊ function takeModule$1(name) {␊ - return commonjsRequire(name, "/fixtures/function/dynamic-require-resolve-index/sub");␊ + return createCommonjsRequire("/fixtures/function/dynamic-require-resolve-index/sub")(name);␊ }␊ ␊ var sub = {␊ @@ -2250,7 +2384,7 @@ Generated by [AVA](https://avajs.dev). /* eslint-disable import/no-dynamic-require, global-require */␊ ␊ function takeModule(name) {␊ - return commonjsRequire(name, "/fixtures/function/dynamic-require-resolve-index");␊ + return createCommonjsRequire("/fixtures/function/dynamic-require-resolve-index")(name);␊ }␊ ␊ t.is(takeModule('.'), 'same-directory');␊ @@ -2273,18 +2407,7 @@ Generated by [AVA](https://avajs.dev). { 'main.js': `'use strict';␊ ␊ - var customModule = {exports: {}};␊ - ␊ - var hasRequiredCustomModule;␊ - ␊ - function requireCustomModule () {␊ - if (hasRequiredCustomModule) return customModule.exports;␊ - hasRequiredCustomModule = 1;␊ - (function (module) {␊ - module.exports = () => commonjsRequire.resolve('custom-module2',"/fixtures/function/dynamic-require-resolve-reference/node_modules/custom-module");␊ - } (customModule));␊ - return customModule.exports;␊ - }␊ + var main = {};␊ ␊ var customModule2;␊ var hasRequiredCustomModule2;␊ @@ -2292,7 +2415,7 @@ Generated by [AVA](https://avajs.dev). function requireCustomModule2 () {␊ if (hasRequiredCustomModule2) return customModule2;␊ hasRequiredCustomModule2 = 1;␊ - customModule2 = () => commonjsRequire.resolve('custom-module',"/fixtures/function/dynamic-require-resolve-reference/node_modules/custom-module2");␊ + customModule2 = () => createCommonjsRequire("/fixtures/function/dynamic-require-resolve-reference/node_modules/custom-module2").resolve('custom-module');␊ return customModule2;␊ }␊ ␊ @@ -2307,25 +2430,25 @@ Generated by [AVA](https://avajs.dev). });␊ }␊ ␊ - function commonjsRequire(path, originalModuleDir) {␊ - var resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ - if (resolvedPath !== null) {␊ - return getDynamicModules()[resolvedPath]();␊ + function createCommonjsRequire(originalModuleDir) {␊ + function handleRequire(path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return getDynamicModules()[resolvedPath]();␊ + }␊ + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ }␊ - throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ + handleRequire.resolve = function (path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return resolvedPath;␊ + }␊ + return require.resolve(path);␊ + };␊ + return handleRequire;␊ }␊ ␊ function commonjsResolve (path, originalModuleDir) {␊ - const resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ - if (resolvedPath !== null) {␊ - return resolvedPath;␊ - }␊ - return require.resolve(path);␊ - }␊ - ␊ - commonjsRequire.resolve = commonjsResolve;␊ - ␊ - function commonjsResolveImpl (path, originalModuleDir) {␊ var shouldTryNodeModules = isPossibleNodeModulesPath(path);␊ path = normalize(path);␊ var relPath;␊ @@ -2391,7 +2514,18 @@ Generated by [AVA](https://avajs.dev). return path;␊ }␊ ␊ - var main = {};␊ + var customModule = {exports: {}};␊ + ␊ + var hasRequiredCustomModule;␊ + ␊ + function requireCustomModule () {␊ + if (hasRequiredCustomModule) return customModule.exports;␊ + hasRequiredCustomModule = 1;␊ + (function (module) {␊ + module.exports = () => createCommonjsRequire("/fixtures/function/dynamic-require-resolve-reference/node_modules/custom-module").resolve('custom-module2');␊ + } (customModule));␊ + return customModule.exports;␊ + }␊ ␊ t.is(␊ requireCustomModule()(),␊ @@ -2433,25 +2567,25 @@ Generated by [AVA](https://avajs.dev). });␊ }␊ ␊ - function commonjsRequire(path, originalModuleDir) {␊ - var resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ - if (resolvedPath !== null) {␊ - return getDynamicModules()[resolvedPath]();␊ + function createCommonjsRequire(originalModuleDir) {␊ + function handleRequire(path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return getDynamicModules()[resolvedPath]();␊ + }␊ + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ }␊ - throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ + handleRequire.resolve = function (path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return resolvedPath;␊ + }␊ + return require.resolve(path);␊ + };␊ + return handleRequire;␊ }␊ ␊ function commonjsResolve (path, originalModuleDir) {␊ - const resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ - if (resolvedPath !== null) {␊ - return resolvedPath;␊ - }␊ - return require.resolve(path);␊ - }␊ - ␊ - commonjsRequire.resolve = commonjsResolve;␊ - ␊ - function commonjsResolveImpl (path, originalModuleDir) {␊ var shouldTryNodeModules = isPossibleNodeModulesPath(path);␊ path = normalize(path);␊ var relPath;␊ @@ -2524,7 +2658,7 @@ Generated by [AVA](https://avajs.dev). let message;␊ ␊ function takeModule(withName) {␊ - return commonjsRequire(`./${withName}`, "/");␊ + return createCommonjsRequire("/")(`./${withName}`);␊ }␊ ␊ try {␊ @@ -2547,6 +2681,8 @@ Generated by [AVA](https://avajs.dev). { 'main.js': `'use strict';␊ ␊ + var main = {};␊ + ␊ var customModule = {exports: {}};␊ ␊ var circular = {};␊ @@ -2589,8 +2725,6 @@ Generated by [AVA](https://avajs.dev). return customModule.exports;␊ }␊ ␊ - var main = {};␊ - ␊ /* eslint-disable import/no-dynamic-require, global-require */␊ ␊ const custom = requireCustomModule();␊ @@ -2664,25 +2798,25 @@ Generated by [AVA](https://avajs.dev). });␊ }␊ ␊ - function commonjsRequire(path, originalModuleDir) {␊ - var resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ - if (resolvedPath !== null) {␊ - return getDynamicModules()[resolvedPath]();␊ + function createCommonjsRequire(originalModuleDir) {␊ + function handleRequire(path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return getDynamicModules()[resolvedPath]();␊ + }␊ + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ }␊ - throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ + handleRequire.resolve = function (path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return resolvedPath;␊ + }␊ + return require.resolve(path);␊ + };␊ + return handleRequire;␊ }␊ ␊ function commonjsResolve (path, originalModuleDir) {␊ - const resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ - if (resolvedPath !== null) {␊ - return resolvedPath;␊ - }␊ - return require.resolve(path);␊ - }␊ - ␊ - commonjsRequire.resolve = commonjsResolve;␊ - ␊ - function commonjsResolveImpl (path, originalModuleDir) {␊ var shouldTryNodeModules = isPossibleNodeModulesPath(path);␊ path = normalize(path);␊ var relPath;␊ @@ -2753,7 +2887,7 @@ Generated by [AVA](https://avajs.dev). /* eslint-disable import/no-dynamic-require, global-require */␊ ␊ function takeModule$1(name) {␊ - return commonjsRequire(name, "/fixtures/function/dynamic-require-slash-access/sub");␊ + return createCommonjsRequire("/fixtures/function/dynamic-require-slash-access/sub")(name);␊ }␊ ␊ var sub = {␊ @@ -2764,7 +2898,7 @@ Generated by [AVA](https://avajs.dev). /* eslint-disable import/no-dynamic-require, global-require */␊ ␊ function takeModule(name) {␊ - return commonjsRequire(name, "/fixtures/function/dynamic-require-slash-access");␊ + return createCommonjsRequire("/fixtures/function/dynamic-require-slash-access")(name);␊ }␊ ␊ t.is(takeModule('.'), 'same-directory', '.');␊ @@ -2808,25 +2942,25 @@ Generated by [AVA](https://avajs.dev). });␊ }␊ ␊ - function commonjsRequire(path, originalModuleDir) {␊ - var resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ - if (resolvedPath !== null) {␊ - return getDynamicModules()[resolvedPath]();␊ + function createCommonjsRequire(originalModuleDir) {␊ + function handleRequire(path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return getDynamicModules()[resolvedPath]();␊ + }␊ + return require(path);␊ }␊ - return require(path);␊ + handleRequire.resolve = function (path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return resolvedPath;␊ + }␊ + return require.resolve(path);␊ + };␊ + return handleRequire;␊ }␊ ␊ function commonjsResolve (path, originalModuleDir) {␊ - const resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ - if (resolvedPath !== null) {␊ - return resolvedPath;␊ - }␊ - return require.resolve(path);␊ - }␊ - ␊ - commonjsRequire.resolve = commonjsResolve;␊ - ␊ - function commonjsResolveImpl (path, originalModuleDir) {␊ var shouldTryNodeModules = isPossibleNodeModulesPath(path);␊ path = normalize(path);␊ var relPath;␊ @@ -2897,7 +3031,7 @@ Generated by [AVA](https://avajs.dev). /* eslint-disable import/no-dynamic-require, global-require */␊ ␊ function takeModule(withName) {␊ - return commonjsRequire(withName, "/fixtures/function/dynamic-require-targets-fallback");␊ + return createCommonjsRequire("/fixtures/function/dynamic-require-targets-fallback")(withName);␊ }␊ ␊ t.is(takeModule('./dep1.js'), 'dep');␊ @@ -2933,25 +3067,25 @@ Generated by [AVA](https://avajs.dev). });␊ }␊ ␊ - function commonjsRequire(path, originalModuleDir) {␊ - var resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ - if (resolvedPath !== null) {␊ - return getDynamicModules()[resolvedPath]();␊ + function createCommonjsRequire(originalModuleDir) {␊ + function handleRequire(path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return getDynamicModules()[resolvedPath]();␊ + }␊ + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ }␊ - throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');␊ + handleRequire.resolve = function (path) {␊ + var resolvedPath = commonjsResolve(path, originalModuleDir);␊ + if (resolvedPath !== null) {␊ + return resolvedPath;␊ + }␊ + return require.resolve(path);␊ + };␊ + return handleRequire;␊ }␊ ␊ function commonjsResolve (path, originalModuleDir) {␊ - const resolvedPath = commonjsResolveImpl(path, originalModuleDir);␊ - if (resolvedPath !== null) {␊ - return resolvedPath;␊ - }␊ - return require.resolve(path);␊ - }␊ - ␊ - commonjsRequire.resolve = commonjsResolve;␊ - ␊ - function commonjsResolveImpl (path, originalModuleDir) {␊ var shouldTryNodeModules = isPossibleNodeModulesPath(path);␊ path = normalize(path);␊ var relPath;␊ @@ -3022,7 +3156,7 @@ Generated by [AVA](https://avajs.dev). /* eslint-disable import/no-dynamic-require, global-require */␊ ␊ function takeModule(withName) {␊ - return commonjsRequire(withName, "/fixtures/function/dynamic-require-targets-no-fallback");␊ + return createCommonjsRequire("/fixtures/function/dynamic-require-targets-no-fallback")(withName);␊ }␊ ␊ t.is(takeModule('./dep1.js'), 'dep');␊ diff --git a/packages/commonjs/test/snapshots/function.js.snap b/packages/commonjs/test/snapshots/function.js.snap index 9a637b0f78efbc20252f51b2fa9f6550e0ac45c6..56d99191721677fa71980f018592595d6c47e358 100644 GIT binary patch literal 21233 zcmZ6wW2`Vdur0jpy`OE{wr$(CZQHhO+qP}nwt3%kk}vu0?T^XIYBOomPBSx0Kve)= z$=1N$$=uEv-<1&x2w(%VK)|sb%ou5__2!>W$2eXT1i=3e;2R!DcdU_>F1X-vYz}|N zAyO7`s7CAwS@Ub+_^jp*aX}#Bf$`N%RYEDzM58SI{B01)092^rZDevah!Rjt2>Dx} z6W%F}SUmC*@hKIkZ>PKI>*`wdNTk%diWa-wZV#tEkEh+NHE^pjJ7b!Hktc`h> z-;J6r+ASY6ouEHh5WnZA){d8Vg1kPrO_Hx%hsTPjzXGE3vLR+0{+A2bny9cmj|q*k znw^gj8?tkV&ktJsldUXQ-EEKi3ne+<_urK*8V^yi`Gzj5P1PVW*i3_Lm(v#{xSQ;j znHLNkfq$3<7F*F(KOZS?%4^@|cSJl3I<23wV)Im%%r^7;BN=9Op9?5frMy1ZgEnhB zr9|dy!t6IF@Z)i+n=MbJ2HKiV+vYbc8cRMs^ep^lY-ZMgNR}h^` z<}y{=KV@NZf3L|VTwktGIxWU8E}Vh7fJ(DBysbSBV<-ioUu!j=8+Clk2+t!7nXNZ_ zv*|sy{6`L(iCDGSUJJZwR}h)#Wfog5IKNe6w!Y^v1z*^YxA%Q@8nr~{XY?nXY-i0n zO|KdEgFLj0Z(k1J^KalPj&{7Xg~YBGFhqJFZ+;WI#l+^J;TD?lFowW-yYC*}xDou$ zYBS7w98+TRy{6ZicktM241QuymHxCG&#>~qo}pbpV5#SudGtE%HpiI!`ksr@?tHE0 z3wrJ@AwGuikN4fHJ`JeL!(*!=xzwcCePdD{LwNQGhRzHGm-T|jV_ zAryOe#J#))MTQ< zCr*H=Pf-2qm`Ce2a z?QT1*!Df2=$xww}LSX8YTChA}#j%_3&$sn?xs_o=-Enzq;Rx7Cn{Sre*zLS!7)-fU zYr0-y-1TsSKVt{$rmr^7Kb-OS4f5%tfBp(dh3z)}Deav@bbcGlK|S}cV!h5cjZJsn65$B+0smdrO69q)vZ1ZhYU;9m$CNk&cO9_IyL3#a zeIM_L%3``cru)yz{t%;qA$D$EWwJW#%x{tCZr%U-2h06UVl&fBYo;~hE+9U~R`t3&ygVzcUMk)XalG9Ry|7CI=ppiV zZ2HDD)qO^f(G_yCJ(pKXn!e0*|J?%(uyf7BSs%~&M(1UufKe##+i6Q&-4cQ`7QGgs z9?sjo-q_E{T>y?-$8+il z*GF&A>de+bFf5J44;G9M&NWaCm+os5@G6*Y=CAkCgxwZTHd8mm99n zTG5kl%R%x=ns0Og@MvK2ndsj^xE1Z++0Yz!oCLfG=~06r=7sh^dEIc_vc_7 zt>^6okL-nlZ^vPR5~>cH_na55&Y$E_j|{r!#+wYbUyjds_fKaWPBI4l@o~{6J@a;@6%Gq* z9h_d=-d>m5iVZp@ILqyO-do8=nD_lI zXqDen+|ur&Ph`OqVyCO~kIqo-N|_6fs@mUFk8CD0u+W_BmFDG^UyjFAfM47;hAofB z>Sxoxp?SJEV5h@JK3unf2Asbdbf+D!w(E}fJ#^1i$j;PvX>Exk|}9Jj|A zB!*>foi$Fmc1ywc_O;or`{i8Gy@I}Xl2ABKp|#F`I1T$79z=b4yyjg<|N1;{Jz;vF zzpp-uU)bJcGg)rPnsT$>%K%r{49@-LmReGl^t@hnw0wOZedKt2_8KPoa)S!)elV-g z{kqS3Ycc444VNn;fYrR)-PvGzP7QUq3}n9cRm80SHW`*^`Q8pw*!27hjt0j04(|GN zoK}2|_&TT1E^xVC=A0Ou*Y*N4wEd1T-0a*QM$BqEA3D5fKPLvzKMzSdT`#x0+`8W% zUaIc!oKpU#)p)f-3asc>T9&R}xn8DGZn*mR{BAY+_u%Li;}0!r_`O zHGsZaH9Ai|bGg|R5{$d?nEiXL&USNJ$*sdq9G=e$WbJ#cq2t}CJN*#&lF3|l81=ZS z?Vm4AbH3?Z>cxIqeVyaQ#c*8za$3FXMhb=V(^&KE+mgB3#r3)6ID+Fn9vz6=eT5CZ z{i>|p(eGtF`f5@8AnWTgT?xOpRib~sTywrDJ=*g#j7vtw`uEMEiur@PXd?>LS0rE2Yd zp2yY02qhHsx6~3=*R_B7FsAqUyL-l?ci>}?9a;bm5b@G5H^%pl_Vl?E$7iuXt0env zPZ~sQPXpf>A~kzrt5T|#sy@@2SS|VFMU?_594Um@3+aV>a7RzItKpJEB$dn z!l-c0*IV&;)i;~_A|2eu7>gME+WmeE%?fT?=)a6aOwGK`*IvcD-|Gs_ zQqNoRsZv1Ce*wCn$qz`eH}n3b9Wd>?>~Oe?4i8uR{lBc6Ev9B(caPw6zIP9I@8d}C z&UxmbPaN<9RnUyppYz6dEB=R+hW#wg?B)pT=YdI|By2t}u4?|*VN45Quet3u-DUlA zi@R5c$^`_6tw_+z>=9PYc8jO)?U?FL>uZ7RYwy3}=OD~KdCFJ$tIj}gyZ122i8HT< z01D0@-t+hy>ZV6e^(IyGEvf0ZXKJJCGLGkk3`d}h8iaxl`z4I*&GVNmsu%Ztme$D^ z5F-R}=B&HLv@>Yq38 zu@wZ5K883)n*p8NO-s{k`^CvX0ao1G#ec^24hWv>bEuo93%|^+rEH_zj*^QTGA=Mb2u)TK zF>Svzhq)}JHjeGDDvrNQa9MqLPeaUN>@MGJp}lIY`_E=Gq}{qbP%7x)+ik4^8+5m? z{-L#;6O4tHvk|sFr;7#7KwMAlkk^sxn>x=UGND>`FYl}NvaUSfE81Y%ACHjNz8WPv zU9Sh#x*ON~tFc|~YoK~9e)FdYl+89RI!@d1>akvK-gHmrAu3?rd4%WUB>u@wtZAEE zEM=7qPTw8eJYEoEKZu?uWqMzrD9=|-*EdX~k3yaQl4O7jNWm_-x_L13t^A~JUhz7J zz&@A#z1YwGg3o>qnW^d1=-Q?{p-`BG=NlIM^vfVX*%8@K0GU0{@?IG);#3G)sieEe zmdrLL8_Wx7%GK-#R%O-N@M4&7qi8nO*TB2XgwTxGF~p2Zb7~xm$ShGS?hWJ!wX*3V zE+dL1bPXkq42c(XDk|8Ze(&8`Vd{ig;X?-|O&eFUX=R{eb2(A2qtdlK`3);(F~%92 zP`cGj@zUvXyb~~y13U4iwnoGw@R{3KW6C5j7=d0)N~w9Mvwtehff)cRl~8Q?ajoK> zxV75Olp$)Z&ZL=44aR}1S;gqQ>UeV1BljCkAApXfOeyu_Uf1IJwFL3{jdXULi?)Hd z;sKH*N<97|anhw}XPn3VF5?MT@~pK&h-(BWYXkvT@Q0mE6Qh>m#ws)ANLd=`$QsJ@ z<4xchR=3h-i8s#5lGco*MLZGWUez9`gOX3)Etwe_ zh*w}7)6TFZ+CuOb$W^!D%ye9>tLW;e5BBMZQUwb` zj4dLF3+)mKT!a~{$+rPUi1xYBb@W9}fXFaKrlJ@D2#)>rOW;D-GuQ-Q_YX%g!e-pD z6-x_M=vz@A)>1yb=4kcA0W#B=)nP5IkS__M72{P05cBoibmY#&~`CsY#}iu?U`N< zVFV8$4~6KX#p$Q4O&%QU=>FD;;z5@}*CV=i{r7$n45-C~RMO;)0T%Jhn*3BQt{~Clk;X96ob)_M4bc|ENfU6A*s}z9n-dmH zv*N-tw*4>VU>K~kyT=3V8RnomGzGVPdX4NPa*u}wa+QE-&%zXAl#q@#6o?k)DMgmRU|-QbUE4t3DV{k{pN5{_4Fh&=HNY}zFz^W zU>yb+1O>zKDus9e{8{23q6vBxT_fJMWhfO|1xeV|N-{-C@A4d|HUBz?8`xS-%+* zPK-CzLcHl-b3Uk~ zmdQ!X5eqmN2h=ymP{75^`dzcZ+g*njX#8ujlv?C((kGuOCOWn<<6CXSksbJnQD!G*v< zgo&;=cINefi+AF&N@8xw*x#qaUM7L*KnITr_nV7ZNqNCjyC@OO*zjKA^9Ktd)uLqN z!Xae~OLwdDFGi>~Yr^KGONw~%M-}za{{t|b4Vs$CW%ef*rz3;L)K*V5%2a3~S;Uyr zF9d*4jRi?LpMM2l0~16SA8_hKbQ(AqlQ!`zO}{u*t_F6F{WqO>;x6(GuguSyN>4#q zegEi>5P}>H3^?Jb=szay95@=FRF7-p0SE);{<6IRaX*yI7?nn6L+^>8S+|GSF#j=Z zM-v_#mzrz=1W9?2_M++Rqx>Wl-yd&d&AjA3?s0IgjS%66sJajygp4JD1(ZmvHy>CJ zHrj44D8?cDc_YFH5<}p>8vX5HbhIsWCSzlbtwFRZF5U=BKi?S>v!9$P!OFTyWC6!a zO<9QB1i*`7_EHU&(gSG3U|>^$Cri$l6sV1JF$b0^zCi*-2UY4KGZOy4vk)1H&HKmqX6XcM%F2L@sB;+W%veaLxXytG^s?wvV~g4q_I&Y zSS&#Fx#?!LtR+zxNEC@O&}Iq2sCa>xl8yS&c*b0U)TSi^%%C+Apu7_fe*p2tKs7F1 zJl)oy&wYEByH1Y%Ku(>Tra;)zE^iMF&c6F=zxZy(is+__!TE}{(n6rtv$S-}EGc8u z6ru}^ap`8o-8(5HeTs!@HHSovOIqbPa}brog_pDMd+-*Ha|EOcNy~Qv4h|e(b9g4d zMNuOS`uI7ezEzEy{xiNZ78@&^x}E{+>$Ed1=tojB@@Zqc#9?VYJ->(0t}N0viIFS1 z($J!CI@YLGy^^>~&*2Daw*LY~oBtjM^If0}ZKtPk98D4uD876QglYk9O0xc(h;;n; ziB&|=TFsw+SiB)5k`TI3ZQ|8KmiIuaWWNwf6-vChUzpJ#5>|#QgjQW+)G#PHq*hfU zG&6fdv$8RkWEAJ}vBH{z3=vvZ$i|{1p|-H1_>w&*>5n>EIFSfuQv^}%y|AD=kP{ge z4R}0DU6^59mIx2ZV|BP2Q1&)}C)WHR;f!CZJe-`J0mvEM0Fe+T!M!#~~9R66rMl{C8n$ptPnSD8XVV|wzF#>SQrVbu>F-ImHIO~~ZPqJY`pIU|{ zqQSTo&1uA4Ib4`f%4x6A-9#d3H)zJ48}bfUX&l)Zsk>(c&6 z9{6s=+0siWW3s8GysnMLt=Mc@!`zg@j@QQK1K}m2d1+<7SXsNNC!N$euyi zNXM30Jq|#4pEkdPk>BQeM|IVLQQJi!EqDqZ`#d}H*YWAvy@r1);})RYAR&=)YCp9Gz+3@&K0ZXqGsJ*MW}SRsIHS2G5U_hkA?JKNFMK!-e#IMPu0tdz@@_2}Y+un0cdwpA_dUAHbY(fK#8<&D1|0 zy4a1{*wBS-hc28{F32C|XfGIgSGFo;t2}y;7 zGl!y4=^@368_!fX0r<)uv%F9wM{eRcfU#0RPIim3_MfnYXirXWCMUb@I=zbXK*zM~ zf+?*)Z&~_`L;d+s9`BjzAXQv4iZwk2zOGOqWfgdaWRS2aA-auDGHN~mV{BgjK6f3j zifY+FuI&RgF?4r4r;v_X7GzpJYiX5jY(Gl{70ShVIEm)NA#@zRIL6M%d@(EY{wS<|8?7<*A>qw8(O2lh_L?8pxhx+(crNQ;4P zqZUQ24>%`=Oj~9~L{7~O>3MOv$wy*;5vatce1r5?=y`uQGDzYm77=*`!fKA%u&>M1 z^CgWyeeS52w|xXOdV;bQ88vr|OX&R{p@1;~(3HP%HC=P*7mYs zs9blA8evq8TJNhiq~+Ync>H9hl*N=u+wtKY3F3U_)B-M7p)wAm;duEt8Vr~~S6K)O zAW-`bUiH~}c0|)7!_v(*TrYwtZ#XmnQ1g|8MC!o5jiRbb(E>)e#!2}&P!TW~*>eF0R6a=$%LY@#_)s`RMILr~6uRmNnz_g!$2^M!^M00`-L9q z*^$tQm2m*jHnIa?X4yuj6bmJKfDYmiBy2@a>H4(k`4C0u`z4GbtIa6S17FS>Qy^;n z{C-P|DG$cHon$sDvFZ((RRg$|4o>j~=@kXrxMXR#o^U3Ev{#4?Pa1HT-sK1Ge;wO! zl(OTBda`FmR&)X%Oe*ITxmad0r^=PSQw2{I>Mae}j54NlIq9ynP7&-SO9VG;<1O}X zG}}7RZ!vB5XxBs^Um+G1##~d}MJBeB(!dXc{bQh{`HsAasrsO*rnc!I1r|8i0NdxB z@Zqi3P87SmHy2c2}U5IBsA_-JhADG6cs*zv_t+U+11_oHuLJ+8}&4j^vj4fuFH3_G< z)NN3bR;ZPL7zCsWLHJdCRKtQWg^E6`Wx@fNHbrW-UR2*4^Il|7#S!He&Lf8o zL@OEen*A1l8u6>m84mXQl55VUh7R&vBK`&XxCx1x{=tjL7P`8?clGHXLjj8Yo^ zX)N~}b(#nEB|nsL^~GT+=c3hVkv*vQ=+NVJ z74Tku>DsF#CY6%HsUc*%_?d^~0rG|wr?c+FC-hCENya1Fg%WV9*TgG~re?|9P|S>D z_C{kyGONWI(<^{7IR8qJg=HNV;_c5UHW8Ml5>%OxTKBGRxP4LY}DpO;+U--kXU(Yqe+&+K$Ywsji%QhgELn4ApPu0&9|S#|g16qFGYeEsAW{ zCximu5^0fDR1cI0QCU)k{DiDX%vW`=WCR~3gTKYpI9;Fk1JmjG@tHa0+oGA!mkbIM zFN%kIrxrx7ibaP|#!;WElU$HggushJ49d3WwsRit8nb0A zI_H)NH_BL{WO{m5(f_1&*HF$R5p@X+MNlLSE8%Juf?}x&Z|6Gcl37z*-(F8l;<7AH zW!d)Y|A5Q|nL>Myg)kFm!D(Qs(wL*jb9b%-KQ)753w#6?nQl*~i|!^*dK&8FhPCsn z#Ja4u0GDAR$JU#;9xZ7#c904DHcS8@%yu}%Ir|Hkr``q%QL8`<>pU`a%e0B~Ukhi7 zx%+}m&q#|F((@BF5}Z}HK#*ROWQ)W`T*$6V0Hc;mH^#+T>dxT%=eF+_4IbV)82`Fb9ijqN7ePu+32>D z!41^PS=IZM>x6LdB9+?LHkQA`(}=*qxI;qdaC`H#3j2t4OfzRa{SX?;h^lVG8fQam zt+^p&>~`0fAdF^;Wm4caeds!&Nl*~(UsKw!;Y+8~$v>xx>pX%nNVZw3QXzSVDj#ez zaovS>s#zrpyF@K~$+c`gHo zN+>ZM;3MIVX=^9WtQ_GMI-#55JO-= zoda?1qa_2g!Uw$jGeENlrcdPWCnXRBIL^-_2VYyoQiGagG4XPUFpNN;ExCcj{m!vt z3nMe+!_CUL8I!L=1f+qS%<6Vclv!qM^%hEEUDFEPAVI;SyHP; z9aq$AF{f0FY#!#ukEyV`=4QxK(8taUTnU4{<9n7!=p_A%pY`dAb}tAvmbt9hD<}AW zUtONSn{3(3IzQG&KSql#Qx6qfq8`dSKf*3)wisNvQNfYgziqG`#uH+S1B)rTPGihz zg7HaHi_B*EmGfsLM!`n1@JOC5Y&Vb(+H69-Lqtzdg+!gjTdkZ;||Ec-oM5}2uI zk!RJ?BnxezHd<{7!dkI=~omH%5*a*i8n2W$f~Y}jMNc$Kr3;6svfJJ~m+`j|VLsJ+cT49lehrK|X%%TbgQJS65~`H#O9_t}M-TZmO$tT>gh_ z{odR_yfgyMSXaQI8bd=S_CjWl=Mqws;xq}Zrx8-m5J;R=Ks`VXW;{q^n9%Zq+pvhB zqCs)sd8D2u*#fg7ru8_%O5CSPv2Fz8hsC8W)xJ)648h~U-jHscnvXH*Q{0s_3T<;c|;p+Yu zCum>Lb)kK*0qxG+3$pX&(|T*t=F-~kC#+Wj@e=li5O(fs42|$&q>{*(b0b1*k0+oQ zMtW)ROp**o1pN#GTmf4^)S3)j?mcFClIBhiLnmIG9_Pbfkw zl2$Rlj8i&jyi;=UqjbtT!N?9d=Z8$UM?kj6b1ozl^MC^^L?#TH@_F38A~ zM1*X!Qw4)1(NWNa5Ot%SILark%FLn89U5*LsErOJ?F}65)^0H$ps~qTk3cvh&hSw6 z8g0!^wec~&rXj;tU7AIv)-t&rOp&-Q$Ud1>(rGPxMO-oo!hGp`NJ zyaqJ$f59t1RCAN3f37$|O*spz9Gd0d`ZdX{F*zm6n}<}h8rO(H+eT9&=){N9KW$o* z)?w-mx+ebh9(t%-WA*fm1yt2}T0mMBBn<^<5#->W_^XIVx=cnyX`oj{ll1hP>OusE zu&YWY)G-LhN?}r&HgIFCOjB&cyw0#3Y%v67X^jXhO!wKacr0E|B}q4@1ra9^#%hM1srDH=gD6z6Pylq@2P9N$%9g^OSW;PG1`A_D zQs&7{8Io);D!Z&L_sAg47QqDSH87zR*Uv!`p2fz6KO~l3bnjCU-Rx3-3umfk_u6$} zjNt6kBUywqQwO~?pXfuD9ho~c#u+XwUA3lbE7zTwI%-Wq5y~J*RD9lqeT2_0SFQZfreT?jLG*DHn|Mew_ z(Q_u5rXG!mfT7|1j+0Cr9dK&=HDHI^5aC=5bHc~+|3P-aCIgY09)Aco2K*{@Ct8yn z8bZ5cXP8d?1sDhYn7P?DFFNw2NHch0prMEM9oz*!^RkvfEB6*=)ACr1;ZSD84BQTv`SU*GaW#{l@ng!4)MBQm^b&>F+6be_VRi0J7ZL>~6@v`jj zW;u(;rf5(8|2wVT#w#D|l-Xmm2NN9*?v1xtxUDws+#fVN$NuH(4BWZjJ$o{jKexw! zwVHJ#Lj6Bv0xPqWb$!1|O#_jrvuM-9x5liCd&p6D!bac#*pqr=g0wUW{ zo8RlQ@hn4zbB1s(xEqP#Z{?s=l&at-=-?#x{C zh?GDP6cFopp7555&FTWxWI21;o{gjS4Fu(aC!9W`_;mX#!wU60+(tK{A;6TbOiTFBo z?rW}#Eji9MWI9_C{}*&TvLRyw){>wE;Ns{niWQSCI)9d|bHl{)F{+A6?r*05ok&IW z$k3^K>bBFzN>)ytdwU#rGeY-3$u7Jyk-=I(ntOqS$7|4>He+pN|0LBy?IugtBirhq<7kU=&&{L!VO`*b_-A+WC&iY z&WV$}MMR<`1NW;T-7O^Cif7^GAB-xY)+P|AKAu&+3FwcPsVb&Spw?fJh!{5BurI;HrX`1~3|83+CGV^wsA!1^=WZkUkUG+azkW={v|LF zH}OQK=WNQTzm*vw-7^k-X^&nS!Z$j>o~UJHQZZPWQfUw@+5oO71h`Cm6WAw!;y~jk zO{R=OyNvkW@DYzGV(FJsL~(}!bk1)Fzq!YV23S!?Vknw1RL+wWry^$zhN*oa!CfB# zK=#yc3Y2}WZ^M*PTD43`U8h+lm_!p2DKcFoSX_zxi4(1Eiic#8;{B^1tW>5>>}4}8 zSIDADKexC%-DEuKo%BBoiKm&Eb3Igr5n2oB;3Oe zg!Z$02eFE}8r-{Red=pe!^D4cy{o2rsn}JVcht^2aSLS_#99rk2n2kDPO>Sv`+s9E zrR{kr%I^V6GcheXA~<6&et337duL{{D@VhKGhx%s~UZI_<^NB2A8An}Aq`|xOS zm;*e_+NbA>JP5VuwNC3($kl}`fjl#kL z$|*(iy@Y=M@y0&}BRqO34!BL_@Yq{nFvmX}b?dP;-G416{v$q;<_yIz~M9WnfC3 z%V2@d(;yjtOYq9iPZ|P^Z$oQGEjJ@O1&|tOsWvNH23Xo-tids8-mb&-E`Ah9eu3Za za78s7cGV2kf6>4wtv^9l8zLe}Qer%mzVHfba)9#DI+qe3)d&)rms;@ueDG+-E0-}+ z0)cF#$szuxc-Wd2X3U9~2^`#}L*V9rnBpXTKKW3A+!$WbP>^z1D+mU=l9&SEr=a`d zbMah2eB7NGdkl0Z>qO;7(op)ogffZtc0 z-E4%qg+Fs|X$*y0es(+xm8I^iUVsZEvszVSMBL*CP_U-MYMe%&HZWVAB&9}0ts@@q z0*zlonWPga&SS)!qY*d}V0F$=$rKAs^JtO$r}{zo5@u!cJU~5Jc zKLN^pYET6gS{nK&S~V5-|5Oy}5js*lsG91^_QB=GjVc(*Poz8I8=UlZaZpi2;uqn*pkJ1k97jIfF#xd z_#j$V)ICvLyNCc*lnhhZ1OUu@k+jjxLy3>pS)cdYu;+UnR*Ie;rl8vOa{zEfkL_gK ztxy2Nc9H2;bgvv7g=g{d4Hj5Tj)1--LSlCg(f}oWH3KO0pazUM7L=Du7He@zl?OZb zK*0bIQF#3bZ^CA3p@{S=&%vIf)_hVT_;kVaUf;SnbY|JFMgG z#G0YYH>r(LtaXLW46uxeHG<&l^6x+=y+$R2J)#Qx>tM7yyY5BAF+h8eheo5)84$3= z@R)X!7DWQpqAJKhU>H2c#*WA-tR<>rVBr*TjC4$fC@vVPb>Qx(-Sh($VAkZw@_@o} z6MR@qaMwlImbWJb#Hs-$oGU`u#?4XplU zBt>WiFP|k&Nb%C`SS0=IX2ST9ERcL$Y7I%nGJs3~JOW zi8|;BwVV6kg{dB(Bn<9~dWaF$n{HSH#6W_;lqe|5Yz$)vn1o>SvUqaa zuemZ&EE;%ZO>qT6!GaKDB+TmNF_t90-$*^694tKMe(coW%9j0?uP|rqJ(3JAWF$X zEWKty$DyCQeUG^&(o@)SW7_QvxaQzUb-0)3L+rCeriM<0xK-gsY5^d}Rp+N@+PIq`;R0V$tVn3F(?eWHwvljP3NQ#!C3^FNw7!&3h^IRw|(raVAKN zXb$qlr5BD^mXp}vJJC-EqM!Bz-)(U|+v2<#$GTOrDX3yhBTnweB-H9`&>hKo8#5ee zQn3KyYaPhe6s4z#^>OJ*0st&Mqzpj_KJ%MqYGb^2h{AfG-9~WSYV}j|sy*tDJ_flN z8rDw0E;b(b*>BKMcSD@0_^XrC^6QjP!2Xa8_-^kVw@7YAD^XQUq8QNn+<2pRFj1z< zTvDWEP#2iiu~>iP_4e(gV~7%-4xnr*n@CN@&?&X1ijS^6grS2O?QMiv0*;&;;S^^L zvNcYZkC?9Pr-~xB2Fqu;XKM|KWvsRVIVd{^nTK|3oS%!X+i9M_ew%hTHLaI=gTu7gG)|578S{3TX1}00nR_0-}$y`a;8M#+VQ7~u`~;5|3xc!+ToDust0eI}mCxEQW1q72je_jHQG92<0cd&UDG z(Pw`O2$aW&L(-#RfLclVr0jpP_7SRicu^b2)ELT-cgl64lh~A@xG9l(@zTHmto&2y9svagsbt5U((9v1?)yJV{MllKBCfk}uV)O7Umibz8=lKHcr;T5ZFcVW1oj~gA3(_>D?YE4i|F!S4ebjQh`8V5-|f6 z3)CT9{*ulQ!d2>l0W1SeCVPr+DIMk*r%_ggoBw2#b)Evgr@^(;2-ix=>2xA5kyG2T z?y8@Ln)w`TWLU}ON}%$nud2wbehC0@sD-1i0qG-bn0>xL)Y=x2A{4!h@zCbxI>j1G zvJ?*4bB{cVV#O&J;beoKeTatgKMp*FbBzG6rr#k~y=Z#qPf5$6A{#PVaF+?ezEdm@ z${x5Ia$qQ?&d@~e6j$kKc)TJlL9fCqMeKzaN{oZ<5K~qzN3oen2v+GGB^%tu+>nhR zK|NpRGgwX&7I^*x{ zB6iN_RxAnwOCT(?T3_aB^(&xIstp0JEN~@J{YzAv)Ui}h?SLC25HlbWC;}i? zdKUxZUIqV8*Jk|{1-rFj28OPoTN>$x0YoGv2k97c5Jp0fZlnbUL1u^nq+_Hd6zP)A z0i>n76p&QJ<9p6o>s#Mh>-phc&tI_jzV1s*J?f11rxo+ev{`cwET&KZUlU^_wi2#Q zA@3*w$uR0YHalR-QKQ#1T@lcKPem<8Cm(VH9DHj^{&!}@a9=#)&l8@#R={C$DcVkN z4?o5~WJ6m#k@D@Mo^(XxX7PMUOk*pD#=A(Z6e+8%1-tRfwX1j#!>>b$7A}yLBqvft z$9Qea;vO;w>K#l`;!`c3;u6{JUoSqjsCQu!pzo^F6~VdLHvx1;i_ZptjaP=9fc8|| zY`7{jVF1R=Hbc1v;&la)lv~)$9X&`xYinPLx^MiTg zv^~kccy(?3ESjN4_Iq5(m~p?A%FD_@!kkxGrS5{zfTQ?CUB8A!_h8hl#E4k8E-$Guz53TZUeYH&9fkFGow>13*|VR1`F z$jW^3bXd0TBfvQub$&*jiiTe)xG>4x<`9rwmBmoh^PJ&ZKE$PnoATE`?tp$J!!-HAz1)oRsM}wTW%Tu^DQ?gXz0=Ydeog7LeWuQY z3@;-Mi^*N$q@&a#DqZuT-6c7nwa<9ptCHuJkAh1xW5$<;#-fc?zI<5H04#rNwoBkCW4D+!)uzx94OO2A8KP%3 z1^z;wA@dh_buRZT7@g3W*Yl1@8ko!OvLOZ9&m&vx2!bHy1}|0v^3S*Noih%qI8&@ zEmE$)to@f^a83X1g{(-Cd3^f7dM!>)va$!)?ec^% z;&rx!W+M=zDvOcJP<73yGGH9b-PfxR%LuN2LQm~3d^Y528${Os!J=dUkgJ2_8cgim zuVYgHq=uU{+{g(S2v@Re%qWki%uq@DR@X8l`|zz|nH3k9kEj}}9M8M8>a~i841}5R zEBmHt+OA_y9SnChq3jGrWxB+=q@Q_!r&?#V6S;;TUEZTf)_@!zbBI@c&sRokR z?C1wcq%cxI1eu6eMzhlgjo#sIlx-2b=Aj+C{G|uF9sO`|tv>9;ma%#jUP%W}L%S6L z_m=NDq)=!dDo|RQD+gHBY6V2#L4D15K7Q4^>78wqpVyfWWnx)}S2j)bjW?FH0Ic2m zQ&*WQZWdePfjpfYz9FU+zo1qpek(c9W5w9R*j=&g%2}-D>>J#aYm3?uMJq0P30;GR zr7z$~c|{c1Pdxu6({05Q2diy{z6v1Tdiibf$%EL6#jl^wmfo<3UG=EeA&q(sC1$+q zwsm~+{!2j59PRDLH~zqXOqbIEdh=czsLC1@{DTLIeQ#woVb1Qz|4 zlo+zPvC{OvQ8&EF>(npuW4Qn7vWNwjM6#ppM-)9aBrQK=ky3R*l3d0pXCn_?3M;mf zN9AVaWC_dE84wuJjbyZvCEc&;t)fjRd`fck>2h2zCNQ8ffpat>)}kQf)+x4iV1xoT zP4`Z3Ce=Irg}Bcnd9zM1x!VZu8Kvu zwoyHtXzra(mhkZDfmQSXq|R{L5FTe}Dhx?m@EUDC{l0vRxxT&%`UbGX#JO7$)9D%I zvB{#=qqO0PQ%~MkmKVG>Gp@I!Z5iU~G*LIG>z>^i@QIsvF{TtZrMQ@RrnUF~h zOI#1xaB&4A1h;OKaA9%q-Ea4TFak~d9qENW?zhR~Z|o9jbT}h7`@C?oHXBHay_E_< z!<)@OAy%S;@IDP^kBmNs&6AjHZ1anh^sP@M!BcXKyvE>|EiB_ zrD+#%#&#u!q)(w1zd_2al%@+O%Wo+=u(A3~DN|;R=gMrzCse9S45&!y7os)8f$>?E zUmg&}vflrS2L0zX?x8`lH&TRQS5+#LZy3||7NQW(7xvDkDc_#lMEo%Q`5<^fs)*YO6Ny#A{lxbHpDDJwZxE;)E@-J<_|m?RAgDyy zu}!iECZn3Jav(HkFeYQ-Lq21zCiA~>3732(Mf}LVsGr?1kVVQihz&1h<)eW6L)(KBmsNlJs3I2)o;&)DJk};g=?v zV-t3P&C&i=#4WpHNu*vyW?qTKi7QfSGGGM89vp}CyImX6jFJ(Ti1mmhFs^lagD~m| zd@|k(6&+|hH*_Jtk7Q)!Om^9ipd)(d?l4n+;B;(3b?soZ;T1N zQ)sZfVed2f_I$Pn{wNFJUIgV1wzFsonE1?&w6Npr=45*WI9CkOzbYzhGKstIDhxb~ zWzH+nOnP2xP9dPq6lGW)v*x|s*hn)BYVBGXWsR$NOz-+QyXhZkVa@%wX?2^HvXS(M z_yP|%syLYdwEEI!W~_7zlyb+b34M~OI;MCaMD(UeqOa%X@<=9>Ywo3fvG81+=w0)D zdrBc%xLX=@ImqvL5ZIt^2gcB$psf1zjk%}7t&UZNYz*;VQ5 zd5+?%W8^D}T_z->9_kkvWvnGa<;UkCjFC@bhUZNv0E61Z1l`TvSdxoN==|H&x1BLA zd{}wTLlLT_3-PnUAMmbHp{ximQ}>RkBSlBe#~#xvSUhz!!q#V;2LNYY96;^m7g!F8 zI@1_Iufcwk`Uuj~O16=zlWHD}lw4KhRCf^}r7D5fqeu#XzwIHhp5d-e-EqMN&SQxA z7lwM?MmBZ6P95q6c$7nFBID6A>>8tyDSAQmt#Fwyv_!1C?QbO;P8THmN7JEUmNU1V zc|S)+yHaq|I{!nvj(0Vy;OwK%yO_~H9vUl{nOZx=%Uuag#^q3UO%vnByRs3j*2!R- z`$ShpQ|)QKV!X?`+W!}aUit|TqwfUZinA0Mr)iV}*tQeEPhYvS>0_1I|=F6bG5< z>*vwCB&A%9z^hVKVp4t>3rS7uMWHg$52AI{=z^UfWVu1na}E;c{pqC1CIF8zWmRx% z<|k{m{iGd(XuA9#sroZp7ghvv#!>v!2nJG1b)GnX*)4 z9Y^f@xONOVjnwFVCS_hdZbQ9b{D+pdU2fTQHT_o*JN~6KBfU`HXeY!^`%7I==l*6Y zKEI(vwr5l@|GKnnvgE&^>EjfLHiB6{)C7AZ`}V<*5ap%UBm8#$f|GY%zVFuCU7n9i z$A}eHD0zG-Qf!xnVPcPZ&NUo-;bsMEo9c~M@IEP0g%B+BjVIo@Q~+FlP&E977W-3- zSev()+>R@uXP)jqmF@_!$R8AFn{vmZnI!{fDU?vKW0?B9Bw4bU-t0ud9zJx~UEa#( zk>JSZ*7X!MQlE!-G>?l$hR>4Hi1U(O>de4{3dbW4w=yNFMx8?lmE*r!_cP!Oufe`` zC}1h=*!Eb^;a&*ZzfQzksXil;CAe{2nk(CG)~|!eUk56u@9%9f%_vP=0ZGC~pd{>X zg0+wj(w=x&1^)E3bsFY8bo((>O7zrj7gRGNpQ)JWk;^UGiWLShzfU7ANlx+_rdnRM z^=Bva63f@Re3I^8d19Wr9;gN;)8l-`*U1ktXrgOV$!AJh7gQ|)$Q8-R5KPp7_D oT%SyLlJC^28|$9PeTdFaJs|oVP*Cr?`Umd?qo1@{CN9pu0EqYP0{{R3 literal 20734 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