diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 0f740d0c43c09..0000000000000 --- a/.travis.yml +++ /dev/null @@ -1,28 +0,0 @@ -language: node_js - -node_js: - - 'node' - - '12' - - '10' - -env: - - workerCount=3 timeout=600000 - -matrix: - fast_finish: true - -branches: - only: - - master - - /^release-.*/ - -install: - - npm uninstall typescript --no-save - - npm ci - -cache: - directories: - - node_modules - -git: - depth: 1 diff --git a/Gulpfile.js b/Gulpfile.js index 729b49b8f4ff6..afd4b24e8f3bb 100644 --- a/Gulpfile.js +++ b/Gulpfile.js @@ -5,7 +5,6 @@ const log = require("fancy-log"); const newer = require("gulp-newer"); const sourcemaps = require("gulp-sourcemaps"); const del = require("del"); -const fold = require("travis-fold"); const rename = require("gulp-rename"); const concat = require("gulp-concat"); const merge2 = require("merge2"); @@ -346,9 +345,6 @@ const runEslintRulesTests = () => runConsoleTests("scripts/eslint/built/tests", task("run-eslint-rules-tests", series(buildEslintRules, runEslintRulesTests)); task("run-eslint-rules-tests").description = "Runs the eslint rule tests"; -const lintFoldStart = async () => { if (fold.isTravis()) console.log(fold.start("lint")); }; -const lintFoldEnd = async () => { if (fold.isTravis()) console.log(fold.end("lint")); }; - /** @type { (folder: string) => { (): Promise; displayName?: string } } */ const eslint = (folder) => async () => { @@ -374,20 +370,20 @@ const eslint = (folder) => async () => { const lintScripts = eslint("scripts"); lintScripts.displayName = "lint-scripts"; -task("lint-scripts", series([buildEslintRules, lintFoldStart, lintScripts, lintFoldEnd])); +task("lint-scripts", series([buildEslintRules, lintScripts])); task("lint-scripts").description = "Runs eslint on the scripts sources."; const lintCompiler = eslint("src"); lintCompiler.displayName = "lint-compiler"; -task("lint-compiler", series([buildEslintRules, lintFoldStart, lintCompiler, lintFoldEnd])); +task("lint-compiler", series([buildEslintRules, lintCompiler])); task("lint-compiler").description = "Runs eslint on the compiler sources."; task("lint-compiler").flags = { " --ci": "Runs eslint additional rules", }; -const lint = series([buildEslintRules, lintFoldStart, lintScripts, lintCompiler, lintFoldEnd]); +const lint = series([buildEslintRules, lintScripts, lintCompiler]); lint.displayName = "lint"; -task("lint", series([buildEslintRules, lintFoldStart, lint, lintFoldEnd])); +task("lint", series([buildEslintRules, lint])); task("lint").description = "Runs eslint on the compiler and scripts sources."; task("lint").flags = { " --ci": "Runs eslint additional rules", @@ -429,9 +425,7 @@ const buildOtherOutputs = parallel(buildCancellationToken, buildTypingsInstaller task("other-outputs", series(preBuild, buildOtherOutputs)); task("other-outputs").description = "Builds miscelaneous scripts and documents distributed with the LKG"; -const buildFoldStart = async () => { if (fold.isTravis()) console.log(fold.start("build")); }; -const buildFoldEnd = async () => { if (fold.isTravis()) console.log(fold.end("build")); }; -task("local", series(buildFoldStart, preBuild, parallel(localize, buildTsc, buildServer, buildServices, buildLssl, buildOtherOutputs), buildFoldEnd)); +task("local", series(preBuild, parallel(localize, buildTsc, buildServer, buildServices, buildLssl, buildOtherOutputs))); task("local").description = "Builds the full compiler and services"; task("local").flags = { " --built": "Compile using the built version of the compiler." diff --git a/README.md b/README.md index 8bb85ada6bb97..2fcf721123428 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # TypeScript -[![Build Status](https://travis-ci.org/microsoft/TypeScript.svg?branch=master)](https://travis-ci.org/microsoft/TypeScript) +[![GitHub Actions CI](https://github.com/microsoft/TypeScript/workflows/CI/badge.svg)](https://github.com/microsoft/TypeScript/actions?query=workflow%3ACI) [![Devops Build Status](https://dev.azure.com/typescript/TypeScript/_apis/build/status/Typescript/node10)](https://dev.azure.com/typescript/TypeScript/_build?definitionId=7) [![npm version](https://badge.fury.io/js/typescript.svg)](https://www.npmjs.com/package/typescript) [![Downloads](https://img.shields.io/npm/dm/typescript.svg)](https://www.npmjs.com/package/typescript) diff --git a/lib/tsserver.js b/lib/tsserver.js index 3b211c234e171..2b79c7e22f1fb 100644 --- a/lib/tsserver.js +++ b/lib/tsserver.js @@ -106281,7 +106281,7 @@ var ts; var oldSourceFile = oldSourceFiles_1[_i]; var newFile = getSourceFileByPath(oldSourceFile.resolvedPath); if (shouldCreateNewSourceFile || !newFile || - // old file wasnt redirect but new file is + // old file wasn't redirect but new file is (oldSourceFile.resolvedPath === oldSourceFile.path && newFile.resolvedPath !== oldSourceFile.path)) { host.onReleaseOldSourceFile(oldSourceFile, oldProgram.getCompilerOptions(), !!getSourceFileByPath(oldSourceFile.path)); } @@ -109397,7 +109397,7 @@ var ts; var newReferences; // if not using old state, every file is changed if (!useOldState || - // File wasnt present in old state + // File wasn't present in old state !(oldInfo = oldState.fileInfos.get(sourceFilePath)) || // versions dont match oldInfo.version !== info.version || @@ -110549,7 +110549,7 @@ var ts; var resolvedModules = []; var compilerOptions = resolutionHost.getCompilationSettings(); var hasInvalidatedNonRelativeUnresolvedImport = logChanges && isFileWithInvalidatedNonRelativeUnresolvedImports(path); - // All the resolutions in this file are invalidated if this file wasnt resolved using same redirect + // All the resolutions in this file are invalidated if this file wasn't resolved using same redirect var program = resolutionHost.getCurrentProgram(); var oldRedirect = program && program.getResolvedProjectReferenceToRedirect(containingFile); var unmatchedRedirects = oldRedirect ? diff --git a/lib/tsserverlibrary.js b/lib/tsserverlibrary.js index a246e768beb81..d565585d0ab2b 100644 --- a/lib/tsserverlibrary.js +++ b/lib/tsserverlibrary.js @@ -106475,7 +106475,7 @@ var ts; var oldSourceFile = oldSourceFiles_1[_i]; var newFile = getSourceFileByPath(oldSourceFile.resolvedPath); if (shouldCreateNewSourceFile || !newFile || - // old file wasnt redirect but new file is + // old file wasn't redirect but new file is (oldSourceFile.resolvedPath === oldSourceFile.path && newFile.resolvedPath !== oldSourceFile.path)) { host.onReleaseOldSourceFile(oldSourceFile, oldProgram.getCompilerOptions(), !!getSourceFileByPath(oldSourceFile.path)); } @@ -109591,7 +109591,7 @@ var ts; var newReferences; // if not using old state, every file is changed if (!useOldState || - // File wasnt present in old state + // File wasn't present in old state !(oldInfo = oldState.fileInfos.get(sourceFilePath)) || // versions dont match oldInfo.version !== info.version || @@ -110743,7 +110743,7 @@ var ts; var resolvedModules = []; var compilerOptions = resolutionHost.getCompilationSettings(); var hasInvalidatedNonRelativeUnresolvedImport = logChanges && isFileWithInvalidatedNonRelativeUnresolvedImports(path); - // All the resolutions in this file are invalidated if this file wasnt resolved using same redirect + // All the resolutions in this file are invalidated if this file wasn't resolved using same redirect var program = resolutionHost.getCurrentProgram(); var oldRedirect = program && program.getResolvedProjectReferenceToRedirect(containingFile); var unmatchedRedirects = oldRedirect ? diff --git a/lib/typescript.js b/lib/typescript.js index 0a5a0f98891bd..f2d035ad3f94c 100644 --- a/lib/typescript.js +++ b/lib/typescript.js @@ -106475,7 +106475,7 @@ var ts; var oldSourceFile = oldSourceFiles_1[_i]; var newFile = getSourceFileByPath(oldSourceFile.resolvedPath); if (shouldCreateNewSourceFile || !newFile || - // old file wasnt redirect but new file is + // old file wasn't redirect but new file is (oldSourceFile.resolvedPath === oldSourceFile.path && newFile.resolvedPath !== oldSourceFile.path)) { host.onReleaseOldSourceFile(oldSourceFile, oldProgram.getCompilerOptions(), !!getSourceFileByPath(oldSourceFile.path)); } @@ -109591,7 +109591,7 @@ var ts; var newReferences; // if not using old state, every file is changed if (!useOldState || - // File wasnt present in old state + // File wasn't present in old state !(oldInfo = oldState.fileInfos.get(sourceFilePath)) || // versions dont match oldInfo.version !== info.version || @@ -110743,7 +110743,7 @@ var ts; var resolvedModules = []; var compilerOptions = resolutionHost.getCompilationSettings(); var hasInvalidatedNonRelativeUnresolvedImport = logChanges && isFileWithInvalidatedNonRelativeUnresolvedImports(path); - // All the resolutions in this file are invalidated if this file wasnt resolved using same redirect + // All the resolutions in this file are invalidated if this file wasn't resolved using same redirect var program = resolutionHost.getCurrentProgram(); var oldRedirect = program && program.getResolvedProjectReferenceToRedirect(containingFile); var unmatchedRedirects = oldRedirect ? diff --git a/lib/typescriptServices.js b/lib/typescriptServices.js index fc4d54bf6727c..d9e640b5bf532 100644 --- a/lib/typescriptServices.js +++ b/lib/typescriptServices.js @@ -106475,7 +106475,7 @@ var ts; var oldSourceFile = oldSourceFiles_1[_i]; var newFile = getSourceFileByPath(oldSourceFile.resolvedPath); if (shouldCreateNewSourceFile || !newFile || - // old file wasnt redirect but new file is + // old file wasn't redirect but new file is (oldSourceFile.resolvedPath === oldSourceFile.path && newFile.resolvedPath !== oldSourceFile.path)) { host.onReleaseOldSourceFile(oldSourceFile, oldProgram.getCompilerOptions(), !!getSourceFileByPath(oldSourceFile.path)); } @@ -109591,7 +109591,7 @@ var ts; var newReferences; // if not using old state, every file is changed if (!useOldState || - // File wasnt present in old state + // File wasn't present in old state !(oldInfo = oldState.fileInfos.get(sourceFilePath)) || // versions dont match oldInfo.version !== info.version || @@ -110743,7 +110743,7 @@ var ts; var resolvedModules = []; var compilerOptions = resolutionHost.getCompilationSettings(); var hasInvalidatedNonRelativeUnresolvedImport = logChanges && isFileWithInvalidatedNonRelativeUnresolvedImports(path); - // All the resolutions in this file are invalidated if this file wasnt resolved using same redirect + // All the resolutions in this file are invalidated if this file wasn't resolved using same redirect var program = resolutionHost.getCurrentProgram(); var oldRedirect = program && program.getResolvedProjectReferenceToRedirect(containingFile); var unmatchedRedirects = oldRedirect ? diff --git a/lib/typingsInstaller.js b/lib/typingsInstaller.js index 7120c0ecd819d..f5ac11e6b45f9 100644 --- a/lib/typingsInstaller.js +++ b/lib/typingsInstaller.js @@ -106270,7 +106270,7 @@ var ts; var oldSourceFile = oldSourceFiles_1[_i]; var newFile = getSourceFileByPath(oldSourceFile.resolvedPath); if (shouldCreateNewSourceFile || !newFile || - // old file wasnt redirect but new file is + // old file wasn't redirect but new file is (oldSourceFile.resolvedPath === oldSourceFile.path && newFile.resolvedPath !== oldSourceFile.path)) { host.onReleaseOldSourceFile(oldSourceFile, oldProgram.getCompilerOptions(), !!getSourceFileByPath(oldSourceFile.path)); } @@ -109386,7 +109386,7 @@ var ts; var newReferences; // if not using old state, every file is changed if (!useOldState || - // File wasnt present in old state + // File wasn't present in old state !(oldInfo = oldState.fileInfos.get(sourceFilePath)) || // versions dont match oldInfo.version !== info.version || @@ -110538,7 +110538,7 @@ var ts; var resolvedModules = []; var compilerOptions = resolutionHost.getCompilationSettings(); var hasInvalidatedNonRelativeUnresolvedImport = logChanges && isFileWithInvalidatedNonRelativeUnresolvedImports(path); - // All the resolutions in this file are invalidated if this file wasnt resolved using same redirect + // All the resolutions in this file are invalidated if this file wasn't resolved using same redirect var program = resolutionHost.getCurrentProgram(); var oldRedirect = program && program.getResolvedProjectReferenceToRedirect(containingFile); var unmatchedRedirects = oldRedirect ? diff --git a/package-lock.json b/package-lock.json index 7813e79bd79f4..32c759fbc4463 100644 --- a/package-lock.json +++ b/package-lock.json @@ -279,18 +279,18 @@ } }, "@octokit/auth-token": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.4.tgz", - "integrity": "sha512-LNfGu3Ro9uFAYh10MUZVaT7X2CnNm2C8IDQmabx+3DygYIQjs9FwzFAHN/0t6mu5HEPhxcb1XOuxdpY82vCg2Q==", + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.5.tgz", + "integrity": "sha512-BpGYsPgJt05M7/L/5FoE1PiAbdxXFZkX/3kDYcsvd1v6UhlnE5e96dTDr0ezX/EFwciQxf3cNV0loipsURU+WA==", "dev": true, "requires": { - "@octokit/types": "^6.0.0" + "@octokit/types": "^6.0.3" } }, "@octokit/core": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.2.4.tgz", - "integrity": "sha512-d9dTsqdePBqOn7aGkyRFe7pQpCXdibSJ5SFnrTr0axevObZrpz3qkWm7t/NjYv5a66z6vhfteriaq4FRz3e0Qg==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.2.5.tgz", + "integrity": "sha512-+DCtPykGnvXKWWQI0E1XD+CCeWSBhB6kwItXqfFmNBlIlhczuDPbg+P6BtLnVBaRJDAjv+1mrUJuRsFSjktopg==", "dev": true, "requires": { "@octokit/auth-token": "^2.4.4", @@ -302,67 +302,67 @@ } }, "@octokit/endpoint": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.10.tgz", - "integrity": "sha512-9+Xef8nT7OKZglfkOMm7IL6VwxXUQyR7DUSU0LH/F7VNqs8vyd7es5pTfz9E7DwUIx7R3pGscxu1EBhYljyu7Q==", + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.11.tgz", + "integrity": "sha512-fUIPpx+pZyoLW4GCs3yMnlj2LfoXTWDUVPTC4V3MUEKZm48W+XYpeWSZCv+vYF1ZABUm2CqnDVf1sFtIYrj7KQ==", "dev": true, "requires": { - "@octokit/types": "^6.0.0", + "@octokit/types": "^6.0.3", "is-plain-object": "^5.0.0", "universal-user-agent": "^6.0.0" } }, "@octokit/graphql": { - "version": "4.5.8", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.5.8.tgz", - "integrity": "sha512-WnCtNXWOrupfPJgXe+vSmprZJUr0VIu14G58PMlkWGj3cH+KLZEfKMmbUQ6C3Wwx6fdhzVW1CD5RTnBdUHxhhA==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.6.0.tgz", + "integrity": "sha512-CJ6n7izLFXLvPZaWzCQDjU/RP+vHiZmWdOunaCS87v+2jxMsW9FB5ktfIxybRBxZjxuJGRnxk7xJecWTVxFUYQ==", "dev": true, "requires": { "@octokit/request": "^5.3.0", - "@octokit/types": "^6.0.0", + "@octokit/types": "^6.0.3", "universal-user-agent": "^6.0.0" } }, "@octokit/openapi-types": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-2.2.0.tgz", - "integrity": "sha512-274lNUDonw10kT8wHg8fCcUc1ZjZHbWv0/TbAwb0ojhBQqZYc1cQ/4yqTVTtPMDeZ//g7xVEYe/s3vURkRghPg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-4.0.1.tgz", + "integrity": "sha512-k2hRcfcLRyPJjtYfJLzg404n7HZ6sUpAWAR/uNI8tf96NgatWOpw1ocdF+WFfx/trO1ivBh7ckynO1rn+xAw/Q==", "dev": true }, "@octokit/plugin-paginate-rest": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.7.0.tgz", - "integrity": "sha512-+zARyncLjt9b0FjqPAbJo4ss7HOlBi1nprq+cPlw5vu2+qjy7WvlXhtXFdRHQbSL1Pt+bfAKaLADEkkvg8sP8w==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.9.1.tgz", + "integrity": "sha512-8wnuWGjwDIEobbBet2xAjZwgiMVTgIer5wBsnGXzV3lJ4yqphLU2FEMpkhSrDx7y+WkZDfZ+V+1cFMZ1mAaFag==", "dev": true, "requires": { - "@octokit/types": "^6.0.1" + "@octokit/types": "^6.8.0" } }, "@octokit/plugin-request-log": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.2.tgz", - "integrity": "sha512-oTJSNAmBqyDR41uSMunLQKMX0jmEXbwD1fpz8FG27lScV3RhtGfBa1/BBLym+PxcC16IBlF7KH9vP1BUYxA+Eg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.3.tgz", + "integrity": "sha512-4RFU4li238jMJAzLgAwkBAw+4Loile5haQMQr+uhFq27BmyJXcXSKvoQKqh0agsZEiUlW6iSv3FAgvmGkur7OQ==", "dev": true }, "@octokit/plugin-rest-endpoint-methods": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-4.4.1.tgz", - "integrity": "sha512-+v5PcvrUcDeFXf8hv1gnNvNLdm4C0+2EiuWt9EatjjUmfriM1pTMM+r4j1lLHxeBQ9bVDmbywb11e3KjuavieA==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-4.10.1.tgz", + "integrity": "sha512-YGMiEidTORzgUmYZu0eH4q2k8kgQSHQMuBOBYiKxUYs/nXea4q/Ze6tDzjcRAPmHNJYXrENs1bEMlcdGKT+8ug==", "dev": true, "requires": { - "@octokit/types": "^6.1.0", + "@octokit/types": "^6.8.2", "deprecation": "^2.3.1" } }, "@octokit/request": { - "version": "5.4.12", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.4.12.tgz", - "integrity": "sha512-MvWYdxengUWTGFpfpefBBpVmmEYfkwMoxonIB3sUGp5rhdgwjXL1ejo6JbgzG/QD9B/NYt/9cJX1pxXeSIUCkg==", + "version": "5.4.14", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.4.14.tgz", + "integrity": "sha512-VkmtacOIQp9daSnBmDI92xNIeLuSRDOIuplp/CJomkvzt7M18NXgG044Cx/LFKLgjKt9T2tZR6AtJayba9GTSA==", "dev": true, "requires": { "@octokit/endpoint": "^6.0.1", "@octokit/request-error": "^2.0.0", - "@octokit/types": "^6.0.3", + "@octokit/types": "^6.7.1", "deprecation": "^2.0.0", "is-plain-object": "^5.0.0", "node-fetch": "^2.6.1", @@ -379,35 +379,35 @@ } }, "@octokit/request-error": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.0.4.tgz", - "integrity": "sha512-LjkSiTbsxIErBiRh5wSZvpZqT4t0/c9+4dOe0PII+6jXR+oj/h66s7E4a/MghV7iT8W9ffoQ5Skoxzs96+gBPA==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.0.5.tgz", + "integrity": "sha512-T/2wcCFyM7SkXzNoyVNWjyVlUwBvW3igM3Btr/eKYiPmucXTtkxt2RBsf6gn3LTzaLSLTQtNmvg+dGsOxQrjZg==", "dev": true, "requires": { - "@octokit/types": "^6.0.0", + "@octokit/types": "^6.0.3", "deprecation": "^2.0.0", "once": "^1.4.0" } }, "@octokit/rest": { - "version": "18.0.12", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.0.12.tgz", - "integrity": "sha512-hNRCZfKPpeaIjOVuNJzkEL6zacfZlBPV8vw8ReNeyUkVvbuCvvrrx8K8Gw2eyHHsmd4dPlAxIXIZ9oHhJfkJpw==", + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.1.0.tgz", + "integrity": "sha512-YQfpTzWV3jdzDPyXQVO54f5I2t1zxk/S53Vbe+Aa5vQj6MdTx6sNEWzmUzUO8lSVowbGOnjcQHzW1A8ATr+/7g==", "dev": true, "requires": { "@octokit/core": "^3.2.3", "@octokit/plugin-paginate-rest": "^2.6.2", "@octokit/plugin-request-log": "^1.0.2", - "@octokit/plugin-rest-endpoint-methods": "4.4.1" + "@octokit/plugin-rest-endpoint-methods": "4.10.1" } }, "@octokit/types": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.2.1.tgz", - "integrity": "sha512-jHs9OECOiZxuEzxMZcXmqrEO8GYraHF+UzNVH2ACYh8e/Y7YoT+hUf9ldvVd6zIvWv4p3NdxbQ0xx3ku5BnSiA==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.8.2.tgz", + "integrity": "sha512-RpG0NJd7OKSkWptiFhy1xCLkThs5YoDIKM21lEtDmUvSpbaIEfrxzckWLUGDFfF8RydSyngo44gDv8m2hHruUg==", "dev": true, "requires": { - "@octokit/openapi-types": "^2.2.0", + "@octokit/openapi-types": "^4.0.0", "@types/node": ">= 8" } }, @@ -585,9 +585,9 @@ "dev": true }, "@types/node": { - "version": "14.14.20", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.20.tgz", - "integrity": "sha512-Y93R97Ouif9JEOWPIUyU+eyIdyRqQR0I8Ez1dzku4hDx34NWh4HbtIc3WNzwB1Y9ULvNGeu5B8h8bVL5cAk4/A==", + "version": "14.14.25", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.25.tgz", + "integrity": "sha512-EPpXLOVqDvisVxtlbvzfyqSsFeQxltFbluZNRndIb8tr9KiBnYNLzrc1N3pyKUCww2RNrfHDViqDWWE1LCJQtQ==", "dev": true }, "@types/node-fetch": { @@ -632,12 +632,6 @@ "@types/node": "*" } }, - "@types/travis-fold": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@types/travis-fold/-/travis-fold-0.1.0.tgz", - "integrity": "sha512-qrXB0Div8vIzA8P809JRlh9lD4mSOYwRBJbU1zcj0BWhULP15Zx0oQyJtjaOnkNR5RZcYQDbgimj40M1GDmhcQ==", - "dev": true - }, "@types/undertaker": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/@types/undertaker/-/undertaker-1.2.3.tgz", @@ -1382,9 +1376,9 @@ "dev": true }, "before-after-hook": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.1.0.tgz", - "integrity": "sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.1.1.tgz", + "integrity": "sha512-5ekuQOvO04MDj7kYZJaMab2S8SPjGJbotVNyv7QYFCOAwrGZs/YnoDNlh1U+m5hl7H2D/+n0taaAV/tfyd3KMA==", "dev": true }, "binary-extensions": { @@ -1743,9 +1737,9 @@ "dev": true }, "call-bind": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.1.tgz", - "integrity": "sha512-tvAvUwNcRikl3RVF20X9lsYmmepsovzTWeJiXjO0PkJp15uy/6xKFZOQtuiSULwYW+6ToZBprphCgWXC2dSgcQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "dev": true, "requires": { "function-bind": "^1.1.1", @@ -1765,9 +1759,9 @@ "dev": true }, "chai": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", - "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.0.tgz", + "integrity": "sha512-/BFd2J30EcOwmdOgXvVsmM48l0Br0nmZPlO0uOW4XKh6kpsUumRXBgPV+IlaqFaqr9cYbeoZAM1Npx0i4A+aiA==", "dev": true, "requires": { "assertion-error": "^1.1.0", @@ -2565,18 +2559,18 @@ } }, "elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "dev": true, "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", + "bn.js": "^4.11.9", + "brorand": "^1.1.0", "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" }, "dependencies": { "bn.js": { @@ -3757,9 +3751,9 @@ "dev": true }, "get-intrinsic": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.2.tgz", - "integrity": "sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", "dev": true, "requires": { "function-bind": "^1.1.1", @@ -4684,25 +4678,39 @@ }, "dependencies": { "es-abstract": { - "version": "1.18.0-next.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", - "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "version": "1.18.0-next.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.2.tgz", + "integrity": "sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==", "dev": true, "requires": { + "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2", "has": "^1.0.3", "has-symbols": "^1.0.1", "is-callable": "^1.2.2", - "is-negative-zero": "^2.0.0", + "is-negative-zero": "^2.0.1", "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", + "object-inspect": "^1.9.0", "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.3", + "string.prototype.trimstart": "^1.0.3" } }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true + }, + "object-inspect": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "dev": true + }, "object.assign": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", @@ -4714,6 +4722,26 @@ "has-symbols": "^1.0.1", "object-keys": "^1.1.1" } + }, + "string.prototype.trimend": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", + "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", + "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } } } }, @@ -6258,9 +6286,9 @@ "dev": true }, "pathval": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", - "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", "dev": true }, "pbkdf2": { @@ -7824,12 +7852,6 @@ } } }, - "travis-fold": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/travis-fold/-/travis-fold-0.1.2.tgz", - "integrity": "sha1-/sAF+dyqJZo/lFnOWmkGq6TFRdo=", - "dev": true - }, "tsconfig-paths": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", @@ -7920,9 +7942,9 @@ "dev": true }, "uglify-js": { - "version": "3.12.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.12.4.tgz", - "integrity": "sha512-L5i5jg/SHkEqzN18gQMTWsZk3KelRsfD1wUVNqtq0kzqWQqcJjyL8yc1o8hJgRrWqrAl2mUFbhfznEIoi7zi2A==", + "version": "3.12.7", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.12.7.tgz", + "integrity": "sha512-SIZhkoh+U/wjW+BHGhVwE9nt8tWJspncloBcFapkpGRwNPqcH8pzX36BXe3TPBjzHWPMUZotpCigak/udWNr1Q==", "dev": true, "optional": true }, @@ -8290,25 +8312,39 @@ }, "dependencies": { "es-abstract": { - "version": "1.18.0-next.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", - "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "version": "1.18.0-next.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.2.tgz", + "integrity": "sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==", "dev": true, "requires": { + "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2", "has": "^1.0.3", "has-symbols": "^1.0.1", "is-callable": "^1.2.2", - "is-negative-zero": "^2.0.0", + "is-negative-zero": "^2.0.1", "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", + "object-inspect": "^1.9.0", "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.3", + "string.prototype.trimstart": "^1.0.3" } }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true + }, + "object-inspect": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "dev": true + }, "object.assign": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", @@ -8320,6 +8356,26 @@ "has-symbols": "^1.0.1", "object-keys": "^1.1.1" } + }, + "string.prototype.trimend": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", + "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", + "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } } } }, diff --git a/package.json b/package.json index 76a3346598c0f..03343354a1fe0 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,6 @@ "@types/q": "latest", "@types/source-map-support": "latest", "@types/through2": "latest", - "@types/travis-fold": "latest", "@types/xml2js": "^0.4.0", "@typescript-eslint/eslint-plugin": "4.5.0", "@typescript-eslint/experimental-utils": "4.5.0", @@ -95,7 +94,6 @@ "remove-internal": "^2.9.2", "source-map-support": "latest", "through2": "latest", - "travis-fold": "latest", "typescript": "^4.0.0-dev.20200624", "vinyl": "latest", "vinyl-sourcemaps-apply": "latest", diff --git a/src/compiler/binder.ts b/src/compiler/binder.ts index 11b1955869d9d..bea34807d868f 100644 --- a/src/compiler/binder.ts +++ b/src/compiler/binder.ts @@ -174,14 +174,14 @@ namespace ts { const binder = createBinder(); export function bindSourceFile(file: SourceFile, options: CompilerOptions) { - tracing.push(tracing.Phase.Bind, "bindSourceFile", { path: file.path }, /*separateBeginAndEnd*/ true); + tracing?.push(tracing.Phase.Bind, "bindSourceFile", { path: file.path }, /*separateBeginAndEnd*/ true); performance.mark("beforeBind"); perfLogger.logStartBindFile("" + file.fileName); binder(file, options); perfLogger.logStopBindFile(); performance.mark("afterBind"); performance.measure("Bind", "beforeBind", "afterBind"); - tracing.pop(); + tracing?.pop(); } function createBinder(): (file: SourceFile, options: CompilerOptions) => void { @@ -2540,6 +2540,11 @@ namespace ts { node.flowNode = currentFlow; } return checkContextualIdentifier(node); + case SyntaxKind.QualifiedName: + if (currentFlow && parent.kind === SyntaxKind.TypeQuery) { + node.flowNode = currentFlow; + } + break; case SyntaxKind.SuperKeyword: node.flowNode = currentFlow; break; @@ -3435,7 +3440,7 @@ namespace ts { function shouldReportErrorOnModuleDeclaration(node: ModuleDeclaration): boolean { const instanceState = getModuleInstanceState(node); - return instanceState === ModuleInstanceState.Instantiated || (instanceState === ModuleInstanceState.ConstEnumOnly && !!options.preserveConstEnums); + return instanceState === ModuleInstanceState.Instantiated || (instanceState === ModuleInstanceState.ConstEnumOnly && shouldPreserveConstEnums(options)); } function checkUnreachable(node: Node): boolean { diff --git a/src/compiler/builder.ts b/src/compiler/builder.ts index 8d09baa270540..45db667aa99ea 100644 --- a/src/compiler/builder.ts +++ b/src/compiler/builder.ts @@ -216,7 +216,7 @@ namespace ts { // if not using old state, every file is changed if (!useOldState || - // File wasnt present in old state + // File wasn't present in old state !(oldInfo = oldState!.fileInfos.get(sourceFilePath)) || // versions dont match oldInfo.version !== info.version || diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 10f8dc923b88f..3de21bebf7681 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -1121,6 +1121,31 @@ namespace ts { return diagnostic; } + function addDeprecatedSuggestionWorker(declarations: Node | Node[], diagnostic: DiagnosticWithLocation) { + const deprecatedTag = Array.isArray(declarations) ? forEach(declarations, getJSDocDeprecatedTag) : getJSDocDeprecatedTag(declarations); + if (deprecatedTag) { + addRelatedInfo( + diagnostic, + createDiagnosticForNode(deprecatedTag, Diagnostics.The_declaration_was_marked_as_deprecated_here) + ); + } + // We call `addRelatedInfo()` before adding the diagnostic to prevent duplicates. + suggestionDiagnostics.add(diagnostic); + return diagnostic; + } + + function addDeprecatedSuggestion(location: Node, declarations: Node[], deprecatedEntity: string) { + const diagnostic = createDiagnosticForNode(location, Diagnostics._0_is_deprecated, deprecatedEntity); + return addDeprecatedSuggestionWorker(declarations, diagnostic); + } + + function addDeprecatedSuggestionWithSignature(location: Node, declaration: Node, deprecatedEntity: string | undefined, signatureString: string) { + const diagnostic = deprecatedEntity + ? createDiagnosticForNode(location, Diagnostics.The_signature_0_of_1_is_deprecated, signatureString, deprecatedEntity) + : createDiagnosticForNode(location, Diagnostics._0_is_deprecated, signatureString); + return addDeprecatedSuggestionWorker(declaration, diagnostic); + } + function createSymbol(flags: SymbolFlags, name: __String, checkFlags?: CheckFlags) { symbolCount++; const symbol = (new Symbol(flags | SymbolFlags.Transient, name)); @@ -2028,6 +2053,10 @@ namespace ts { let suggestion: Symbol | undefined; if (suggestedNameNotFoundMessage && suggestionCount < maximumSuggestionCount) { suggestion = getSuggestedSymbolForNonexistentSymbol(originalLocation, name, meaning); + const isGlobalScopeAugmentationDeclaration = suggestion && suggestion.valueDeclaration && isAmbientModule(suggestion.valueDeclaration) && isGlobalScopeAugmentation(suggestion.valueDeclaration); + if (isGlobalScopeAugmentationDeclaration) { + suggestion = undefined; + } if (suggestion) { const suggestionName = symbolToString(suggestion); const diagnostic = error(errorLocation, suggestedNameNotFoundMessage, diagnosticName(nameArg!), suggestionName); @@ -2395,7 +2424,7 @@ namespace ts { } else { Debug.assert(!!(result.flags & SymbolFlags.ConstEnum)); - if (compilerOptions.preserveConstEnums) { + if (shouldPreserveConstEnums(compilerOptions)) { diagnosticMessage = error(errorLocation, Diagnostics.Enum_0_used_before_its_declaration, declarationName); } } @@ -4154,7 +4183,8 @@ namespace ts { return { accessibility: SymbolAccessibility.CannotBeNamed, errorSymbolName: symbolToString(symbol, enclosingDeclaration, meaning), - errorModuleName: symbolToString(symbolExternalModule) + errorModuleName: symbolToString(symbolExternalModule), + errorNode: isInJSFile(enclosingDeclaration) ? enclosingDeclaration : undefined, }; } } @@ -4670,7 +4700,7 @@ namespace ts { function createMappedTypeNodeFromType(type: MappedType) { Debug.assert(!!(type.flags & TypeFlags.Object)); - const readonlyToken = type.declaration.readonlyToken ? factory.createToken(type.declaration.readonlyToken.kind) : undefined; + const readonlyToken = type.declaration.readonlyToken ? factory.createToken(type.declaration.readonlyToken.kind) : undefined; const questionToken = type.declaration.questionToken ? factory.createToken(type.declaration.questionToken.kind) : undefined; let appropriateConstraintTypeNode: TypeNode; if (isMappedTypeWithKeyofConstraintDeclaration(type)) { @@ -6154,7 +6184,7 @@ namespace ts { tracker: { ...oldcontext.tracker, trackSymbol: (sym, decl, meaning) => { - const accessibleResult = isSymbolAccessible(sym, decl, meaning, /*computeALiases*/ false); + const accessibleResult = isSymbolAccessible(sym, decl, meaning, /*computeAliases*/ false); if (accessibleResult.accessibility === SymbolAccessibility.Accessible) { // Lookup the root symbol of the chain of refs we'll use to access it and serialize it const chain = lookupSymbolChainWorker(sym, context, meaning); @@ -6596,16 +6626,17 @@ namespace ts { function addResult(node: Statement, additionalModifierFlags: ModifierFlags) { if (canHaveModifiers(node)) { let newModifierFlags: ModifierFlags = ModifierFlags.None; + const enclosingDeclaration = context.enclosingDeclaration && + (isJSDocTypeAlias(context.enclosingDeclaration) ? getSourceFileOfNode(context.enclosingDeclaration) : context.enclosingDeclaration); if (additionalModifierFlags & ModifierFlags.Export && - context.enclosingDeclaration && - (isExportingScope(context.enclosingDeclaration) || isModuleDeclaration(context.enclosingDeclaration)) && + enclosingDeclaration && (isExportingScope(enclosingDeclaration) || isModuleDeclaration(enclosingDeclaration)) && canHaveExportModifier(node) ) { // Classes, namespaces, variables, functions, interfaces, and types should all be `export`ed in a module context if not private newModifierFlags |= ModifierFlags.Export; } if (addingDeclare && !(newModifierFlags & ModifierFlags.Export) && - (!context.enclosingDeclaration || !(context.enclosingDeclaration.flags & NodeFlags.Ambient)) && + (!enclosingDeclaration || !(enclosingDeclaration.flags & NodeFlags.Ambient)) && (isEnumDeclaration(node) || isVariableStatement(node) || isFunctionDeclaration(node) || isClassDeclaration(node) || isModuleDeclaration(node))) { // Classes, namespaces, variables, enums, and functions all need `declare` modifiers to be valid in a declaration file top-level scope newModifierFlags |= ModifierFlags.Ambient; @@ -6628,6 +6659,8 @@ namespace ts { const commentText = jsdocAliasDecl ? jsdocAliasDecl.comment || jsdocAliasDecl.parent.comment : undefined; const oldFlags = context.flags; context.flags |= NodeBuilderFlags.InTypeAlias; + const oldEnclosingDecl = context.enclosingDeclaration; + context.enclosingDeclaration = jsdocAliasDecl; const typeNode = jsdocAliasDecl && jsdocAliasDecl.typeExpression && isJSDocTypeExpression(jsdocAliasDecl.typeExpression) && serializeExistingTypeNode(context, jsdocAliasDecl.typeExpression.type, includePrivateSymbol, bundled) @@ -6637,6 +6670,7 @@ namespace ts { !commentText ? [] : [{ kind: SyntaxKind.MultiLineCommentTrivia, text: "*\n * " + commentText.replace(/\n/g, "\n * ") + "\n ", pos: -1, end: -1, hasTrailingNewLine: true }] ), modifierFlags); context.flags = oldFlags; + context.enclosingDeclaration = oldEnclosingDecl; } function serializeInterface(symbol: Symbol, symbolName: string, modifierFlags: ModifierFlags) { @@ -8202,7 +8236,7 @@ namespace ts { if (isParameter(declaration)) { const func = declaration.parent; // For a parameter of a set accessor, use the type of the get accessor if one is present - if (func.kind === SyntaxKind.SetAccessor && !hasNonBindableDynamicName(func)) { + if (func.kind === SyntaxKind.SetAccessor && hasBindableName(func)) { const getter = getDeclarationOfKind(getSymbolOfNode(declaration.parent), SyntaxKind.GetAccessor); if (getter) { const getterSignature = getSignatureFromDeclaration(getter); @@ -8734,8 +8768,15 @@ namespace ts { } if (symbol.flags & SymbolFlags.ModuleExports) { const fileSymbol = getSymbolOfNode(getSourceFileOfNode(symbol.valueDeclaration)); + const result = createSymbol(fileSymbol.flags, "exports" as __String); + result.declarations = fileSymbol.declarations ? fileSymbol.declarations.slice() : []; + result.parent = symbol; + result.target = fileSymbol; + if (fileSymbol.valueDeclaration) result.valueDeclaration = fileSymbol.valueDeclaration; + if (fileSymbol.members) result.members = new Map(fileSymbol.members); + if (fileSymbol.exports) result.exports = new Map(fileSymbol.exports); const members = createSymbolTable(); - members.set("exports" as __String, fileSymbol); + members.set("exports" as __String, result); return createAnonymousType(symbol, members, emptyArray, emptyArray, undefined, undefined); } // Handle catch clause variables @@ -9877,10 +9918,10 @@ namespace ts { } /** - * Indicates whether a declaration has a dynamic name that cannot be late-bound. + * Indicates whether a declaration has an early-bound name or a dynamic name that can be late-bound. */ - function hasNonBindableDynamicName(node: Declaration) { - return hasDynamicName(node) && !hasLateBindableName(node); + function hasBindableName(node: Declaration) { + return !hasDynamicName(node) || hasLateBindableName(node); } /** @@ -11205,11 +11246,21 @@ namespace ts { if (t.flags & TypeFlags.UnionOrIntersection) { const types = (t).types; const baseTypes: Type[] = []; + let different = false; for (const type of types) { const baseType = getBaseConstraint(type); if (baseType) { + if (baseType !== type) { + different = true; + } baseTypes.push(baseType); } + else { + different = true; + } + } + if (!different) { + return t; } return t.flags & TypeFlags.Union && baseTypes.length === types.length ? getUnionType(baseTypes) : t.flags & TypeFlags.Intersection && baseTypes.length ? getIntersectionType(baseTypes) : @@ -11827,7 +11878,7 @@ namespace ts { // If only one accessor includes a this-type annotation, the other behaves as if it had the same type annotation if ((declaration.kind === SyntaxKind.GetAccessor || declaration.kind === SyntaxKind.SetAccessor) && - !hasNonBindableDynamicName(declaration) && + hasBindableName(declaration) && (!hasThisParameter || !thisParameter)) { const otherKind = declaration.kind === SyntaxKind.GetAccessor ? SyntaxKind.SetAccessor : SyntaxKind.GetAccessor; const other = getDeclarationOfKind(getSymbolOfNode(declaration), otherKind); @@ -12051,7 +12102,7 @@ namespace ts { if (typeNode) { return getTypeFromTypeNode(typeNode); } - if (declaration.kind === SyntaxKind.GetAccessor && !hasNonBindableDynamicName(declaration)) { + if (declaration.kind === SyntaxKind.GetAccessor && hasBindableName(declaration)) { const jsDocType = isInJSFile(declaration) && getTypeForDeclarationFromJSDocComment(declaration); if (jsDocType) { return jsDocType; @@ -12325,6 +12376,10 @@ namespace ts { return result; } + function getAliasId(aliasSymbol: Symbol | undefined, aliasTypeArguments: readonly Type[] | undefined) { + return aliasSymbol ? `@${getSymbolId(aliasSymbol)}` + (aliasTypeArguments ? `:${getTypeListId(aliasTypeArguments)}` : "") : ""; + } + // This function is used to propagate certain flags when creating new object type references and union types. // It is only necessary to do so if a constituent type might be the undefined type, the null type, the type // of an object literal or the anyFunctionType. This is because there are operations in the type checker @@ -12453,7 +12508,7 @@ namespace ts { } const links = getSymbolLinks(symbol); const typeParameters = links.typeParameters!; - const id = getTypeListId(typeArguments) + (aliasSymbol ? `@${getSymbolId(aliasSymbol)}` : ""); + const id = getTypeListId(typeArguments) + getAliasId(aliasSymbol, aliasTypeArguments); let instantiation = links.instantiations!.get(id); if (!instantiation) { links.instantiations!.set(id, instantiation = instantiateTypeWithAlias(type, @@ -13125,8 +13180,15 @@ namespace ts { addElement(type, ElementFlags.Variadic, target.labeledElementDeclarations?.[i]); } else if (isTupleType(type)) { + const elements = getTypeArguments(type); + if (elements.length + expandedTypes.length >= 10_000) { + error(currentNode, isPartOfTypeNode(currentNode!) + ? Diagnostics.Type_produces_a_tuple_type_that_is_too_large_to_represent + : Diagnostics.Expression_produces_a_tuple_type_that_is_too_large_to_represent); + return errorType; + } // Spread variadic elements with tuple types into the resulting tuple. - forEach(getTypeArguments(type), (t, n) => addElement(t, type.target.elementFlags[n], type.target.labeledElementDeclarations?.[n])); + forEach(elements, (t, n) => addElement(t, type.target.elementFlags[n], type.target.labeledElementDeclarations?.[n])); } else { // Treat everything else as an array type and create a rest element. @@ -13255,54 +13317,40 @@ namespace ts { return includes; } - function isSetOfLiteralsFromSameEnum(types: readonly Type[]): boolean { - const first = types[0]; - if (first.flags & TypeFlags.EnumLiteral) { - const firstEnum = getParentOfSymbol(first.symbol); - for (let i = 1; i < types.length; i++) { - const other = types[i]; - if (!(other.flags & TypeFlags.EnumLiteral) || (firstEnum !== getParentOfSymbol(other.symbol))) { - return false; - } - } - return true; - } - - return false; - } - - function removeSubtypes(types: Type[], primitivesOnly: boolean): boolean { + function removeSubtypes(types: Type[], hasObjectTypes: boolean): boolean { + // We assume that redundant primitive types have already been removed from the types array and that there + // are no any and unknown types in the array. Thus, the only possible supertypes for primitive types are empty + // object types, and if none of those are present we can exclude primitive types from the subtype check. + const hasEmptyObject = hasObjectTypes && some(types, t => !!(t.flags & TypeFlags.Object) && !isGenericMappedType(t) && isEmptyResolvedType(resolveStructuredTypeMembers(t))); const len = types.length; - if (len === 0 || isSetOfLiteralsFromSameEnum(types)) { - return true; - } let i = len; let count = 0; while (i > 0) { i--; const source = types[i]; - for (const target of types) { - if (source !== target) { - if (count === 100000) { - // After 100000 subtype checks we estimate the remaining amount of work by assuming the - // same ratio of checks per element. If the estimated number of remaining type checks is - // greater than an upper limit we deem the union type too complex to represent. The - // upper limit is 25M for unions of primitives only, and 1M otherwise. This for example - // caps union types at 5000 unique literal types and 1000 unique object types. - const estimatedCount = (count / (len - i)) * len; - if (estimatedCount > (primitivesOnly ? 25000000 : 1000000)) { - tracing.instant(tracing.Phase.CheckTypes, "removeSubtypes_DepthLimit", { typeIds: types.map(t => t.id) }); - error(currentNode, Diagnostics.Expression_produces_a_union_type_that_is_too_complex_to_represent); - return false; + if (hasEmptyObject || source.flags & TypeFlags.StructuredOrInstantiable) { + for (const target of types) { + if (source !== target) { + if (count === 100000) { + // After 100000 subtype checks we estimate the remaining amount of work by assuming the + // same ratio of checks per element. If the estimated number of remaining type checks is + // greater than 1M we deem the union type too complex to represent. This for example + // caps union types at 1000 unique object types. + const estimatedCount = (count / (len - i)) * len; + if (estimatedCount > 1000000) { + tracing?.instant(tracing.Phase.CheckTypes, "removeSubtypes_DepthLimit", { typeIds: types.map(t => t.id) }); + error(currentNode, Diagnostics.Expression_produces_a_union_type_that_is_too_complex_to_represent); + return false; + } + } + count++; + if (isTypeRelatedTo(source, target, strictSubtypeRelation) && ( + !(getObjectFlags(getTargetType(source)) & ObjectFlags.Class) || + !(getObjectFlags(getTargetType(target)) & ObjectFlags.Class) || + isTypeDerivedFrom(source, target))) { + orderedRemoveItemAt(types, i); + break; } - } - count++; - if (isTypeRelatedTo(source, target, strictSubtypeRelation) && ( - !(getObjectFlags(getTargetType(source)) & ObjectFlags.Class) || - !(getObjectFlags(getTargetType(target)) & ObjectFlags.Class) || - isTypeDerivedFrom(source, target))) { - orderedRemoveItemAt(types, i); - break; } } } @@ -13315,11 +13363,13 @@ namespace ts { while (i > 0) { i--; const t = types[i]; + const flags = t.flags; const remove = - t.flags & TypeFlags.StringLikeLiteral && includes & TypeFlags.String || - t.flags & TypeFlags.NumberLiteral && includes & TypeFlags.Number || - t.flags & TypeFlags.BigIntLiteral && includes & TypeFlags.BigInt || - t.flags & TypeFlags.UniqueESSymbol && includes & TypeFlags.ESSymbol || + flags & TypeFlags.StringLiteral && includes & TypeFlags.String || + flags & TypeFlags.NumberLiteral && includes & TypeFlags.Number || + flags & TypeFlags.BigIntLiteral && includes & TypeFlags.BigInt || + flags & TypeFlags.UniqueESSymbol && includes & TypeFlags.ESSymbol || + flags & TypeFlags.Undefined && includes & TypeFlags.Void || isFreshLiteralType(t) && containsType(types, (t).regularType); if (remove) { orderedRemoveItemAt(types, i); @@ -13385,20 +13435,18 @@ namespace ts { if (includes & TypeFlags.AnyOrUnknown) { return includes & TypeFlags.Any ? includes & TypeFlags.IncludesWildcard ? wildcardType : anyType : unknownType; } - switch (unionReduction) { - case UnionReduction.Literal: - if (includes & (TypeFlags.FreshableLiteral | TypeFlags.UniqueESSymbol)) { - removeRedundantLiteralTypes(typeSet, includes); - } - if (includes & TypeFlags.StringLiteral && includes & TypeFlags.TemplateLiteral) { - removeStringLiteralsMatchedByTemplateLiterals(typeSet); - } - break; - case UnionReduction.Subtype: - if (!removeSubtypes(typeSet, !(includes & TypeFlags.IncludesStructuredOrInstantiable))) { - return errorType; - } - break; + if (unionReduction & (UnionReduction.Literal | UnionReduction.Subtype)) { + if (includes & (TypeFlags.Literal | TypeFlags.UniqueESSymbol) || includes & TypeFlags.Void && includes & TypeFlags.Undefined) { + removeRedundantLiteralTypes(typeSet, includes); + } + if (includes & TypeFlags.StringLiteral && includes & TypeFlags.TemplateLiteral) { + removeStringLiteralsMatchedByTemplateLiterals(typeSet); + } + } + if (unionReduction & UnionReduction.Subtype) { + if (!removeSubtypes(typeSet, !!(includes & TypeFlags.Object))) { + return errorType; + } } if (typeSet.length === 0) { return includes & TypeFlags.Null ? includes & TypeFlags.IncludesNonWideningType ? nullType : nullWideningType : @@ -13487,7 +13535,7 @@ namespace ts { origin.flags & TypeFlags.Union ? `|${getTypeListId((origin).types)}` : origin.flags & TypeFlags.Intersection ? `&${getTypeListId((origin).types)}` : `#${(origin).type.id}`; - const id = typeKey + (aliasSymbol ? `@${getSymbolId(aliasSymbol)}` : ""); + const id = typeKey + getAliasId(aliasSymbol, aliasTypeArguments); let type = unionTypes.get(id); if (!type) { type = createUnionType(types, aliasSymbol, aliasTypeArguments, origin); @@ -13724,7 +13772,7 @@ namespace ts { if (typeSet.length === 1) { return typeSet[0]; } - const id = getTypeListId(typeSet) + (aliasSymbol ? `@${getSymbolId(aliasSymbol)}` : ""); + const id = getTypeListId(typeSet) + getAliasId(aliasSymbol, aliasTypeArguments); let result = intersectionTypes.get(id); if (!result) { if (includes & TypeFlags.Union) { @@ -13769,7 +13817,7 @@ namespace ts { function checkCrossProductUnion(types: readonly Type[]) { const size = getCrossProductUnionSize(types); if (size >= 100000) { - tracing.instant(tracing.Phase.CheckTypes, "checkCrossProductUnion_DepthLimit", { typeIds: types.map(t => t.id), size }); + tracing?.instant(tracing.Phase.CheckTypes, "checkCrossProductUnion_DepthLimit", { typeIds: types.map(t => t.id), size }); error(currentNode, Diagnostics.Expression_produces_a_union_type_that_is_too_complex_to_represent); return false; } @@ -13825,11 +13873,18 @@ namespace ts { type.resolvedIndexType || (type.resolvedIndexType = createIndexType(type, /*stringsOnly*/ false)); } + function instantiateTypeAsMappedNameType(nameType: Type, type: MappedType, t: Type) { + return instantiateType(nameType, appendTypeMapping(type.mapper, getTypeParameterFromMappedType(type), t)); + } + function getIndexTypeForMappedType(type: MappedType, noIndexSignatures: boolean | undefined) { const constraint = filterType(getConstraintTypeFromMappedType(type), t => !(noIndexSignatures && t.flags & (TypeFlags.Any | TypeFlags.String))); const nameType = type.declaration.nameType && getTypeFromTypeNode(type.declaration.nameType); + // If the constraint is exclusively string/number/never type(s), we need to pull the property names from the modified type and run them through the `nameType` mapper as well + // since they won't appear in the constraint, due to subtype reducing with the string/number index types + const properties = nameType && everyType(constraint, t => !!(t.flags & (TypeFlags.String | TypeFlags.Number | TypeFlags.Never))) && getPropertiesOfType(getApparentType(getModifiersTypeFromMappedType(type))); return nameType ? - mapType(constraint, t => instantiateType(nameType, appendTypeMapping(type.mapper, getTypeParameterFromMappedType(type), t))) : + getUnionType([mapType(constraint, t => instantiateTypeAsMappedNameType(nameType, type, t)), mapType(getUnionType(map(properties || emptyArray, p => getLiteralTypeFromProperty(p, TypeFlags.StringOrNumberLiteralOrUnique))), t => instantiateTypeAsMappedNameType(nameType, type, t))]): constraint; } @@ -13979,7 +14034,6 @@ namespace ts { let type = templateLiteralTypes.get(id); if (!type) { templateLiteralTypes.set(id, type = createTemplateLiteralType(newTexts, newTypes)); - type.regularType = type; } return type; @@ -14091,7 +14145,8 @@ namespace ts { return some((type as IntersectionType).types, isJSLiteralType); } if (type.flags & TypeFlags.Instantiable) { - return isJSLiteralType(getResolvedBaseConstraint(type)); + const constraint = getResolvedBaseConstraint(type); + return constraint !== type && isJSLiteralType(constraint); } return false; } @@ -14128,7 +14183,7 @@ namespace ts { if (prop) { if (reportDeprecated && accessNode && getDeclarationNodeFlagsFromSymbol(prop) & NodeFlags.Deprecated && isUncalledFunctionReference(accessNode, prop)) { const deprecatedNode = accessExpression?.argumentExpression ?? (isIndexedAccessTypeNode(accessNode) ? accessNode.indexType : accessNode); - errorOrSuggestion(/* isError */ false, deprecatedNode, Diagnostics._0_is_deprecated, propName as string); + addDeprecatedSuggestion(deprecatedNode, prop.declarations, propName as string); } if (accessExpression) { markPropertyAsReferenced(prop, accessExpression, /*isThisAccess*/ accessExpression.expression.kind === SyntaxKind.ThisKeyword); @@ -14486,7 +14541,7 @@ namespace ts { return objectType; } // Defer the operation by creating an indexed access type. - const id = objectType.id + "," + indexType.id + (shouldIncludeUndefined ? "?" : "") + (aliasSymbol ? `@${getSymbolId(aliasSymbol)}` : ""); + const id = objectType.id + "," + indexType.id + (shouldIncludeUndefined ? "?" : "") + getAliasId(aliasSymbol, aliasTypeArguments); let type = indexedAccessTypes.get(id); if (!type) { indexedAccessTypes.set(id, type = createIndexedAccessType(objectType, indexType, aliasSymbol, aliasTypeArguments, shouldIncludeUndefined)); @@ -14567,6 +14622,23 @@ namespace ts { return type; } + function isTypicalNondistributiveConditional(root: ConditionalRoot) { + return !root.isDistributive + && root.node.checkType.kind === SyntaxKind.TupleType + && length((root.node.checkType as TupleTypeNode).elements) === 1 + && root.node.extendsType.kind === SyntaxKind.TupleType + && length((root.node.extendsType as TupleTypeNode).elements) === 1; + } + + /** + * We syntactually check for common nondistributive conditional shapes and unwrap them into + * the intended comparison - we do this so we can check if the unwrapped types are generic or + * not and appropriately defer condition calculation + */ + function unwrapNondistributiveConditionalTuple(root: ConditionalRoot, type: Type) { + return isTypicalNondistributiveConditional(root) && isTupleType(type) ? getTypeArguments(type)[0] : type; + } + function getConditionalType(root: ConditionalRoot, mapper: TypeMapper | undefined, aliasSymbol?: Symbol, aliasTypeArguments?: readonly Type[]): Type { let result; let extraTypes: Type[] | undefined; @@ -14574,9 +14646,10 @@ namespace ts { // types of the form 'A extends B ? X : C extends D ? Y : E extends F ? Z : ...' as a single construct for // purposes of resolution. This means such types aren't subject to the instatiation depth limiter. while (true) { - const checkType = instantiateType(root.checkType, mapper); + const isUnwrapped = isTypicalNondistributiveConditional(root); + const checkType = instantiateType(unwrapNondistributiveConditionalTuple(root, root.checkType), mapper); const checkTypeInstantiable = isGenericObjectType(checkType) || isGenericIndexType(checkType); - const extendsType = instantiateType(root.extendsType, mapper); + const extendsType = instantiateType(unwrapNondistributiveConditionalTuple(root, root.extendsType), mapper); if (checkType === wildcardType || extendsType === wildcardType) { return wildcardType; } @@ -14592,16 +14665,16 @@ namespace ts { combinedMapper = mergeTypeMappers(mapper, context.mapper); } // Instantiate the extends type including inferences for 'infer T' type parameters - const inferredExtendsType = combinedMapper ? instantiateType(root.extendsType, combinedMapper) : extendsType; + const inferredExtendsType = combinedMapper ? instantiateType(unwrapNondistributiveConditionalTuple(root, root.extendsType), combinedMapper) : extendsType; // We attempt to resolve the conditional type only when the check and extends types are non-generic if (!checkTypeInstantiable && !isGenericObjectType(inferredExtendsType) && !isGenericIndexType(inferredExtendsType)) { // Return falseType for a definitely false extends check. We check an instantiations of the two // types with type parameters mapped to the wildcard type, the most permissive instantiations // possible (the wildcard type is assignable to and from all types). If those are not related, // then no instantiations will be and we can just return the false branch type. - if (!(inferredExtendsType.flags & TypeFlags.AnyOrUnknown) && (checkType.flags & TypeFlags.Any || !isTypeAssignableTo(getPermissiveInstantiation(checkType), getPermissiveInstantiation(inferredExtendsType)))) { + if (!(inferredExtendsType.flags & TypeFlags.AnyOrUnknown) && ((checkType.flags & TypeFlags.Any && !isUnwrapped) || !isTypeAssignableTo(getPermissiveInstantiation(checkType), getPermissiveInstantiation(inferredExtendsType)))) { // Return union of trueType and falseType for 'any' since it matches anything - if (checkType.flags & TypeFlags.Any) { + if (checkType.flags & TypeFlags.Any && !isUnwrapped) { (extraTypes || (extraTypes = [])).push(instantiateType(getTypeFromTypeNode(root.node.trueType), combinedMapper || mapper)); } // If falseType is an immediately nested conditional type that isn't distributive or has an @@ -14630,8 +14703,8 @@ namespace ts { // Return a deferred type for a check that is neither definitely true nor definitely false result = createType(TypeFlags.Conditional); result.root = root; - result.checkType = checkType; - result.extendsType = extendsType; + result.checkType = instantiateType(root.checkType, mapper); + result.extendsType = instantiateType(root.extendsType, mapper); result.mapper = mapper; result.combinedMapper = combinedMapper; result.aliasSymbol = aliasSymbol || root.aliasSymbol; @@ -15017,28 +15090,26 @@ namespace ts { } function getFreshTypeOfLiteralType(type: Type): Type { - if (type.flags & TypeFlags.FreshableLiteral) { - if (!(type).freshType) { - const freshType = type.flags & TypeFlags.TemplateLiteral ? - createTemplateLiteralType((type).texts, (type).types) : - createLiteralType(type.flags, (type).value, (type).symbol); - freshType.regularType = type; + if (type.flags & TypeFlags.Literal) { + if (!(type).freshType) { + const freshType = createLiteralType(type.flags, (type).value, (type).symbol); + freshType.regularType = type; freshType.freshType = freshType; - (type).freshType = freshType; + (type).freshType = freshType; } - return (type).freshType; + return (type).freshType; } return type; } function getRegularTypeOfLiteralType(type: Type): Type { - return type.flags & TypeFlags.FreshableLiteral ? (type).regularType : + return type.flags & TypeFlags.Literal ? (type).regularType : type.flags & TypeFlags.Union ? ((type).regularType || ((type).regularType = mapType(type, getRegularTypeOfLiteralType) as UnionType)) : type; } function isFreshLiteralType(type: Type) { - return !!(type.flags & TypeFlags.FreshableLiteral) && (type).freshType === type; + return !!(type.flags & TypeFlags.Literal) && (type).freshType === type; } function getLiteralType(value: string): StringLiteralType; @@ -15464,15 +15535,15 @@ namespace ts { const combinedMapper = combineTypeMappers(type.mapper, mapper); const typeArguments = map(typeParameters, t => getMappedType(t, combinedMapper)); const newAliasSymbol = aliasSymbol || type.aliasSymbol; - const id = getTypeListId(typeArguments) + (newAliasSymbol ? `@${getSymbolId(newAliasSymbol)}` : ""); + const newAliasTypeArguments = aliasSymbol ? aliasTypeArguments : instantiateTypes(type.aliasTypeArguments, mapper); + const id = getTypeListId(typeArguments) + getAliasId(newAliasSymbol, newAliasTypeArguments); if (!target.instantiations) { target.instantiations = new Map(); - target.instantiations.set(getTypeListId(typeParameters) + (target.aliasSymbol ? `@${getSymbolId(target.aliasSymbol)}` : ""), target); + target.instantiations.set(getTypeListId(typeParameters) + getAliasId(target.aliasSymbol, target.aliasTypeArguments), target); } let result = target.instantiations.get(id); if (!result) { const newMapper = createTypeMapper(typeParameters, typeArguments); - const newAliasTypeArguments = aliasSymbol ? aliasTypeArguments : instantiateTypes(type.aliasTypeArguments, mapper); result = target.objectFlags & ObjectFlags.Reference ? createDeferredTypeReference((type).target, (type).node, newMapper, newAliasSymbol, newAliasTypeArguments) : target.objectFlags & ObjectFlags.Mapped ? instantiateMappedType(target, newMapper, newAliasSymbol, newAliasTypeArguments) : instantiateAnonymousType(target, newMapper, newAliasSymbol, newAliasTypeArguments); @@ -15640,7 +15711,7 @@ namespace ts { // mapper to the type parameters to produce the effective list of type arguments, and compute the // instantiation cache key from the type IDs of the type arguments. const typeArguments = map(root.outerTypeParameters, t => getMappedType(t, mapper)); - const id = getTypeListId(typeArguments) + (aliasSymbol ? `@${getSymbolId(aliasSymbol)}` : ""); + const id = getTypeListId(typeArguments) + getAliasId(aliasSymbol, aliasTypeArguments); let result = root.instantiations!.get(id); if (!result) { const newMapper = createTypeMapper(root.outerTypeParameters, typeArguments); @@ -15680,7 +15751,7 @@ namespace ts { // We have reached 50 recursive type instantiations and there is a very high likelyhood we're dealing // with a combination of infinite generic types that perpetually generate new type identities. We stop // the recursion here by yielding the error type. - tracing.instant(tracing.Phase.CheckTypes, "instantiateType_DepthLimit", { typeId: type.id, instantiationDepth, instantiationCount }); + tracing?.instant(tracing.Phase.CheckTypes, "instantiateType_DepthLimit", { typeId: type.id, instantiationDepth, instantiationCount }); error(currentNode, Diagnostics.Type_instantiation_is_excessively_deep_and_possibly_infinite); return errorType; } @@ -16810,7 +16881,7 @@ namespace ts { reportIncompatibleStack(); } if (overflow) { - tracing.instant(tracing.Phase.CheckTypes, "checkTypeRelatedTo_DepthLimit", { sourceId: source.id, targetId: target.id, depth }); + tracing?.instant(tracing.Phase.CheckTypes, "checkTypeRelatedTo_DepthLimit", { sourceId: source.id, targetId: target.id, depth }); const diag = error(errorNode || currentNode, Diagnostics.Excessive_stack_depth_comparing_types_0_and_1, typeToString(source), typeToString(target)); if (errorOutputContainer) { (errorOutputContainer.errors || (errorOutputContainer.errors = [])).push(diag); @@ -17297,7 +17368,7 @@ namespace ts { } function traceUnionsOrIntersectionsTooLarge(source: Type, target: Type): void { - if (!tracing.isTracing()) { + if (!tracing) { return; } @@ -17659,7 +17730,7 @@ namespace ts { } if (expandingFlags === ExpandingFlags.Both) { - tracing.instant(tracing.Phase.CheckTypes, "recursiveTypeRelatedTo_DepthLimit", { + tracing?.instant(tracing.Phase.CheckTypes, "recursiveTypeRelatedTo_DepthLimit", { sourceId: source.id, sourceIdStack: sourceStack.map(t => t.id), targetId: target.id, @@ -17696,9 +17767,9 @@ namespace ts { } function structuredTypeRelatedTo(source: Type, target: Type, reportErrors: boolean, intersectionState: IntersectionState): Ternary { - tracing.push(tracing.Phase.CheckTypes, "structuredTypeRelatedTo", { sourceId: source.id, targetId: target.id }); + tracing?.push(tracing.Phase.CheckTypes, "structuredTypeRelatedTo", { sourceId: source.id, targetId: target.id }); const result = structuredTypeRelatedToWorker(source, target, reportErrors, intersectionState); - tracing.pop(); + tracing?.pop(); return result; } @@ -17949,20 +18020,17 @@ namespace ts { } } else if (source.flags & TypeFlags.TemplateLiteral) { - if (target.flags & TypeFlags.TemplateLiteral) { - if ((source as TemplateLiteralType).texts.length === (target as TemplateLiteralType).texts.length && - (source as TemplateLiteralType).types.length === (target as TemplateLiteralType).types.length && - every((source as TemplateLiteralType).texts, (t, i) => t === (target as TemplateLiteralType).texts[i]) && - every((instantiateType(source, makeFunctionTypeMapper(reportUnreliableMarkers)) as TemplateLiteralType).types, (t, i) => !!((target as TemplateLiteralType).types[i].flags & (TypeFlags.Any | TypeFlags.String)) || !!isRelatedTo(t, (target as TemplateLiteralType).types[i], /*reportErrors*/ false))) { - return Ternary.True; - } + if (target.flags & TypeFlags.TemplateLiteral && + (source as TemplateLiteralType).texts.length === (target as TemplateLiteralType).texts.length && + (source as TemplateLiteralType).types.length === (target as TemplateLiteralType).types.length && + every((source as TemplateLiteralType).texts, (t, i) => t === (target as TemplateLiteralType).texts[i]) && + every((instantiateType(source, makeFunctionTypeMapper(reportUnreliableMarkers)) as TemplateLiteralType).types, (t, i) => !!((target as TemplateLiteralType).types[i].flags & (TypeFlags.Any | TypeFlags.String)) || !!isRelatedTo(t, (target as TemplateLiteralType).types[i], /*reportErrors*/ false))) { + return Ternary.True; } - else { - const constraint = getBaseConstraintOfType(source); - if (result = isRelatedTo(constraint && constraint !== source ? constraint : stringType, target, reportErrors)) { - resetErrorInfo(saveErrorInfo); - return result; - } + const constraint = getBaseConstraintOfType(source); + if (constraint && constraint !== source && (result = isRelatedTo(constraint, target, reportErrors))) { + resetErrorInfo(saveErrorInfo); + return result; } } else if (source.flags & TypeFlags.StringMapping) { @@ -18226,7 +18294,7 @@ namespace ts { numCombinations *= countTypes(getTypeOfSymbol(sourceProperty)); if (numCombinations > 25) { // We've reached the complexity limit. - tracing.instant(tracing.Phase.CheckTypes, "typeRelatedToDiscriminatedType_DepthLimit", { sourceId: source.id, targetId: target.id, numCombinations }); + tracing?.instant(tracing.Phase.CheckTypes, "typeRelatedToDiscriminatedType_DepthLimit", { sourceId: source.id, targetId: target.id, numCombinations }); return Ternary.False; } } @@ -19005,7 +19073,7 @@ namespace ts { function getVariancesWorker(typeParameters: readonly TypeParameter[] = emptyArray, cache: TCache, createMarkerType: (input: TCache, param: TypeParameter, marker: Type) => Type): VarianceFlags[] { let variances = cache.variances; if (!variances) { - tracing.push(tracing.Phase.CheckTypes, "getVariancesWorker", { arity: typeParameters.length, id: (cache as any).id ?? (cache as any).declaredType?.id ?? -1 }); + tracing?.push(tracing.Phase.CheckTypes, "getVariancesWorker", { arity: typeParameters.length, id: (cache as any).id ?? (cache as any).declaredType?.id ?? -1 }); // The emptyArray singleton is used to signal a recursive invocation. cache.variances = emptyArray; variances = []; @@ -19040,7 +19108,7 @@ namespace ts { variances.push(variance); } cache.variances = variances; - tracing.pop(); + tracing?.pop(); } return variances; } @@ -19457,7 +19525,7 @@ namespace ts { function getBaseTypeOfLiteralType(type: Type): Type { return type.flags & TypeFlags.EnumLiteral ? getBaseTypeOfEnumLiteralType(type) : - type.flags & TypeFlags.StringLikeLiteral ? stringType : + type.flags & TypeFlags.StringLiteral ? stringType : type.flags & TypeFlags.NumberLiteral ? numberType : type.flags & TypeFlags.BigIntLiteral ? bigintType : type.flags & TypeFlags.BooleanLiteral ? booleanType : @@ -19467,7 +19535,7 @@ namespace ts { function getWidenedLiteralType(type: Type): Type { return type.flags & TypeFlags.EnumLiteral && isFreshLiteralType(type) ? getBaseTypeOfEnumLiteralType(type) : - type.flags & TypeFlags.StringLikeLiteral && isFreshLiteralType(type) ? stringType : + type.flags & TypeFlags.StringLiteral && isFreshLiteralType(type) ? stringType : type.flags & TypeFlags.NumberLiteral && isFreshLiteralType(type) ? numberType : type.flags & TypeFlags.BigIntLiteral && isFreshLiteralType(type) ? bigintType : type.flags & TypeFlags.BooleanLiteral && isFreshLiteralType(type) ? booleanType : @@ -20961,7 +21029,7 @@ namespace ts { } function isTypeOrBaseIdenticalTo(s: Type, t: Type) { - return isTypeIdenticalTo(s, t) || !!(t.flags & TypeFlags.String && s.flags & TypeFlags.StringLikeLiteral || t.flags & TypeFlags.Number && s.flags & TypeFlags.NumberLiteral); + return isTypeIdenticalTo(s, t) || !!(t.flags & TypeFlags.String && s.flags & TypeFlags.StringLiteral || t.flags & TypeFlags.Number && s.flags & TypeFlags.NumberLiteral); } function isTypeCloselyMatchedBy(s: Type, t: Type) { @@ -21216,8 +21284,12 @@ namespace ts { case SyntaxKind.PropertyAccessExpression: case SyntaxKind.ElementAccessExpression: return isAccessExpression(target) && - getAccessedPropertyName(source) === getAccessedPropertyName(target) && - isMatchingReference((source).expression, target.expression); + getAccessedPropertyName(source as AccessExpression) === getAccessedPropertyName(target) && + isMatchingReference((source as AccessExpression).expression, target.expression); + case SyntaxKind.QualifiedName: + return isAccessExpression(target) && + (source as QualifiedName).right.escapedText === getAccessedPropertyName(target) && + isMatchingReference((source as QualifiedName).left, target.expression); case SyntaxKind.BinaryExpression: return (isBinaryExpression(source) && source.operatorToken.kind === SyntaxKind.CommaToken && isMatchingReference(source.right, target)); } @@ -21668,7 +21740,27 @@ namespace ts { if (type.flags & TypeFlags.Union) { const types = (type).types; const filtered = filter(types, f); - return filtered === types ? type : getUnionTypeFromSortedList(filtered, (type).objectFlags); + if (filtered === types) { + return type; + } + const origin = (type).origin; + let newOrigin: Type | undefined; + if (origin && origin.flags & TypeFlags.Union) { + // If the origin type is a (denormalized) union type, filter its non-union constituents. If that ends + // up removing a smaller number of types than in the normalized constituent set (meaning some of the + // filtered types are within nested unions in the origin), then we can't construct a new origin type. + // Otherwise, if we have exactly one type left in the origin set, return that as the filtered type. + // Otherwise, construct a new filtered origin type. + const originTypes = (origin).types; + const originFiltered = filter(originTypes, t => !!(t.flags & TypeFlags.Union) || f(t)); + if (originTypes.length - originFiltered.length === types.length - filtered.length) { + if (originFiltered.length === 1) { + return originFiltered[0]; + } + newOrigin = createOriginUnionOrIntersectionType(TypeFlags.Union, originFiltered); + } + } + return getUnionTypeFromSortedList(filtered, (type).objectFlags, /*aliasSymbol*/ undefined, /*aliasTypeArguments*/ undefined, newOrigin); } return type.flags & TypeFlags.Never || f(type) ? type : neverType; } @@ -22107,7 +22199,7 @@ namespace ts { if (flowDepth === 2000) { // We have made 2000 recursive invocations. To avoid overflowing the call stack we report an error // and disable further control flow analysis in the containing function or module body. - tracing.instant(tracing.Phase.CheckTypes, "getTypeAtFlowNode_DepthLimit", { flowId: flow.id }); + tracing?.instant(tracing.Phase.CheckTypes, "getTypeAtFlowNode_DepthLimit", { flowId: flow.id }); flowAnalysisDisabled = true; reportFlowControlError(reference); return errorType; @@ -22543,10 +22635,13 @@ namespace ts { if (propName === undefined) { return type; } - const propType = getTypeOfPropertyOfType(type, propName); + const includesNullable = strictNullChecks && maybeTypeOfKind(type, TypeFlags.Nullable); + const removeNullable = includesNullable && isOptionalChain(access); + let propType = getTypeOfPropertyOfType(removeNullable ? getTypeWithFacts(type, TypeFacts.NEUndefinedOrNull) : type, propName); if (!propType) { return type; } + propType = removeNullable ? getOptionalType(propType) : propType; const narrowedPropType = narrowType(propType); return filterType(type, t => { const discriminantType = getTypeOfPropertyOrIndexSignature(t, propName); @@ -22999,10 +23094,15 @@ namespace ts { } } - // If the candidate type is a subtype of the target type, narrow to the candidate type, - // if the target type is a subtype of the candidate type, narrow to the target type, - // otherwise, narrow to an intersection of the two types. - return isTypeSubtypeOf(candidate, type) ? candidate : isTypeSubtypeOf(type, candidate) ? type : getIntersectionType([type, candidate]); + // If the candidate type is a subtype of the target type, narrow to the candidate type. + // Otherwise, if the target type is assignable to the candidate type, keep the target type. + // Otherwise, if the candidate type is assignable to the target type, narrow to the candidate + // type. Otherwise, the types are completely unrelated, so narrow to an intersection of the + // two types. + return isTypeSubtypeOf(candidate, type) ? candidate : + isTypeAssignableTo(type, candidate) ? type : + isTypeAssignableTo(candidate, type) ? candidate : + getIntersectionType([type, candidate]); } function narrowTypeByCallExpression(type: Type, callExpression: CallExpression, assumeTrue: boolean): Type { @@ -23198,7 +23298,13 @@ namespace ts { if (isNonLocalAlias(symbol, /*excludes*/ SymbolFlags.Value) && !isInTypeQuery(location) && !getTypeOnlyAliasDeclaration(symbol)) { const target = resolveAlias(symbol); if (target.flags & SymbolFlags.Value) { - if (compilerOptions.preserveConstEnums && isExportOrExportExpression(location) || !isConstEnumOrConstEnumOnlyModule(target)) { + // An alias resolving to a const enum cannot be elided if (1) 'isolatedModules' is enabled + // (because the const enum value will not be inlined), or if (2) the alias is an export + // of a const enum declaration that will be preserved. + if (compilerOptions.isolatedModules || + shouldPreserveConstEnums(compilerOptions) && isExportOrExportExpression(location) || + !isConstEnumOrConstEnumOnlyModule(target) + ) { markAliasSymbolAsReferenced(symbol); } else { @@ -23244,7 +23350,7 @@ namespace ts { const localOrExportSymbol = getExportSymbolOfValueSymbolIfExported(symbol); const sourceSymbol = localOrExportSymbol.flags & SymbolFlags.Alias ? resolveAlias(localOrExportSymbol) : localOrExportSymbol; if (getDeclarationNodeFlagsFromSymbol(sourceSymbol) & NodeFlags.Deprecated && isUncalledFunctionReference(node, sourceSymbol)) { - errorOrSuggestion(/* isError */ false, node, Diagnostics._0_is_deprecated, node.escapedText as string); + addDeprecatedSuggestion(node, sourceSymbol.declarations, node.escapedText as string); } let declaration: Declaration | undefined = localOrExportSymbol.valueDeclaration; @@ -24397,7 +24503,7 @@ namespace ts { const objectLiteral = element.parent; const type = getApparentTypeOfContextualType(objectLiteral, contextFlags); if (type) { - if (!hasNonBindableDynamicName(element)) { + if (hasBindableName(element)) { // For a (non-symbol) computed property, there is no reason to look up the name // in the type. It will just be "__computed", which does not appear in any // SymbolTable. @@ -24655,6 +24761,8 @@ namespace ts { const tag = isInJSFile(parent) ? getJSDocTypeTag(parent) : undefined; return tag ? getTypeFromTypeNode(tag.typeExpression.type) : getContextualType(parent, contextFlags); } + case SyntaxKind.NonNullExpression: + return getContextualType(parent as NonNullExpression, contextFlags); case SyntaxKind.JsxExpression: return getContextualTypeForJsxExpression(parent); case SyntaxKind.JsxAttribute: @@ -24748,16 +24856,19 @@ namespace ts { function getJsxManagedAttributesFromLocatedAttributes(context: JsxOpeningLikeElement, ns: Symbol, attributesType: Type) { const managedSym = getJsxLibraryManagedAttributes(ns); if (managedSym) { - const declaredManagedType = getDeclaredTypeOfSymbol(managedSym); + const declaredManagedType = getDeclaredTypeOfSymbol(managedSym); // fetches interface type, or initializes symbol links type parmaeters const ctorType = getStaticTypeOfReferencedJsxConstructor(context); + if (managedSym.flags & SymbolFlags.TypeAlias) { + const params = getSymbolLinks(managedSym).typeParameters; + if (length(params) >= 2) { + const args = fillMissingTypeArguments([ctorType, attributesType], params, 2, isInJSFile(context)); + return getTypeAliasInstantiation(managedSym, args); + } + } if (length((declaredManagedType as GenericType).typeParameters) >= 2) { const args = fillMissingTypeArguments([ctorType, attributesType], (declaredManagedType as GenericType).typeParameters, 2, isInJSFile(context)); return createTypeReference((declaredManagedType as GenericType), args); } - else if (length(declaredManagedType.aliasTypeArguments) >= 2) { - const args = fillMissingTypeArguments([ctorType, attributesType], declaredManagedType.aliasTypeArguments, 2, isInJSFile(context)); - return getTypeAliasInstantiation(declaredManagedType.aliasSymbol!, args); - } } return attributesType; } @@ -26254,7 +26365,11 @@ namespace ts { } prop = getPropertyOfType(apparentType, right.escapedText); } - if (isIdentifier(left) && parentSymbol && !(prop && isConstEnumOrConstEnumOnlyModule(prop))) { + // In `Foo.Bar.Baz`, 'Foo' is not referenced if 'Bar' is a const enum or a module containing only const enums. + // The exceptions are: + // 1. if 'isolatedModules' is enabled, because the const enum value will not be inlined, and + // 2. if 'preserveConstEnums' is enabled and the expression is itself an export, e.g. `export = Foo.Bar.Baz`. + if (isIdentifier(left) && parentSymbol && (compilerOptions.isolatedModules || !(prop && isConstEnumOrConstEnumOnlyModule(prop)) || shouldPreserveConstEnums(compilerOptions) && isExportOrExportExpression(node))) { markAliasReferenced(parentSymbol, node); } @@ -26290,7 +26405,7 @@ namespace ts { } else { if (getDeclarationNodeFlagsFromSymbol(prop) & NodeFlags.Deprecated && isUncalledFunctionReference(node, prop)) { - errorOrSuggestion(/* isError */ false, right, Diagnostics._0_is_deprecated, right.escapedText as string); + addDeprecatedSuggestion(right, prop.declarations, right.escapedText as string); } checkPropertyNotUsedBeforeDeclaration(prop, node, right); markPropertyAsReferenced(prop, node, left.kind === SyntaxKind.ThisKeyword); @@ -26310,8 +26425,7 @@ namespace ts { // assignment target, and the referenced property was declared as a variable, property, // accessor, or optional method. const assignmentKind = getAssignmentTargetKind(node); - if (!isAccessExpression(node) || - assignmentKind === AssignmentKind.Definite || + if (assignmentKind === AssignmentKind.Definite || prop && !(prop.flags & (SymbolFlags.Variable | SymbolFlags.Property | SymbolFlags.Accessor)) && !(prop.flags & SymbolFlags.Method && propType.flags & TypeFlags.Union)) { return propType; } @@ -26323,7 +26437,7 @@ namespace ts { // and if we are in a constructor of the same class as the property declaration, assume that // the property is uninitialized at the top of the control flow. let assumeUninitialized = false; - if (strictNullChecks && strictPropertyInitialization && node.expression.kind === SyntaxKind.ThisKeyword) { + if (strictNullChecks && strictPropertyInitialization && isAccessExpression(node) && node.expression.kind === SyntaxKind.ThisKeyword) { const declaration = prop && prop.valueDeclaration; if (declaration && isInstancePropertyWithoutInitializer(declaration)) { const flowContainer = getControlFlowContainer(node); @@ -27044,6 +27158,16 @@ namespace ts { return getInferredTypes(context); } + function getThisArgumentType(thisArgumentNode: LeftHandSideExpression | undefined) { + if (!thisArgumentNode) { + return voidType; + } + const thisArgumentType = checkExpression(thisArgumentNode); + return isOptionalChainRoot(thisArgumentNode.parent) ? getNonNullableType(thisArgumentType) : + isOptionalChain(thisArgumentNode.parent) ? removeOptionalTypeMarker(thisArgumentType) : + thisArgumentType; + } + function inferTypeArguments(node: CallLikeExpression, signature: Signature, args: readonly Expression[], checkMode: CheckMode, context: InferenceContext): Type[] { if (isJsxOpeningLikeElement(node)) { return inferJsxTypeArguments(node, signature, checkMode, context); @@ -27099,8 +27223,7 @@ namespace ts { const thisType = getThisTypeOfSignature(signature); if (thisType) { const thisArgumentNode = getThisArgumentOfCall(node); - const thisArgumentType = thisArgumentNode ? checkExpression(thisArgumentNode) : voidType; - inferTypes(context.inferences, thisArgumentType, thisType); + inferTypes(context.inferences, getThisArgumentType(thisArgumentNode), thisType); } for (let i = 0; i < argCount; i++) { @@ -27341,20 +27464,7 @@ namespace ts { // If the signature's 'this' type is voidType, then the check is skipped -- anything is compatible. // If the expression is a new expression, then the check is skipped. const thisArgumentNode = getThisArgumentOfCall(node); - let thisArgumentType: Type; - if (thisArgumentNode) { - thisArgumentType = checkExpression(thisArgumentNode); - if (isOptionalChainRoot(thisArgumentNode.parent)) { - thisArgumentType = getNonNullableType(thisArgumentType); - } - else if (isOptionalChain(thisArgumentNode.parent)) { - thisArgumentType = removeOptionalTypeMarker(thisArgumentType); - } - } - else { - thisArgumentType = voidType; - } - + const thisArgumentType = getThisArgumentType(thisArgumentNode); const errorNode = reportErrors ? (thisArgumentNode || node) : undefined; const headMessage = Diagnostics.The_this_context_of_type_0_is_not_assignable_to_method_s_this_of_type_1; if (!checkTypeRelatedTo(thisArgumentType, thisType, relation, errorNode, headMessage, containingMessageChain, errorOutputContainer)) { @@ -28873,7 +28983,7 @@ namespace ts { if (returnType.flags & TypeFlags.ESSymbolLike && isSymbolOrSymbolForCall(node)) { return getESSymbolLikeTypeForNode(walkUpParenthesizedExpressions(node.parent)); } - if (node.kind === SyntaxKind.CallExpression && node.parent.kind === SyntaxKind.ExpressionStatement && + if (node.kind === SyntaxKind.CallExpression && !node.questionDotToken && node.parent.kind === SyntaxKind.ExpressionStatement && returnType.flags & TypeFlags.Void && getTypePredicateOfSignature(signature)) { if (!isDottedName(node.expression)) { error(node.expression, Diagnostics.Assertions_require_the_call_target_to_be_an_identifier_or_qualified_name); @@ -28899,7 +29009,8 @@ namespace ts { function checkDeprecatedSignature(signature: Signature, node: CallLikeExpression) { if (signature.declaration && signature.declaration.flags & NodeFlags.Deprecated) { const suggestionNode = getDeprecatedSuggestionNode(node); - errorOrSuggestion(/*isError*/ false, suggestionNode, Diagnostics._0_is_deprecated, signatureToString(signature)); + const name = tryGetPropertyAccessOrIdentifierToString(getInvokedExpression(node)); + addDeprecatedSuggestionWithSignature(suggestionNode, signature.declaration, name, signatureToString(signature)); } } @@ -31177,7 +31288,7 @@ namespace ts { texts.push(span.literal.text); types.push(isTypeAssignableTo(type, templateConstraintType) ? type : stringType); } - return getFreshTypeOfLiteralType(getTemplateLiteralType(texts, types)); + return isConstContext(node) ? getTemplateLiteralType(texts, types) : stringType; } function getContextNode(node: Expression): Node { @@ -31198,7 +31309,7 @@ namespace ts { // We strip literal freshness when an appropriate contextual type is present such that contextually typed // literals always preserve their literal types (otherwise they might widen during type inference). An alternative // here would be to not mark contextually typed literals as fresh in the first place. - const result = maybeTypeOfKind(type, TypeFlags.FreshableLiteral) && isLiteralOfContextualType(type, instantiateContextualType(contextualType, node)) ? + const result = maybeTypeOfKind(type, TypeFlags.Literal) && isLiteralOfContextualType(type, instantiateContextualType(contextualType, node)) ? getRegularTypeOfLiteralType(type) : type; return result; } @@ -31288,7 +31399,7 @@ namespace ts { // this a literal context for literals of that primitive type. For example, given a // type parameter 'T extends string', infer string literal types for T. const constraint = getBaseConstraintOfType(contextualType) || unknownType; - return maybeTypeOfKind(constraint, TypeFlags.String) && maybeTypeOfKind(candidateType, TypeFlags.StringLikeLiteral) || + return maybeTypeOfKind(constraint, TypeFlags.String) && maybeTypeOfKind(candidateType, TypeFlags.StringLiteral) || maybeTypeOfKind(constraint, TypeFlags.Number) && maybeTypeOfKind(candidateType, TypeFlags.NumberLiteral) || maybeTypeOfKind(constraint, TypeFlags.BigInt) && maybeTypeOfKind(candidateType, TypeFlags.BigIntLiteral) || maybeTypeOfKind(constraint, TypeFlags.ESSymbol) && maybeTypeOfKind(candidateType, TypeFlags.UniqueESSymbol) || @@ -31296,7 +31407,7 @@ namespace ts { } // If the contextual type is a literal of a particular primitive type, we consider this a // literal context for all literals of that primitive type. - return !!(contextualType.flags & (TypeFlags.StringLikeLiteral | TypeFlags.Index | TypeFlags.StringMapping) && maybeTypeOfKind(candidateType, TypeFlags.StringLikeLiteral) || + return !!(contextualType.flags & (TypeFlags.StringLiteral | TypeFlags.Index | TypeFlags.TemplateLiteral | TypeFlags.StringMapping) && maybeTypeOfKind(candidateType, TypeFlags.StringLiteral) || contextualType.flags & TypeFlags.NumberLiteral && maybeTypeOfKind(candidateType, TypeFlags.NumberLiteral) || contextualType.flags & TypeFlags.BigIntLiteral && maybeTypeOfKind(candidateType, TypeFlags.BigIntLiteral) || contextualType.flags & TypeFlags.BooleanLiteral && maybeTypeOfKind(candidateType, TypeFlags.BooleanLiteral) || @@ -31567,7 +31678,7 @@ namespace ts { } function checkExpression(node: Expression | QualifiedName, checkMode?: CheckMode, forceTuple?: boolean): Type { - tracing.push(tracing.Phase.Check, "checkExpression", { kind: node.kind, pos: node.pos, end: node.end }); + tracing?.push(tracing.Phase.Check, "checkExpression", { kind: node.kind, pos: node.pos, end: node.end }); const saveCurrentNode = currentNode; currentNode = node; instantiationCount = 0; @@ -31577,7 +31688,7 @@ namespace ts { checkConstEnumAccess(node, type); } currentNode = saveCurrentNode; - tracing.pop(); + tracing?.pop(); return type; } @@ -32288,7 +32399,7 @@ namespace ts { if (isPrivateIdentifier(node.name)) { error(node.name, Diagnostics.An_accessor_cannot_be_named_with_a_private_identifier); } - if (!hasNonBindableDynamicName(node)) { + if (hasBindableName(node)) { // TypeScript 1.0 spec (April 2014): 8.4.3 // Accessors for the same member name must specify the same accessibility. const otherKind = node.kind === SyntaxKind.GetAccessor ? SyntaxKind.SetAccessor : SyntaxKind.GetAccessor; @@ -32384,7 +32495,11 @@ namespace ts { const symbol = getNodeLinks(node).resolvedSymbol; if (symbol) { if (some(symbol.declarations, d => isTypeDeclaration(d) && !!(d.flags & NodeFlags.Deprecated))) { - errorOrSuggestion(/* isError */ false, getDeprecatedSuggestionNode(node), Diagnostics._0_is_deprecated, symbol.escapedName as string); + addDeprecatedSuggestion( + getDeprecatedSuggestionNode(node), + symbol.declarations, + symbol.escapedName as string + ); } if (type.flags & TypeFlags.Enum && symbol.flags & SymbolFlags.EnumMember) { error(node, Diagnostics.Enum_type_0_has_members_with_initializers_that_are_not_literals, typeToString(type)); @@ -33614,7 +33729,7 @@ namespace ts { checkComputedPropertyName(node.name); } - if (!hasNonBindableDynamicName(node)) { + if (hasBindableName(node)) { // first we want to check the local symbol that contain this declaration // - if node.localSymbol !== undefined - this is current declaration is exported and localSymbol points to the local symbol // - if node.localSymbol === undefined - this node is non-exported so we can just pick the result of getSymbolOfNode @@ -33839,13 +33954,16 @@ namespace ts { } function isValidUnusedLocalDeclaration(declaration: Declaration): boolean { - if (isBindingElement(declaration) && isIdentifierThatStartsWithUnderscore(declaration.name)) { - return !!findAncestor(declaration.parent, ancestor => - isArrayBindingPattern(ancestor) || isVariableDeclaration(ancestor) || isVariableDeclarationList(ancestor) ? false : - isForOfStatement(ancestor) ? true : "quit" - ); + if (isBindingElement(declaration)) { + if (isObjectBindingPattern(declaration.parent)) { + /** + * ignore starts with underscore names _ + * const { a: _a } = { a: 1 } + */ + return !!(declaration.propertyName && isIdentifierThatStartsWithUnderscore(declaration.name)); + } + return isIdentifierThatStartsWithUnderscore(declaration.name); } - return isAmbientModule(declaration) || (isVariableDeclaration(declaration) && isForInOrOfStatement(declaration.parent.parent) || isImportedDeclaration(declaration)) && isIdentifierThatStartsWithUnderscore(declaration.name!); } @@ -34376,10 +34494,10 @@ namespace ts { } function checkVariableDeclaration(node: VariableDeclaration) { - tracing.push(tracing.Phase.Check, "checkVariableDeclaration", { kind: node.kind, pos: node.pos, end: node.end }); + tracing?.push(tracing.Phase.Check, "checkVariableDeclaration", { kind: node.kind, pos: node.pos, end: node.end }); checkGrammarVariableDeclaration(node); checkVariableLikeDeclaration(node); - tracing.pop(); + tracing?.pop(); } function checkBindingElement(node: BindingElement) { @@ -35614,7 +35732,7 @@ namespace ts { // Only process instance properties with computed names here. // Static properties cannot be in conflict with indexers, // and properties with literal names were already checked. - if (!hasSyntacticModifier(member, ModifierFlags.Static) && hasNonBindableDynamicName(member)) { + if (!hasSyntacticModifier(member, ModifierFlags.Static) && !hasBindableName(member)) { const symbol = getSymbolOfNode(member); const propType = getTypeOfSymbol(symbol); checkIndexConstraintForProperty(symbol, propType, type, declaredStringIndexer, stringIndexType, IndexKind.String); @@ -36628,7 +36746,7 @@ namespace ts { if (symbol.flags & SymbolFlags.ValueModule && !inAmbientContext && symbol.declarations.length > 1 - && isInstantiatedModule(node, !!compilerOptions.preserveConstEnums || !!compilerOptions.isolatedModules)) { + && isInstantiatedModule(node, shouldPreserveConstEnums(compilerOptions))) { const firstNonAmbientClassOrFunc = getFirstNonAmbientClassOrFunctionDeclaration(symbol); if (firstNonAmbientClassOrFunc) { if (getSourceFileOfNode(node) !== getSourceFileOfNode(firstNonAmbientClassOrFunc)) { @@ -36828,7 +36946,7 @@ namespace ts { } if (isImportSpecifier(node) && every(target.declarations, d => !!(getCombinedNodeFlags(d) & NodeFlags.Deprecated))) { - errorOrSuggestion(/* isError */ false, node.name, Diagnostics._0_is_deprecated, symbol.escapedName as string); + addDeprecatedSuggestion(node.name, target.declarations, symbol.escapedName as string); } } } @@ -37457,7 +37575,7 @@ namespace ts { } function checkDeferredNode(node: Node) { - tracing.push(tracing.Phase.Check, "checkDeferredNode", { kind: node.kind, pos: node.pos, end: node.end }); + tracing?.push(tracing.Phase.Check, "checkDeferredNode", { kind: node.kind, pos: node.pos, end: node.end }); const saveCurrentNode = currentNode; currentNode = node; instantiationCount = 0; @@ -37493,16 +37611,16 @@ namespace ts { break; } currentNode = saveCurrentNode; - tracing.pop(); + tracing?.pop(); } function checkSourceFile(node: SourceFile) { - tracing.push(tracing.Phase.Check, "checkSourceFile", { path: node.path }, /*separateBeginAndEnd*/ true); + tracing?.push(tracing.Phase.Check, "checkSourceFile", { path: node.path }, /*separateBeginAndEnd*/ true); performance.mark("beforeCheck"); checkSourceFileWorker(node); performance.mark("afterCheck"); performance.measure("Check", "beforeCheck", "afterCheck"); - tracing.pop(); + tracing?.pop(); } function unusedIsError(kind: UnusedKind, isAmbient: boolean): boolean { @@ -38551,7 +38669,7 @@ namespace ts { // const enums and modules that contain only const enums are not considered values from the emit perspective // unless 'preserveConstEnums' option is set to true return !!(target.flags & SymbolFlags.Value) && - (compilerOptions.preserveConstEnums || !isConstEnumOrConstEnumOnlyModule(target)); + (shouldPreserveConstEnums(compilerOptions) || !isConstEnumOrConstEnumOnlyModule(target)); } function isConstEnumOrConstEnumOnlyModule(s: Symbol): boolean { @@ -38561,13 +38679,14 @@ namespace ts { function isReferencedAliasDeclaration(node: Node, checkChildren?: boolean): boolean { if (isAliasSymbolDeclaration(node)) { const symbol = getSymbolOfNode(node); - if (symbol && getSymbolLinks(symbol).referenced) { + const links = symbol && getSymbolLinks(symbol); + if (links?.referenced) { return true; } const target = getSymbolLinks(symbol!).target; // TODO: GH#18217 if (target && getEffectiveModifierFlags(node) & ModifierFlags.Export && target.flags & SymbolFlags.Value && - (compilerOptions.preserveConstEnums || !isConstEnumOrConstEnumOnlyModule(target))) { + (shouldPreserveConstEnums(compilerOptions) || !isConstEnumOrConstEnumOnlyModule(target))) { // An `export import ... =` of a value symbol is always considered referenced return true; } @@ -38832,8 +38951,7 @@ namespace ts { function isLiteralConstDeclaration(node: VariableDeclaration | PropertyDeclaration | PropertySignature | ParameterDeclaration): boolean { if (isDeclarationReadonly(node) || isVariableDeclaration(node) && isVarConst(node)) { - const type = getTypeOfSymbol(getSymbolOfNode(node)); - return !!(type.flags & TypeFlags.Literal) && isFreshLiteralType(type); + return isFreshLiteralType(getTypeOfSymbol(getSymbolOfNode(node))); } return false; } @@ -40073,19 +40191,33 @@ namespace ts { } if (forInOrOfStatement.kind === SyntaxKind.ForOfStatement && forInOrOfStatement.awaitModifier) { - if ((forInOrOfStatement.flags & NodeFlags.AwaitContext) === NodeFlags.None) { - // use of 'for-await-of' in non-async function + if (!(forInOrOfStatement.flags & NodeFlags.AwaitContext)) { const sourceFile = getSourceFileOfNode(forInOrOfStatement); - if (!hasParseDiagnostics(sourceFile)) { - const diagnostic = createDiagnosticForNode(forInOrOfStatement.awaitModifier, Diagnostics.A_for_await_of_statement_is_only_allowed_within_an_async_function_or_async_generator); - const func = getContainingFunction(forInOrOfStatement); - if (func && func.kind !== SyntaxKind.Constructor) { - Debug.assert((getFunctionFlags(func) & FunctionFlags.Async) === 0, "Enclosing function should never be an async function."); - const relatedInfo = createDiagnosticForNode(func, Diagnostics.Did_you_mean_to_mark_this_function_as_async); - addRelatedInfo(diagnostic, relatedInfo); - } - diagnostics.add(diagnostic); - return true; + if (isInTopLevelContext(forInOrOfStatement)) { + if (!hasParseDiagnostics(sourceFile)) { + if (!isEffectiveExternalModule(sourceFile, compilerOptions)) { + diagnostics.add(createDiagnosticForNode(forInOrOfStatement.awaitModifier, + Diagnostics.for_await_loops_are_only_allowed_at_the_top_level_of_a_file_when_that_file_is_a_module_but_this_file_has_no_imports_or_exports_Consider_adding_an_empty_export_to_make_this_file_a_module)); + } + if ((moduleKind !== ModuleKind.ESNext && moduleKind !== ModuleKind.System) || languageVersion < ScriptTarget.ES2017) { + diagnostics.add(createDiagnosticForNode(forInOrOfStatement.awaitModifier, + Diagnostics.Top_level_for_await_loops_are_only_allowed_when_the_module_option_is_set_to_esnext_or_system_and_the_target_option_is_set_to_es2017_or_higher)); + } + } + } + else { + // use of 'for-await-of' in non-async function + if (!hasParseDiagnostics(sourceFile)) { + const diagnostic = createDiagnosticForNode(forInOrOfStatement.awaitModifier, Diagnostics.for_await_loops_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules); + const func = getContainingFunction(forInOrOfStatement); + if (func && func.kind !== SyntaxKind.Constructor) { + Debug.assert((getFunctionFlags(func) & FunctionFlags.Async) === 0, "Enclosing function should never be an async function."); + const relatedInfo = createDiagnosticForNode(func, Diagnostics.Did_you_mean_to_mark_this_function_as_async); + addRelatedInfo(diagnostic, relatedInfo); + } + diagnostics.add(diagnostic); + return true; + } } return false; } diff --git a/src/compiler/commandLineParser.ts b/src/compiler/commandLineParser.ts index 0fb10346440a2..f44eae9455f64 100644 --- a/src/compiler/commandLineParser.ts +++ b/src/compiler/commandLineParser.ts @@ -2617,14 +2617,17 @@ namespace ts { if (ownConfig.extendedConfigPath) { // copy the resolution stack so it is never reused between branches in potential diamond-problem scenarios. resolutionStack = resolutionStack.concat([resolvedPath]); - const extendedConfig = getExtendedConfig(sourceFile, ownConfig.extendedConfigPath, host, basePath, resolutionStack, errors, extendedConfigCache); + const extendedConfig = getExtendedConfig(sourceFile, ownConfig.extendedConfigPath, host, resolutionStack, errors, extendedConfigCache); if (extendedConfig && isSuccessfulParsedTsconfig(extendedConfig)) { const baseRaw = extendedConfig.raw; const raw = ownConfig.raw; + let relativeDifference: string | undefined ; const setPropertyInRawIfNotUndefined = (propertyName: string) => { - const value = raw[propertyName] || baseRaw[propertyName]; - if (value) { - raw[propertyName] = value; + if (!raw[propertyName] && baseRaw[propertyName]) { + raw[propertyName] = map(baseRaw[propertyName], (path: string) => isRootedDiskPath(path) ? path : combinePaths( + relativeDifference ||= convertToRelativePath(getDirectoryPath(ownConfig.extendedConfigPath!), basePath, createGetCanonicalFileName(host.useCaseSensitiveFileNames)), + path + )); } }; setPropertyInRawIfNotUndefined("include"); @@ -2786,7 +2789,6 @@ namespace ts { sourceFile: TsConfigSourceFile | undefined, extendedConfigPath: string, host: ParseConfigHost, - basePath: string, resolutionStack: string[], errors: Push, extendedConfigCache?: ESMap @@ -2801,25 +2803,8 @@ namespace ts { else { extendedResult = readJsonConfigFile(extendedConfigPath, path => host.readFile(path)); if (!extendedResult.parseDiagnostics.length) { - const extendedDirname = getDirectoryPath(extendedConfigPath); - extendedConfig = parseConfig(/*json*/ undefined, extendedResult, host, extendedDirname, + extendedConfig = parseConfig(/*json*/ undefined, extendedResult, host, getDirectoryPath(extendedConfigPath), getBaseFileName(extendedConfigPath), resolutionStack, errors, extendedConfigCache); - - if (isSuccessfulParsedTsconfig(extendedConfig)) { - // Update the paths to reflect base path - const relativeDifference = convertToRelativePath(extendedDirname, basePath, identity); - const updatePath = (path: string) => isRootedDiskPath(path) ? path : combinePaths(relativeDifference, path); - const mapPropertiesInRawIfNotUndefined = (propertyName: string) => { - if (raw[propertyName]) { - raw[propertyName] = map(raw[propertyName], updatePath); - } - }; - - const { raw } = extendedConfig; - mapPropertiesInRawIfNotUndefined("include"); - mapPropertiesInRawIfNotUndefined("exclude"); - mapPropertiesInRawIfNotUndefined("files"); - } } if (extendedConfigCache) { extendedConfigCache.set(path, { extendedResult, extendedConfig }); diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 8162ea6b3eff6..035e0b5ceea2f 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -307,7 +307,7 @@ "category": "Error", "code": 1102 }, - "A 'for-await-of' statement is only allowed within an async function or async generator.": { + "'for await' loops are only allowed within async functions and at the top levels of modules.": { "category": "Error", "code": 1103 }, @@ -1352,6 +1352,15 @@ "category": "Message", "code": 1430 }, + "'for await' loops are only allowed at the top level of a file when that file is a module, but this file has no imports or exports. Consider adding an empty 'export {}' to make this file a module.": { + "category": "Error", + "code": 1431 + }, + "Top-level 'for await' loops are only allowed when the 'module' option is set to 'esnext' or 'system', and the 'target' option is set to 'es2017' or higher.": { + "category": "Error", + "code": 1432 + }, + "The types of '{0}' are incompatible between these types.": { "category": "Error", "code": 2200 @@ -3235,6 +3244,18 @@ "category": "Error", "code": 2797 }, + "The declaration was marked as deprecated here.": { + "category": "Error", + "code": 2798 + }, + "Type produces a tuple type that is too large to represent.": { + "category": "Error", + "code": 2799 + }, + "Expression produces a tuple type that is too large to represent.": { + "category": "Error", + "code": 2800 + }, "Import declaration '{0}' is using private name '{1}'.": { "category": "Error", @@ -3524,6 +3545,10 @@ "category": "Error", "code": 4083 }, + "Exported type alias '{0}' has or is using private name '{1}' from module {2}.": { + "category": "Error", + "code": 4084 + }, "Conflicting definitions for '{0}' found at '{1}' and '{2}'. Consider installing a specific version of this library to resolve the conflict.": { "category": "Error", "code": 4090 @@ -3813,6 +3838,10 @@ "category": "Error", "code": 5090 }, + "Option 'preserveConstEnums' cannot be disabled when 'isolatedModules' is enabled.": { + "category": "Error", + "code": 5091 + }, "Generates a sourcemap for each corresponding '.d.ts' file.": { "category": "Message", @@ -4894,7 +4923,7 @@ "category": "Message", "code": 6384 }, - "'{0}' is deprecated": { + "'{0}' is deprecated.": { "category": "Suggestion", "code": 6385, "reportsDeprecated": true @@ -4903,6 +4932,11 @@ "category": "Message", "code": 6386 }, + "The signature '{0}' of '{1}' is deprecated.": { + "category": "Suggestion", + "code": 6387, + "reportsDeprecated": true + }, "The expected type comes from property '{0}' which is declared here on type '{1}'": { "category": "Message", diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 24174483fdc6d..a2bba125ca8f3 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -340,17 +340,17 @@ namespace ts { sourceFiles: sourceFileOrBundle.sourceFiles.map(file => relativeToBuildInfo(getNormalizedAbsolutePath(file.fileName, host.getCurrentDirectory()))) }; } - tracing.push(tracing.Phase.Emit, "emitJsFileOrBundle", { jsFilePath }); + tracing?.push(tracing.Phase.Emit, "emitJsFileOrBundle", { jsFilePath }); emitJsFileOrBundle(sourceFileOrBundle, jsFilePath, sourceMapFilePath, relativeToBuildInfo); - tracing.pop(); + tracing?.pop(); - tracing.push(tracing.Phase.Emit, "emitDeclarationFileOrBundle", { declarationFilePath }); + tracing?.push(tracing.Phase.Emit, "emitDeclarationFileOrBundle", { declarationFilePath }); emitDeclarationFileOrBundle(sourceFileOrBundle, declarationFilePath, declarationMapPath, relativeToBuildInfo); - tracing.pop(); + tracing?.pop(); - tracing.push(tracing.Phase.Emit, "emitBuildInfo", { buildInfoPath }); + tracing?.push(tracing.Phase.Emit, "emitBuildInfo", { buildInfoPath }); emitBuildInfo(bundleBuildInfo, buildInfoPath); - tracing.pop(); + tracing?.pop(); if (!emitSkipped && emittedFilesList) { if (!emitOnlyDtsFiles) { diff --git a/src/compiler/moduleSpecifiers.ts b/src/compiler/moduleSpecifiers.ts index 38e0a0bc2e3e0..e27f63eb29cda 100644 --- a/src/compiler/moduleSpecifiers.ts +++ b/src/compiler/moduleSpecifiers.ts @@ -255,16 +255,8 @@ namespace ts.moduleSpecifiers { return firstDefined(imports, ({ text }) => pathIsRelative(text) ? hasJSFileExtension(text) : undefined) || false; } - function numberOfDirectorySeparators(str: string) { - const match = str.match(/\//g); - return match ? match.length : 0; - } - function comparePathsByRedirectAndNumberOfDirectorySeparators(a: ModulePath, b: ModulePath) { - return compareBooleans(b.isRedirect, a.isRedirect) || compareValues( - numberOfDirectorySeparators(a.path), - numberOfDirectorySeparators(b.path) - ); + return compareBooleans(b.isRedirect, a.isRedirect) || compareNumberOfDirectorySeparators(a.path, b.path); } function getNearestAncestorDirectoryWithPackageJson(host: ModuleSpecifierResolutionHost, fileName: string) { @@ -286,40 +278,47 @@ namespace ts.moduleSpecifiers { const getCanonicalFileName = hostGetCanonicalFileName(host); const cwd = host.getCurrentDirectory(); const referenceRedirect = host.isSourceOfProjectReferenceRedirect(importedFileName) ? host.getProjectReferenceRedirect(importedFileName) : undefined; - const redirects = host.redirectTargetsMap.get(toPath(importedFileName, cwd, getCanonicalFileName)) || emptyArray; + const importedPath = toPath(importedFileName, cwd, getCanonicalFileName); + const redirects = host.redirectTargetsMap.get(importedPath) || emptyArray; const importedFileNames = [...(referenceRedirect ? [referenceRedirect] : emptyArray), importedFileName, ...redirects]; const targets = importedFileNames.map(f => getNormalizedAbsolutePath(f, cwd)); if (!preferSymlinks) { - const result = forEach(targets, p => cb(p, referenceRedirect === p)); + // Symlinks inside ignored paths are already filtered out of the symlink cache, + // so we only need to remove them from the realpath filenames. + const result = forEach(targets, p => !containsIgnoredPath(p) && cb(p, referenceRedirect === p)); if (result) return result; } const links = host.getSymlinkCache ? host.getSymlinkCache() : discoverProbableSymlinks(host.getSourceFiles(), getCanonicalFileName, cwd); - const symlinkedDirectories = links.getSymlinkedDirectories(); - const useCaseSensitiveFileNames = !host.useCaseSensitiveFileNames || host.useCaseSensitiveFileNames(); - const result = symlinkedDirectories && forEachEntry(symlinkedDirectories, (resolved, path) => { - if (resolved === false) return undefined; - if (startsWithDirectory(importingFileName, resolved.realPath, getCanonicalFileName)) { - return undefined; // Don't want to a package to globally import from itself + const symlinkedDirectories = links.getSymlinkedDirectoriesByRealpath(); + const fullImportedFileName = getNormalizedAbsolutePath(importedFileName, cwd); + const result = symlinkedDirectories && forEachAncestorDirectory(getDirectoryPath(fullImportedFileName), realPathDirectory => { + const symlinkDirectories = symlinkedDirectories.get(ensureTrailingDirectorySeparator(toPath(realPathDirectory, cwd, getCanonicalFileName))); + if (!symlinkDirectories) return undefined; // Continue to ancestor directory + + // Don't want to a package to globally import from itself (importNameCodeFix_symlink_own_package.ts) + if (startsWithDirectory(importingFileName, realPathDirectory, getCanonicalFileName)) { + return false; // Stop search, each ancestor directory will also hit this condition } return forEach(targets, target => { - if (!containsPath(resolved.real, target, !useCaseSensitiveFileNames)) { + if (!startsWithDirectory(target, realPathDirectory, getCanonicalFileName)) { return; } - const relative = getRelativePathFromDirectory(resolved.real, target, getCanonicalFileName); - const option = resolvePath(path, relative); - if (!host.fileExists || host.fileExists(option)) { + const relative = getRelativePathFromDirectory(realPathDirectory, target, getCanonicalFileName); + for (const symlinkDirectory of symlinkDirectories) { + const option = resolvePath(symlinkDirectory, relative); const result = cb(option, target === referenceRedirect); if (result) return result; } }); }); - return result || - (preferSymlinks ? forEach(targets, p => cb(p, p === referenceRedirect)) : undefined); + return result || (preferSymlinks + ? forEach(targets, p => containsIgnoredPath(p) ? undefined : cb(p, p === referenceRedirect)) + : undefined); } interface ModulePath { diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 6e6f1dcc19777..e27215e7a87c9 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -558,63 +558,56 @@ namespace ts { * and while doing so, handles traversing the structure without relying on the callstack to encode the tree structure. */ export function forEachChildRecursively(rootNode: Node, cbNode: (node: Node, parent: Node) => T | "skip" | undefined, cbNodes?: (nodes: NodeArray, parent: Node) => T | "skip" | undefined): T | undefined { - - const stack: Node[] = [rootNode]; - while (stack.length) { - const parent = stack.pop()!; - const res = visitAllPossibleChildren(parent, gatherPossibleChildren(parent)); - if (res) { - return res; - } - } - - return; - - function gatherPossibleChildren(node: Node) { - const children: (Node | NodeArray)[] = []; - forEachChild(node, addWorkItem, addWorkItem); // By using a stack above and `unshift` here, we emulate a depth-first preorder traversal - return children; - - function addWorkItem(n: Node | NodeArray) { - children.unshift(n); - } - } - - function visitAllPossibleChildren(parent: Node, children: readonly (Node | NodeArray)[]) { - for (const child of children) { - if (isArray(child)) { - if (cbNodes) { - const res = cbNodes(child, parent); - if (res) { - if (res === "skip") continue; - return res; - } - } - - for (let i = child.length - 1; i >= 0; i--) { - const realChild = child[i]; - const res = cbNode(realChild, parent); - if (res) { - if (res === "skip") continue; - return res; - } - stack.push(realChild); - } - } - else { - stack.push(child); - const res = cbNode(child, parent); + const queue: (Node | NodeArray)[] = gatherPossibleChildren(rootNode); + const parents: Node[] = []; // tracks parent references for elements in queue + while (parents.length < queue.length) { + parents.push(rootNode); + } + while (queue.length !== 0) { + const current = queue.pop()!; + const parent = parents.pop()!; + if (isArray(current)) { + if (cbNodes) { + const res = cbNodes(current, parent); if (res) { if (res === "skip") continue; return res; } } + for (let i = current.length - 1; i >= 0; --i) { + queue.push(current[i]); + parents.push(parent); + } + } + else { + const res = cbNode(current, parent); + if (res) { + if (res === "skip") continue; + return res; + } + if (current.kind >= SyntaxKind.FirstNode) { + // add children in reverse order to the queue, so popping gives the first child + for (const child of gatherPossibleChildren(current)) { + queue.push(child); + parents.push(current); + } + } } } } + function gatherPossibleChildren(node: Node) { + const children: (Node | NodeArray)[] = []; + forEachChild(node, addWorkItem, addWorkItem); // By using a stack above and `unshift` here, we emulate a depth-first preorder traversal + return children; + + function addWorkItem(n: Node | NodeArray) { + children.unshift(n); + } + } + export function createSourceFile(fileName: string, sourceText: string, languageVersion: ScriptTarget, setParentNodes = false, scriptKind?: ScriptKind): SourceFile { - tracing.push(tracing.Phase.Parse, "createSourceFile", { path: fileName }, /*separateBeginAndEnd*/ true); + tracing?.push(tracing.Phase.Parse, "createSourceFile", { path: fileName }, /*separateBeginAndEnd*/ true); performance.mark("beforeParse"); let result: SourceFile; @@ -629,7 +622,7 @@ namespace ts { performance.mark("afterParse"); performance.measure("Parse", "beforeParse", "afterParse"); - tracing.pop(); + tracing?.pop(); return result; } @@ -1644,8 +1637,8 @@ namespace ts { // with magic property names like '__proto__'. The 'identifiers' object is used to share a single string instance for // each identifier in order to reduce memory consumption. function createIdentifier(isIdentifier: boolean, diagnosticMessage?: DiagnosticMessage, privateIdentifierDiagnosticMessage?: DiagnosticMessage): Identifier { - identifierCount++; if (isIdentifier) { + identifierCount++; const pos = getNodePos(); // Store original token kind if it is not just an Identifier so we can report appropriate error later in type checker const originalKeywordKind = token(); @@ -1659,6 +1652,12 @@ namespace ts { return createIdentifier(/*isIdentifier*/ true); } + if (token() === SyntaxKind.Unknown && scanner.tryScan(() => scanner.reScanInvalidIdentifier() === SyntaxKind.Identifier)) { + // Scanner has already recorded an 'Invalid character' error, so no need to add another from the parser. + return createIdentifier(/*isIdentifier*/ true); + } + + identifierCount++; // Only for end of file because the error gets reported incorrectly on embedded script tags. const reportAtCurrentPosition = token() === SyntaxKind.EndOfFileToken; @@ -7539,6 +7538,7 @@ namespace ts { function parseTagComments(indent: number, initialMargin?: string): string | undefined { const comments: string[] = []; let state = JSDocState.BeginningOfLine; + let previousWhitespace = true; let margin: number | undefined; function pushComment(text: string) { if (!margin) { @@ -7564,7 +7564,8 @@ namespace ts { indent = 0; break; case SyntaxKind.AtToken: - if (state === JSDocState.SavingBackticks) { + if (state === JSDocState.SavingBackticks || !previousWhitespace && state === JSDocState.SavingComments) { + // @ doesn't start a new tag inside ``, and inside a comment, only after whitespace comments.push(scanner.getTokenText()); break; } @@ -7621,6 +7622,7 @@ namespace ts { pushComment(scanner.getTokenText()); break; } + previousWhitespace = token() === SyntaxKind.WhitespaceTrivia; tok = nextTokenJSDoc(); } @@ -7695,13 +7697,14 @@ namespace ts { skipWhitespaceOrAsterisk(); const { name, isBracketed } = parseBracketNameInPropertyAndParamTag(); - skipWhitespace(); + const indentText = skipWhitespaceOrAsterisk(); if (isNameFirst) { typeExpression = tryParseTypeExpression(); } - const comment = parseTagComments(indent + scanner.getStartPos() - start); + const comment = parseTrailingTagComments(start, getNodePos(), indent, indentText); + const nestedTypeLiteral = target !== PropertyLikeParse.CallbackParameter && parseNestedTypeLiteral(typeExpression, name, target, indent); if (nestedTypeLiteral) { typeExpression = nestedTypeLiteral; diff --git a/src/compiler/path.ts b/src/compiler/path.ts index d4ee8600d7190..6a9374873b1a0 100644 --- a/src/compiler/path.ts +++ b/src/compiler/path.ts @@ -762,7 +762,7 @@ namespace ts { * Determines whether `fileName` starts with the specified `directoryName` using the provided path canonicalization callback. * Comparison is case-sensitive between the canonical paths. * - * @deprecated Use `containsPath` if possible. + * Use `containsPath` if file names are not already reduced and absolute. */ export function startsWithDirectory(fileName: string, directoryName: string, getCanonicalFileName: GetCanonicalFileName): boolean { const canonicalFileName = getCanonicalFileName(fileName); diff --git a/src/compiler/performance.ts b/src/compiler/performance.ts index e1e26831cb18f..3f6c23f2b0735 100644 --- a/src/compiler/performance.ts +++ b/src/compiler/performance.ts @@ -2,7 +2,6 @@ /** Performance measurements for the compiler. */ namespace ts.performance { let perfHooks: PerformanceHooks | undefined; - let perfObserver: PerformanceObserver | undefined; // when set, indicates the implementation of `Performance` to use for user timing. // when unset, indicates user timing is unavailable or disabled. let performanceImpl: Performance | undefined; @@ -41,6 +40,10 @@ namespace ts.performance { } export const nullTimer: Timer = { enter: noop, exit: noop }; + + let enabled = false; + let timeorigin = timestamp(); + const marks = new Map(); const counts = new Map(); const durations = new Map(); @@ -50,7 +53,12 @@ namespace ts.performance { * @param markName The name of the mark. */ export function mark(markName: string) { - performanceImpl?.mark(markName); + if (enabled) { + const count = counts.get(markName) ?? 0; + counts.set(markName, count + 1); + marks.set(markName, timestamp()); + performanceImpl?.mark(markName); + } } /** @@ -63,7 +71,13 @@ namespace ts.performance { * used. */ export function measure(measureName: string, startMarkName?: string, endMarkName?: string) { - performanceImpl?.measure(measureName, startMarkName, endMarkName); + if (enabled) { + const end = (endMarkName !== undefined ? marks.get(endMarkName) : undefined) ?? timestamp(); + const start = (startMarkName !== undefined ? marks.get(startMarkName) : undefined) ?? timeorigin; + const previousDuration = durations.get(measureName) || 0; + durations.set(measureName, previousDuration + (end - start)); + performanceImpl?.measure(measureName, startMarkName, endMarkName); + } } /** @@ -97,35 +111,36 @@ namespace ts.performance { * Indicates whether the performance API is enabled. */ export function isEnabled() { - return !!performanceImpl; + return enabled; } /** Enables (and resets) performance measurements for the compiler. */ - export function enable() { - if (!performanceImpl) { + export function enable(system: System = sys) { + if (!enabled) { + enabled = true; perfHooks ||= tryGetNativePerformanceHooks(); - if (!perfHooks) return false; - perfObserver ||= new perfHooks.PerformanceObserver(updateStatisticsFromList); - perfObserver.observe({ entryTypes: ["mark", "measure"] }); - performanceImpl = perfHooks.performance; + if (perfHooks) { + timeorigin = perfHooks.performance.timeOrigin; + // NodeJS's Web Performance API is currently slower than expected, but we'd still like + // to be able to leverage native trace events when node is run with either `--cpu-prof` + // or `--prof`, if we're running with our own `--generateCpuProfile` flag, or when + // running in debug mode (since its possible to generate a cpu profile while debugging). + if (perfHooks.shouldWriteNativeEvents || system?.cpuProfilingEnabled?.() || system?.debugMode) { + performanceImpl = perfHooks.performance; + } + } } return true; } /** Disables performance measurements for the compiler. */ export function disable() { - perfObserver?.disconnect(); - performanceImpl = undefined; - counts.clear(); - durations.clear(); - } - - function updateStatisticsFromList(list: PerformanceObserverEntryList) { - for (const mark of list.getEntriesByType("mark")) { - counts.set(mark.name, (counts.get(mark.name) || 0) + 1); - } - for (const measure of list.getEntriesByType("measure")) { - durations.set(measure.name, (durations.get(measure.name) || 0) + measure.duration); + if (enabled) { + marks.clear(); + counts.clear(); + durations.clear(); + performanceImpl = undefined; + enabled = false; } } } diff --git a/src/compiler/performanceCore.ts b/src/compiler/performanceCore.ts index acec7f4ce5700..fda2ee88e4178 100644 --- a/src/compiler/performanceCore.ts +++ b/src/compiler/performanceCore.ts @@ -4,6 +4,8 @@ namespace ts { // between browsers and NodeJS: export interface PerformanceHooks { + /** Indicates whether we should write native performance events */ + shouldWriteNativeEvents: boolean; performance: Performance; PerformanceObserver: PerformanceObserverConstructor; } @@ -37,6 +39,7 @@ namespace ts { export type PerformanceEntryList = PerformanceEntry[]; // Browser globals for the Web Performance User Timings API + declare const process: any; declare const performance: Performance | undefined; declare const PerformanceObserver: PerformanceObserverConstructor | undefined; @@ -55,6 +58,10 @@ namespace ts { typeof PerformanceObserver === "function" && hasRequiredAPI(performance, PerformanceObserver)) { return { + // For now we always write native performance events when running in the browser. We may + // make this conditional in the future if we find that native web performance hooks + // in the browser also slow down compilation. + shouldWriteNativeEvents: true, performance, PerformanceObserver }; @@ -62,10 +69,12 @@ namespace ts { } function tryGetNodePerformanceHooks(): PerformanceHooks | undefined { - if (typeof module === "object" && typeof require === "function") { + if (typeof process !== "undefined" && process.nextTick && !process.browser && typeof module === "object" && typeof require === "function") { try { - const { performance, PerformanceObserver } = require("perf_hooks") as typeof import("perf_hooks"); - if (hasRequiredAPI(performance, PerformanceObserver)) { + let performance: Performance; + const { performance: nodePerformance, PerformanceObserver } = require("perf_hooks") as typeof import("perf_hooks"); + if (hasRequiredAPI(nodePerformance, PerformanceObserver)) { + performance = nodePerformance; // There is a bug in Node's performance.measure prior to 12.16.3/13.13.0 that does not // match the Web Performance API specification. Node's implementation did not allow // optional `start` and `end` arguments for `performance.measure`. @@ -73,26 +82,25 @@ namespace ts { const version = new Version(process.versions.node); const range = new VersionRange("<12.16.3 || 13 <13.13"); if (range.test(version)) { - return { - performance: { - get timeOrigin() { return performance.timeOrigin; }, - now() { return performance.now(); }, - mark(name) { return performance.mark(name); }, - measure(name, start = "nodeStart", end?) { - if (end === undefined) { - end = "__performance.measure-fix__"; - performance.mark(end); - } - performance.measure(name, start, end); - if (end === "__performance.measure-fix__") { - performance.clearMarks("__performance.measure-fix__"); - } + performance = { + get timeOrigin() { return nodePerformance.timeOrigin; }, + now() { return nodePerformance.now(); }, + mark(name) { return nodePerformance.mark(name); }, + measure(name, start = "nodeStart", end?) { + if (end === undefined) { + end = "__performance.measure-fix__"; + nodePerformance.mark(end); } - }, - PerformanceObserver + nodePerformance.measure(name, start, end); + if (end === "__performance.measure-fix__") { + nodePerformance.clearMarks("__performance.measure-fix__"); + } + } }; } return { + // By default, only write native events when generating a cpu profile or using the v8 profiler. + shouldWriteNativeEvents: false, performance, PerformanceObserver }; diff --git a/src/compiler/program.ts b/src/compiler/program.ts index 0756ac92f3071..8cf16a806ecfd 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -407,7 +407,7 @@ namespace ts { const lineEnd = i < lastLineInFile ? getPositionOfLineAndCharacter(file, i + 1, 0) : file.text.length; let lineContent = file.text.slice(lineStart, lineEnd); lineContent = lineContent.replace(/\s+$/g, ""); // trim from end - lineContent = lineContent.replace("\t", " "); // convert tabs to single spaces + lineContent = lineContent.replace(/\t/g, " "); // convert tabs to single spaces // Output the gutter and the actual contents of the line. context += indent + formatColorAndReset(padLeft(i + 1 + "", gutterWidth), gutterStyleSequence) + gutterSeparator; @@ -833,7 +833,7 @@ namespace ts { // Track source files that are source files found by searching under node_modules, as these shouldn't be compiled. const sourceFilesFoundSearchingNodeModules = new Map(); - tracing.push(tracing.Phase.Program, "createProgram", { configFilePath: options.configFilePath, rootDir: options.rootDir }, /*separateBeginAndEnd*/ true); + tracing?.push(tracing.Phase.Program, "createProgram", { configFilePath: options.configFilePath, rootDir: options.rootDir }, /*separateBeginAndEnd*/ true); performance.mark("beforeProgram"); const host = createProgramOptions.host || createCompilerHost(options); @@ -919,15 +919,15 @@ namespace ts { forEachResolvedProjectReference }); - tracing.push(tracing.Phase.Program, "shouldProgramCreateNewSourceFiles", { hasOldProgram: !!oldProgram }); + tracing?.push(tracing.Phase.Program, "shouldProgramCreateNewSourceFiles", { hasOldProgram: !!oldProgram }); const shouldCreateNewSourceFile = shouldProgramCreateNewSourceFiles(oldProgram, options); - tracing.pop(); + tracing?.pop(); // We set `structuralIsReused` to `undefined` because `tryReuseStructureFromOldProgram` calls `tryReuseStructureFromOldProgram` which checks // `structuralIsReused`, which would be a TDZ violation if it was not set in advance to `undefined`. let structureIsReused: StructureIsReused; - tracing.push(tracing.Phase.Program, "tryReuseStructureFromOldProgram", {}); + tracing?.push(tracing.Phase.Program, "tryReuseStructureFromOldProgram", {}); structureIsReused = tryReuseStructureFromOldProgram(); // eslint-disable-line prefer-const - tracing.pop(); + tracing?.pop(); if (structureIsReused !== StructureIsReused.Completely) { processingDefaultLibFiles = []; processingOtherFiles = []; @@ -964,15 +964,15 @@ namespace ts { } } - tracing.push(tracing.Phase.Program, "processRootFiles", { count: rootNames.length }); + tracing?.push(tracing.Phase.Program, "processRootFiles", { count: rootNames.length }); forEach(rootNames, (name, index) => processRootFile(name, /*isDefaultLib*/ false, /*ignoreNoDefaultLib*/ false, { kind: FileIncludeKind.RootFile, index })); - tracing.pop(); + tracing?.pop(); // load type declarations specified via 'types' argument or implicitly from types/ and node_modules/@types folders const typeReferences: string[] = rootNames.length ? getAutomaticTypeDirectiveNames(options, host) : emptyArray; if (typeReferences.length) { - tracing.push(tracing.Phase.Program, "processTypeReferences", { count: typeReferences.length }); + tracing?.push(tracing.Phase.Program, "processTypeReferences", { count: typeReferences.length }); // This containingFilename needs to match with the one used in managed-side const containingDirectory = options.configFilePath ? getDirectoryPath(options.configFilePath) : host.getCurrentDirectory(); const containingFilename = combinePaths(containingDirectory, inferredTypesContainingFile); @@ -980,7 +980,7 @@ namespace ts { for (let i = 0; i < typeReferences.length; i++) { processTypeReferenceDirective(typeReferences[i], resolutions[i], { kind: FileIncludeKind.AutomaticTypeDirectiveFile, typeReference: typeReferences[i], packageId: resolutions[i]?.packageId }); } - tracing.pop(); + tracing?.pop(); } // Do not process the default library if: @@ -1016,7 +1016,7 @@ namespace ts { for (const oldSourceFile of oldSourceFiles) { const newFile = getSourceFileByPath(oldSourceFile.resolvedPath); if (shouldCreateNewSourceFile || !newFile || - // old file wasnt redirect but new file is + // old file wasn't redirect but new file is (oldSourceFile.resolvedPath === oldSourceFile.path && newFile.resolvedPath !== oldSourceFile.path)) { host.onReleaseOldSourceFile(oldSourceFile, oldProgram.getCompilerOptions(), !!getSourceFileByPath(oldSourceFile.path)); } @@ -1108,7 +1108,7 @@ namespace ts { verifyCompilerOptions(); performance.mark("afterProgram"); performance.measure("Program", "beforeProgram", "afterProgram"); - tracing.pop(); + tracing?.pop(); return program; @@ -1116,12 +1116,12 @@ namespace ts { if (!moduleNames.length) return emptyArray; const containingFileName = getNormalizedAbsolutePath(containingFile.originalFileName, currentDirectory); const redirectedReference = getRedirectReferenceForResolution(containingFile); - tracing.push(tracing.Phase.Program, "resolveModuleNamesWorker", { containingFileName }); + tracing?.push(tracing.Phase.Program, "resolveModuleNamesWorker", { containingFileName }); performance.mark("beforeResolveModule"); const result = actualResolveModuleNamesWorker(moduleNames, containingFileName, reusedNames, redirectedReference); performance.mark("afterResolveModule"); performance.measure("ResolveModule", "beforeResolveModule", "afterResolveModule"); - tracing.pop(); + tracing?.pop(); return result; } @@ -1129,12 +1129,12 @@ namespace ts { if (!typeDirectiveNames.length) return []; const containingFileName = !isString(containingFile) ? getNormalizedAbsolutePath(containingFile.originalFileName, currentDirectory) : containingFile; const redirectedReference = !isString(containingFile) ? getRedirectReferenceForResolution(containingFile) : undefined; - tracing.push(tracing.Phase.Program, "resolveTypeReferenceDirectiveNamesWorker", { containingFileName }); + tracing?.push(tracing.Phase.Program, "resolveTypeReferenceDirectiveNamesWorker", { containingFileName }); performance.mark("beforeResolveTypeReference"); const result = actualResolveTypeReferenceDirectiveNamesWorker(typeDirectiveNames, containingFileName, redirectedReference); performance.mark("afterResolveTypeReference"); performance.measure("ResolveTypeReference", "beforeResolveTypeReference", "afterResolveTypeReference"); - tracing.pop(); + tracing?.pop(); return result; } @@ -1655,7 +1655,7 @@ namespace ts { function emitBuildInfo(writeFileCallback?: WriteFileCallback): EmitResult { Debug.assert(!outFile(options)); - tracing.push(tracing.Phase.Emit, "emitBuildInfo", {}, /*separateBeginAndEnd*/ true); + tracing?.push(tracing.Phase.Emit, "emitBuildInfo", {}, /*separateBeginAndEnd*/ true); performance.mark("beforeEmit"); const emitResult = emitFiles( notImplementedResolver, @@ -1668,7 +1668,7 @@ namespace ts { performance.mark("afterEmit"); performance.measure("Emit", "beforeEmit", "afterEmit"); - tracing.pop(); + tracing?.pop(); return emitResult; } @@ -1729,9 +1729,9 @@ namespace ts { } function emit(sourceFile?: SourceFile, writeFileCallback?: WriteFileCallback, cancellationToken?: CancellationToken, emitOnlyDtsFiles?: boolean, transformers?: CustomTransformers, forceDtsEmit?: boolean): EmitResult { - tracing.push(tracing.Phase.Emit, "emit", { path: sourceFile?.path }, /*separateBeginAndEnd*/ true); + tracing?.push(tracing.Phase.Emit, "emit", { path: sourceFile?.path }, /*separateBeginAndEnd*/ true); const result = runWithCancellationToken(() => emitWorker(program, sourceFile, writeFileCallback, cancellationToken, emitOnlyDtsFiles, transformers, forceDtsEmit)); - tracing.pop(); + tracing?.pop(); return result; } @@ -2485,13 +2485,13 @@ namespace ts { // Get source file from normalized fileName function findSourceFile(fileName: string, path: Path, isDefaultLib: boolean, ignoreNoDefaultLib: boolean, reason: FileIncludeReason, packageId: PackageId | undefined): SourceFile | undefined { - tracing.push(tracing.Phase.Program, "findSourceFile", { + tracing?.push(tracing.Phase.Program, "findSourceFile", { fileName, isDefaultLib: isDefaultLib || undefined, fileIncludeKind: (FileIncludeKind as any)[reason.kind], }); const result = findSourceFileWorker(fileName, path, isDefaultLib, ignoreNoDefaultLib, reason, packageId); - tracing.pop(); + tracing?.pop(); return result; } @@ -2792,9 +2792,9 @@ namespace ts { resolvedTypeReferenceDirective: ResolvedTypeReferenceDirective | undefined, reason: FileIncludeReason ): void { - tracing.push(tracing.Phase.Program, "processTypeReferenceDirective", { directive: typeReferenceDirective, hasResolved: !!resolveModuleNamesReusingOldState, refKind: reason.kind, refPath: isReferencedFile(reason) ? reason.file : undefined }); + tracing?.push(tracing.Phase.Program, "processTypeReferenceDirective", { directive: typeReferenceDirective, hasResolved: !!resolveModuleNamesReusingOldState, refKind: reason.kind, refPath: isReferencedFile(reason) ? reason.file : undefined }); processTypeReferenceDirectiveWorker(typeReferenceDirective, resolvedTypeReferenceDirective, reason); - tracing.pop(); + tracing?.pop(); } function processTypeReferenceDirectiveWorker( @@ -3157,6 +3157,10 @@ namespace ts { createDiagnosticForOptionName(Diagnostics.Option_isolatedModules_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES2015_or_higher, "isolatedModules", "target"); } + if (options.preserveConstEnums === false) { + createDiagnosticForOptionName(Diagnostics.Option_preserveConstEnums_cannot_be_disabled_when_isolatedModules_is_enabled, "preserveConstEnums", "isolatedModules"); + } + const firstNonExternalModuleSourceFile = find(files, f => !isExternalModule(f) && !isSourceFileJS(f) && !f.isDeclarationFile && f.scriptKind !== ScriptKind.JSON); if (firstNonExternalModuleSourceFile) { const span = getErrorSpanForNode(firstNonExternalModuleSourceFile, firstNonExternalModuleSourceFile); @@ -3756,7 +3760,7 @@ namespace ts { } function handleDirectoryCouldBeSymlink(directory: string) { - if (!host.getResolvedProjectReferences()) return; + if (!host.getResolvedProjectReferences() || containsIgnoredPath(directory)) return; // Because we already watch node_modules, handle symlinks in there if (!originalRealpath || !stringContains(directory, nodeModulesPathPart)) return; @@ -3773,7 +3777,7 @@ namespace ts { return; } - symlinkCache.setSymlinkedDirectory(directoryPath, { + symlinkCache.setSymlinkedDirectory(directory, { real: ensureTrailingDirectorySeparator(real), realPath }); diff --git a/src/compiler/resolutionCache.ts b/src/compiler/resolutionCache.ts index 6848ecb4bc911..68c32d26c5930 100644 --- a/src/compiler/resolutionCache.ts +++ b/src/compiler/resolutionCache.ts @@ -16,6 +16,8 @@ namespace ts { setFilesWithInvalidatedNonRelativeUnresolvedImports(filesWithUnresolvedImports: ESMap): void; createHasInvalidatedResolution(forceAllFilesAsInvalidated?: boolean): HasInvalidatedResolution; hasChangedAutomaticTypeDirectiveNames(): boolean; + isFileWithInvalidatedNonRelativeUnresolvedImports(path: Path): boolean; + startCachingPerDirectoryResolution(): void; finishCachingPerDirectoryResolution(): void; @@ -208,6 +210,7 @@ namespace ts { invalidateResolutionsOfFailedLookupLocations, setFilesWithInvalidatedNonRelativeUnresolvedImports, createHasInvalidatedResolution, + isFileWithInvalidatedNonRelativeUnresolvedImports, updateTypeRootsWatch, closeTypeRootsWatch, clear @@ -361,7 +364,7 @@ namespace ts { const compilerOptions = resolutionHost.getCompilationSettings(); const hasInvalidatedNonRelativeUnresolvedImport = logChanges && isFileWithInvalidatedNonRelativeUnresolvedImports(path); - // All the resolutions in this file are invalidated if this file wasnt resolved using same redirect + // All the resolutions in this file are invalidated if this file wasn't resolved using same redirect const program = resolutionHost.getCurrentProgram(); const oldRedirect = program && program.getResolvedProjectReferenceToRedirect(containingFile); const unmatchedRedirects = oldRedirect ? diff --git a/src/compiler/scanner.ts b/src/compiler/scanner.ts index b15e1ae6468ff..7b7fc7b9ce353 100644 --- a/src/compiler/scanner.ts +++ b/src/compiler/scanner.ts @@ -43,6 +43,7 @@ namespace ts { reScanJsxToken(): JsxTokenSyntaxKind; reScanLessThanToken(): SyntaxKind; reScanQuestionToken(): SyntaxKind; + reScanInvalidIdentifier(): SyntaxKind; scanJsxToken(): JsxTokenSyntaxKind; scanJsDocToken(): JSDocSyntaxKind; scan(): SyntaxKind; @@ -966,6 +967,7 @@ namespace ts { reScanJsxToken, reScanLessThanToken, reScanQuestionToken, + reScanInvalidIdentifier, scanJsxToken, scanJsDocToken, scan, @@ -2041,14 +2043,9 @@ namespace ts { } return token = SyntaxKind.PrivateIdentifier; default: - if (isIdentifierStart(ch, languageVersion)) { - pos += charSize(ch); - while (pos < end && isIdentifierPart(ch = codePointAt(text, pos), languageVersion)) pos += charSize(ch); - tokenValue = text.substring(tokenPos, pos); - if (ch === CharacterCodes.backslash) { - tokenValue += scanIdentifierParts(); - } - return token = getIdentifierToken(); + const identifierKind = scanIdentifier(ch, languageVersion); + if (identifierKind) { + return token = identifierKind; } else if (isWhiteSpaceSingleLine(ch)) { pos += charSize(ch); @@ -2066,6 +2063,32 @@ namespace ts { } } + function reScanInvalidIdentifier(): SyntaxKind { + Debug.assert(token === SyntaxKind.Unknown, "'reScanInvalidIdentifier' should only be called when the current token is 'SyntaxKind.Unknown'."); + pos = tokenPos = startPos; + tokenFlags = 0; + const ch = codePointAt(text, pos); + const identifierKind = scanIdentifier(ch, ScriptTarget.ESNext); + if (identifierKind) { + return token = identifierKind; + } + pos += charSize(ch); + return token; // Still `SyntaKind.Unknown` + } + + function scanIdentifier(startCharacter: number, languageVersion: ScriptTarget) { + let ch = startCharacter; + if (isIdentifierStart(ch, languageVersion)) { + pos += charSize(ch); + while (pos < end && isIdentifierPart(ch = codePointAt(text, pos), languageVersion)) pos += charSize(ch); + tokenValue = text.substring(tokenPos, pos); + if (ch === CharacterCodes.backslash) { + tokenValue += scanIdentifierParts(); + } + return getIdentifierToken(); + } + } + function reScanGreaterToken(): SyntaxKind { if (token === SyntaxKind.GreaterThanToken) { if (text.charCodeAt(pos) === CharacterCodes.greaterThan) { diff --git a/src/compiler/sys.ts b/src/compiler/sys.ts index d6990c3462df4..5dc4fbe91cc35 100644 --- a/src/compiler/sys.ts +++ b/src/compiler/sys.ts @@ -1116,6 +1116,7 @@ namespace ts { exit(exitCode?: number): void; /*@internal*/ enableCPUProfiler?(path: string, continuation: () => void): boolean; /*@internal*/ disableCPUProfiler?(continuation: () => void): boolean; + /*@internal*/ cpuProfilingEnabled?(): boolean; realpath?(path: string): string; /*@internal*/ getEnvironmentVariable(name: string): string; /*@internal*/ tryEnableSourceMapsForHost?(): void; @@ -1286,6 +1287,7 @@ namespace ts { }, enableCPUProfiler, disableCPUProfiler, + cpuProfilingEnabled: () => !!activeSession || contains(process.execArgv, "--cpu-prof") || contains(process.execArgv, "--prof"), realpath, debugMode: !!process.env.NODE_INSPECTOR_IPC || !!process.env.VSCODE_INSPECTOR_OPTIONS || some(process.execArgv, arg => /^--(inspect|debug)(-brk)?(=\d+)?$/i.test(arg)), tryEnableSourceMapsForHost() { @@ -1558,7 +1560,7 @@ namespace ts { return event === "rename" && (!relativeName || relativeName === lastDirectoryPart || - relativeName.lastIndexOf(lastDirectoryPartWithDirectorySeparator!) === relativeName.length - lastDirectoryPartWithDirectorySeparator!.length) && + (relativeName.lastIndexOf(lastDirectoryPartWithDirectorySeparator!) !== -1 && relativeName.lastIndexOf(lastDirectoryPartWithDirectorySeparator!) === relativeName.length - lastDirectoryPartWithDirectorySeparator!.length)) && !fileSystemEntryExists(fileOrDirectory, entryKind) ? invokeCallbackAndUpdateWatcher(watchMissingFileSystemEntry) : callback(event, relativeName); diff --git a/src/compiler/tracing.ts b/src/compiler/tracing.ts index e6e63ebf79a52..87c2abf4f4819 100644 --- a/src/compiler/tracing.ts +++ b/src/compiler/tracing.ts @@ -1,16 +1,25 @@ +/* Tracing events for the compiler. */ + /*@internal*/ -/** Tracing events for the compiler. */ -namespace ts.tracing { +namespace ts { // eslint-disable-line one-namespace-per-file + // should be used as tracing?.___ + export let tracing: typeof tracingEnabled | undefined; + // enable the above using startTracing() +} + +// `tracingEnabled` should never be used directly, only through the above +/* @internal */ +namespace ts.tracingEnabled { // eslint-disable-line one-namespace-per-file export const enum Mode { Project, Build, Server, } - let fs: typeof import("fs") | false | undefined; + let fs: typeof import("fs"); let traceCount = 0; - let traceFd: number | undefined; + let traceFd = 0; let mode: Mode; @@ -22,23 +31,19 @@ namespace ts.tracing { [key: string]: string | number | boolean | null | undefined | Args | readonly (string | number | boolean | null | undefined | Args)[]; }; - /** Starts tracing for the given project (unless the `fs` module is unavailable). */ + /** Starts tracing for the given project. */ export function startTracing(tracingMode: Mode, traceDir: string, configFilePath?: string) { - Debug.assert(!traceFd, "Tracing already started"); + Debug.assert(!tracing, "Tracing already started"); if (fs === undefined) { try { fs = require("fs"); } - catch { - fs = false; + catch (e) { + throw new Error(`tracing requires having fs\n(original error: ${e.message || e})`); } } - if (!fs) { - return; - } - mode = tracingMode; if (legendPath === undefined) { @@ -51,9 +56,9 @@ namespace ts.tracing { } const countPart = - mode === Mode.Build ? `.${process.pid}-${++traceCount}` : - mode === Mode.Server ? `.${process.pid}` : - ``; + mode === Mode.Build ? `.${process.pid}-${++traceCount}` + : mode === Mode.Server ? `.${process.pid}` + : ``; const tracePath = combinePaths(traceDir, `trace${countPart}.json`); const typesPath = combinePaths(traceDir, `types${countPart}.json`); @@ -64,6 +69,7 @@ namespace ts.tracing { }); traceFd = fs.openSync(tracePath, "w"); + tracing = tracingEnabled; // only when traceFd is properly set // Start with a prefix that contains some metadata that the devtools profiler expects (also avoids a warning on import) const meta = { cat: "__metadata", ph: "M", ts: 1000 * timestamp(), pid: 1, tid: 1 }; @@ -75,19 +81,14 @@ namespace ts.tracing { .map(v => JSON.stringify(v)).join(",\n")); } - /** Stops tracing for the in-progress project and dumps the type catalog (unless the `fs` module is unavailable). */ + /** Stops tracing for the in-progress project and dumps the type catalog. */ export function stopTracing(typeCatalog?: readonly Type[]) { - if (!traceFd) { - Debug.assert(!fs, "Tracing is not in progress"); - return; - } - - Debug.assert(fs); + Debug.assert(tracing, "Tracing is not in progress"); Debug.assert(!!typeCatalog === (mode !== Mode.Server)); // Have a type catalog iff not in server mode fs.writeSync(traceFd, `\n]\n`); fs.closeSync(traceFd); - traceFd = undefined; + tracing = undefined; if (typeCatalog) { dumpTypes(typeCatalog); @@ -99,10 +100,6 @@ namespace ts.tracing { } } - export function isTracing() { - return !!traceFd; - } - export const enum Phase { Parse = "parse", Program = "program", @@ -114,7 +111,6 @@ namespace ts.tracing { } export function instant(phase: Phase, name: string, args?: Args) { - if (!traceFd) return; writeEvent("I", phase, name, args, `"s":"g"`); } @@ -127,40 +123,38 @@ namespace ts.tracing { * these operations. */ export function push(phase: Phase, name: string, args?: Args, separateBeginAndEnd = false) { - if (!traceFd) return; if (separateBeginAndEnd) { writeEvent("B", phase, name, args); } eventStack.push({ phase, name, args, time: 1000 * timestamp(), separateBeginAndEnd }); } export function pop() { - if (!traceFd) return; Debug.assert(eventStack.length > 0); writeStackEvent(eventStack.length - 1, 1000 * timestamp()); eventStack.length--; } export function popAll() { - if (!traceFd) return; const endTime = 1000 * timestamp(); for (let i = eventStack.length - 1; i >= 0; i--) { writeStackEvent(i, endTime); } eventStack.length = 0; } + // sample every 10ms + const sampleInterval = 1000 * 10; function writeStackEvent(index: number, endTime: number) { const { phase, name, args, time, separateBeginAndEnd } = eventStack[index]; if (separateBeginAndEnd) { writeEvent("E", phase, name, args, /*extras*/ undefined, endTime); } - else { + // test if [time,endTime) straddles a sampling point + else if (sampleInterval - (time % sampleInterval) <= endTime - time) { writeEvent("X", phase, name, args, `"dur":${endTime - time}`, time); } } function writeEvent(eventType: string, phase: Phase, name: string, args: Args | undefined, extras?: string, time: number = 1000 * timestamp()) { - Debug.assert(traceFd); - Debug.assert(fs); // In server mode, there's no easy way to dump type information, so we drop events that would require it. if (mode === Mode.Server && phase === Phase.CheckTypes) return; @@ -182,8 +176,6 @@ namespace ts.tracing { } function dumpTypes(types: readonly Type[]) { - Debug.assert(fs); - performance.mark("beginDumpTypes"); const typesPath = legend[legend.length - 1].typesPath!; @@ -293,7 +285,6 @@ namespace ts.tracing { if (!legendPath) { return; } - Debug.assert(fs); fs.writeFileSync(legendPath, JSON.stringify(legend)); } @@ -304,3 +295,9 @@ namespace ts.tracing { typesPath?: string; } } + +/*@internal*/ +namespace ts { // eslint-disable-line one-namespace-per-file + // define after tracingEnabled is initialized + export const startTracing = tracingEnabled.startTracing; +} diff --git a/src/compiler/transformer.ts b/src/compiler/transformer.ts index efca6f7f187d3..4de469afc5724 100644 --- a/src/compiler/transformer.ts +++ b/src/compiler/transformer.ts @@ -223,9 +223,9 @@ namespace ts { // Transform each node. const transformed: T[] = []; for (const node of nodes) { - tracing.push(tracing.Phase.Emit, "transformNodes", node.kind === SyntaxKind.SourceFile ? { path: (node as any as SourceFile).path } : { kind: node.kind, pos: node.pos, end: node.end }); + tracing?.push(tracing.Phase.Emit, "transformNodes", node.kind === SyntaxKind.SourceFile ? { path: (node as any as SourceFile).path } : { kind: node.kind, pos: node.pos, end: node.end }); transformed.push((allowDtsFiles ? transformation : transformRoot)(node)); - tracing.pop(); + tracing?.pop(); } // prevent modification of the lexical environment. diff --git a/src/compiler/transformers/classFields.ts b/src/compiler/transformers/classFields.ts index f9e539770dcdc..96ba926dd17db 100644 --- a/src/compiler/transformers/classFields.ts +++ b/src/compiler/transformers/classFields.ts @@ -337,6 +337,15 @@ namespace ts { if (shouldTransformPrivateFields && isPrivateIdentifierPropertyAccessExpression(node.expression)) { // Transform call expressions of private names to properly bind the `this` parameter. const { thisArg, target } = factory.createCallBinding(node.expression, hoistVariableDeclaration, languageVersion); + if (isCallChain(node)) { + return factory.updateCallChain( + node, + factory.createPropertyAccessChain(visitNode(target, visitor), node.questionDotToken, "call"), + /*questionDotToken*/ undefined, + /*typeArguments*/ undefined, + [visitNode(thisArg, visitor, isExpression), ...visitNodes(node.arguments, visitor, isExpression)] + ); + } return factory.updateCallExpression( node, factory.createPropertyAccessExpression(visitNode(target, visitor), "call"), diff --git a/src/compiler/transformers/declarations.ts b/src/compiler/transformers/declarations.ts index 0ca8840059801..69add2945f4ba 100644 --- a/src/compiler/transformers/declarations.ts +++ b/src/compiler/transformers/declarations.ts @@ -80,6 +80,7 @@ namespace ts { reportNonlocalAugmentation }; let errorNameNode: DeclarationName | undefined; + let errorFallbackNode: Declaration | undefined; let currentSourceFile: SourceFile; let refs: ESMap; @@ -161,9 +162,9 @@ namespace ts { } function reportPrivateInBaseOfClassExpression(propertyName: string) { - if (errorNameNode) { + if (errorNameNode || errorFallbackNode) { context.addDiagnostic( - createDiagnosticForNode(errorNameNode, Diagnostics.Property_0_of_exported_class_expression_may_not_be_private_or_protected, propertyName)); + createDiagnosticForNode((errorNameNode || errorFallbackNode)!, Diagnostics.Property_0_of_exported_class_expression_may_not_be_private_or_protected, propertyName)); } } @@ -199,8 +200,8 @@ namespace ts { } function reportTruncationError() { - if (errorNameNode) { - context.addDiagnostic(createDiagnosticForNode(errorNameNode, Diagnostics.The_inferred_type_of_this_node_exceeds_the_maximum_length_the_compiler_will_serialize_An_explicit_type_annotation_is_needed)); + if (errorNameNode || errorFallbackNode) { + context.addDiagnostic(createDiagnosticForNode((errorNameNode || errorFallbackNode)!, Diagnostics.The_inferred_type_of_this_node_exceeds_the_maximum_length_the_compiler_will_serialize_An_explicit_type_annotation_is_needed)); } } @@ -217,12 +218,12 @@ namespace ts { function transformDeclarationsForJS(sourceFile: SourceFile, bundled?: boolean) { const oldDiag = getSymbolAccessibilityDiagnostic; - getSymbolAccessibilityDiagnostic = (s) => ({ + getSymbolAccessibilityDiagnostic = (s) => (s.errorNode && canProduceDiagnostics(s.errorNode) ? createGetSymbolAccessibilityDiagnosticForNode(s.errorNode)(s) : ({ diagnosticMessage: s.errorModuleName ? Diagnostics.Declaration_emit_for_this_file_requires_using_private_name_0_from_module_1_An_explicit_type_annotation_may_unblock_declaration_emit : Diagnostics.Declaration_emit_for_this_file_requires_using_private_name_0_An_explicit_type_annotation_may_unblock_declaration_emit, errorNode: s.errorNode || sourceFile - }); + })); const result = resolver.getDeclarationStatementsForSourceFile(sourceFile, declarationEmitNodeBuilderFlags, symbolTracker, bundled); getSymbolAccessibilityDiagnostic = oldDiag; return result; @@ -1102,7 +1103,9 @@ namespace ts { diagnosticMessage: Diagnostics.Default_export_of_the_module_has_or_is_using_private_name_0, errorNode: input }); + errorFallbackNode = input; const varDecl = factory.createVariableDeclaration(newId, /*exclamationToken*/ undefined, resolver.createTypeOfExpression(input.expression, input, declarationEmitNodeBuilderFlags, symbolTracker), /*initializer*/ undefined); + errorFallbackNode = undefined; const statement = factory.createVariableStatement(needsDeclare ? [factory.createModifier(SyntaxKind.DeclareKeyword)] : [], factory.createVariableDeclarationList([varDecl], NodeFlags.Const)); return [statement, factory.updateExportAssignment(input, input.decorators, input.modifiers, newId)]; } @@ -1326,6 +1329,8 @@ namespace ts { } } case SyntaxKind.ClassDeclaration: { + errorNameNode = input.name; + errorFallbackNode = input; const modifiers = factory.createNodeArray(ensureModifiers(input)); const typeParameters = ensureTypeParams(input, input.typeParameters); const ctor = getFirstConstructorWithBody(input); @@ -1462,6 +1467,8 @@ namespace ts { if (node as Node === input) { return node; } + errorFallbackNode = undefined; + errorNameNode = undefined; return node && setOriginalNode(preserveJsDoc(node, input), input); } } diff --git a/src/compiler/transformers/declarations/diagnostics.ts b/src/compiler/transformers/declarations/diagnostics.ts index ebb453ee83d9a..7be27b453a0d2 100644 --- a/src/compiler/transformers/declarations/diagnostics.ts +++ b/src/compiler/transformers/declarations/diagnostics.ts @@ -27,7 +27,10 @@ namespace ts { | TypeAliasDeclaration | ConstructorDeclaration | IndexSignatureDeclaration - | PropertyAccessExpression; + | PropertyAccessExpression + | JSDocTypedefTag + | JSDocCallbackTag + | JSDocEnumTag; export function canProduceDiagnostics(node: Node): node is DeclarationDiagnosticProducing { return isVariableDeclaration(node) || @@ -48,7 +51,8 @@ namespace ts { isTypeAliasDeclaration(node) || isConstructorDeclaration(node) || isIndexSignatureDeclaration(node) || - isPropertyAccessExpression(node); + isPropertyAccessExpression(node) || + isJSDocTypeAlias(node); } export function createGetSymbolAccessibilityDiagnosticForNodeName(node: DeclarationDiagnosticProducing) { @@ -124,7 +128,7 @@ namespace ts { } } - export function createGetSymbolAccessibilityDiagnosticForNode(node: DeclarationDiagnosticProducing): (symbolAccessibilityResult: SymbolAccessibilityResult) => SymbolAccessibilityDiagnostic | undefined { + export function createGetSymbolAccessibilityDiagnosticForNode(node: DeclarationDiagnosticProducing): GetSymbolAccessibilityDiagnostic { if (isVariableDeclaration(node) || isPropertyDeclaration(node) || isPropertySignature(node) || isPropertyAccessExpression(node) || isBindingElement(node) || isConstructorDeclaration(node)) { return getVariableDeclarationTypeVisibilityError; } @@ -149,7 +153,7 @@ namespace ts { else if (isImportEqualsDeclaration(node)) { return getImportEntityNameVisibilityError; } - else if (isTypeAliasDeclaration(node)) { + else if (isTypeAliasDeclaration(node) || isJSDocTypeAlias(node)) { return getTypeAliasDeclarationVisibilityError; } else { @@ -474,11 +478,13 @@ namespace ts { }; } - function getTypeAliasDeclarationVisibilityError(): SymbolAccessibilityDiagnostic { + function getTypeAliasDeclarationVisibilityError(symbolAccessibilityResult: SymbolAccessibilityResult): SymbolAccessibilityDiagnostic { return { - diagnosticMessage: Diagnostics.Exported_type_alias_0_has_or_is_using_private_name_1, - errorNode: (node as TypeAliasDeclaration).type, - typeName: (node as TypeAliasDeclaration).name + diagnosticMessage: symbolAccessibilityResult.errorModuleName + ? Diagnostics.Exported_type_alias_0_has_or_is_using_private_name_1_from_module_2 + : Diagnostics.Exported_type_alias_0_has_or_is_using_private_name_1, + errorNode: isJSDocTypeAlias(node) ? Debug.checkDefined(node.typeExpression) : (node as TypeAliasDeclaration).type, + typeName: isJSDocTypeAlias(node) ? getNameOfDeclaration(node) : (node as TypeAliasDeclaration).name, }; } } diff --git a/src/compiler/transformers/module/module.ts b/src/compiler/transformers/module/module.ts index d2f4917d50b7b..24d962c6e2f28 100644 --- a/src/compiler/transformers/module/module.ts +++ b/src/compiler/transformers/module/module.ts @@ -1874,9 +1874,8 @@ namespace ts { for (const exportName of exportedNames) { // Mark the node to prevent triggering this rule again. noSubstitution[getNodeId(expression)] = true; - expression = createExportExpression(exportName, expression); + expression = factory.createParenthesizedExpression(createExportExpression(exportName, expression)); } - return expression; } } diff --git a/src/compiler/transformers/ts.ts b/src/compiler/transformers/ts.ts index 9cc9c1c3fc92e..0d24f332c15bd 100644 --- a/src/compiler/transformers/ts.ts +++ b/src/compiler/transformers/ts.ts @@ -2316,8 +2316,7 @@ namespace ts { */ function shouldEmitEnumDeclaration(node: EnumDeclaration) { return !isEnumConst(node) - || compilerOptions.preserveConstEnums - || compilerOptions.isolatedModules; + || shouldPreserveConstEnums(compilerOptions); } /** @@ -2507,7 +2506,7 @@ namespace ts { // If we can't find a parse tree node, assume the node is instantiated. return true; } - return isInstantiatedModule(node, !!compilerOptions.preserveConstEnums || !!compilerOptions.isolatedModules); + return isInstantiatedModule(node, shouldPreserveConstEnums(compilerOptions)); } /** diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 4352e2f2171e3..3585ff50a8f3b 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -4972,10 +4972,6 @@ namespace ts { Unit = Literal | UniqueESSymbol | Nullable, StringOrNumberLiteral = StringLiteral | NumberLiteral, /* @internal */ - StringLikeLiteral = StringLiteral | TemplateLiteral, - /* @internal */ - FreshableLiteral = Literal | TemplateLiteral, - /* @internal */ StringOrNumberLiteralOrUnique = StringLiteral | NumberLiteral | UniqueESSymbol, /* @internal */ DefinitelyFalsy = StringLiteral | NumberLiteral | BigIntLiteral | BooleanLiteral | Void | Undefined | Null, @@ -5069,9 +5065,7 @@ namespace ts { } /* @internal */ - export type FreshableLiteralType = LiteralType | TemplateLiteralType; - /* @internal */ - export type FreshableType = FreshableLiteralType | FreshableIntrinsicType; + export type FreshableType = LiteralType | FreshableIntrinsicType; // String literal types (TypeFlags.StringLiteral) // Numeric literal types (TypeFlags.NumberLiteral) @@ -5475,8 +5469,6 @@ namespace ts { export interface TemplateLiteralType extends InstantiableType { texts: readonly string[]; // Always one element longer than types types: readonly Type[]; // Always at least one element - freshType: TemplateLiteralType; // Fresh version of type - regularType: TemplateLiteralType; // Regular version of type } export interface StringMappingType extends InstantiableType { diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index b40527cb03e53..d91bbac3b741a 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -2430,7 +2430,7 @@ namespace ts { } } - export function getExternalModuleName(node: AnyImportOrReExport | ImportTypeNode | ImportCall): Expression | undefined { + export function getExternalModuleName(node: AnyImportOrReExport | ImportTypeNode | ImportCall | ModuleDeclaration): Expression | undefined { switch (node.kind) { case SyntaxKind.ImportDeclaration: case SyntaxKind.ExportDeclaration: @@ -2441,6 +2441,8 @@ namespace ts { return isLiteralImportTypeNode(node) ? node.argument.literal : undefined; case SyntaxKind.CallExpression: return node.arguments[0]; + case SyntaxKind.ModuleDeclaration: + return node.name.kind === SyntaxKind.StringLiteral ? node.name : undefined; default: return Debug.assertNever(node); } @@ -4118,11 +4120,21 @@ namespace ts { return file.moduleName || getExternalModuleNameFromPath(host, file.fileName, referenceFile && referenceFile.fileName); } + function getCanonicalAbsolutePath(host: ResolveModuleNameResolutionHost, path: string) { + return host.getCanonicalFileName(getNormalizedAbsolutePath(path, host.getCurrentDirectory())); + } + export function getExternalModuleNameFromDeclaration(host: ResolveModuleNameResolutionHost, resolver: EmitResolver, declaration: ImportEqualsDeclaration | ImportDeclaration | ExportDeclaration | ModuleDeclaration | ImportTypeNode): string | undefined { const file = resolver.getExternalModuleFileFromDeclaration(declaration); if (!file || file.isDeclarationFile) { return undefined; } + // If the declaration already uses a non-relative name, and is outside the common source directory, continue to use it + const specifier = getExternalModuleName(declaration); + if (specifier && isStringLiteralLike(specifier) && !pathIsRelative(specifier.text) && + getCanonicalAbsolutePath(host, file.path).indexOf(getCanonicalAbsolutePath(host, ensureTrailingDirectorySeparator(host.getCommonSourceDirectory()))) === -1) { + return undefined; + } return getResolvedExternalModuleName(host, file); } @@ -4868,6 +4880,12 @@ namespace ts { return baseStr + "." + entityNameToString(expr.name); } } + else if (isElementAccessExpression(expr)) { + const baseStr = tryGetPropertyAccessOrIdentifierToString(expr.expression); + if (baseStr !== undefined && isPropertyName(expr.argumentExpression)) { + return baseStr + "." + getPropertyNameForPropertyNameNode(expr.argumentExpression); + } + } else if (isIdentifier(expr)) { return unescapeLeadingUnderscores(expr.escapedText); } @@ -5625,7 +5643,7 @@ namespace ts { function Type(this: Type, checker: TypeChecker, flags: TypeFlags) { this.flags = flags; - if (Debug.isDebugging || tracing.isTracing()) { + if (Debug.isDebugging || tracing) { this.checker = checker; } } @@ -6001,6 +6019,10 @@ namespace ts { return !!(compilerOptions.declaration || compilerOptions.composite); } + export function shouldPreserveConstEnums(compilerOptions: CompilerOptions): boolean { + return !!(compilerOptions.preserveConstEnums || compilerOptions.isolatedModules); + } + export function isIncrementalCompilation(options: CompilerOptions) { return !!(options.incremental || options.composite); } @@ -6079,25 +6101,43 @@ namespace ts { } export interface SymlinkCache { + /** Gets a map from symlink to realpath. Keys have trailing directory separators. */ getSymlinkedDirectories(): ReadonlyESMap | undefined; + /** Gets a map from realpath to symlinks. Keys have trailing directory separators. */ + getSymlinkedDirectoriesByRealpath(): MultiMap | undefined; + /** Gets a map from symlink to realpath */ getSymlinkedFiles(): ReadonlyESMap | undefined; - setSymlinkedDirectory(path: Path, directory: SymlinkedDirectory | false): void; - setSymlinkedFile(path: Path, real: string): void; + setSymlinkedDirectory(symlink: string, real: SymlinkedDirectory | false): void; + setSymlinkedFile(symlinkPath: Path, real: string): void; } - export function createSymlinkCache(): SymlinkCache { + export function createSymlinkCache(cwd: string, getCanonicalFileName: GetCanonicalFileName): SymlinkCache { let symlinkedDirectories: ESMap | undefined; + let symlinkedDirectoriesByRealpath: MultiMap | undefined; let symlinkedFiles: ESMap | undefined; return { getSymlinkedFiles: () => symlinkedFiles, getSymlinkedDirectories: () => symlinkedDirectories, + getSymlinkedDirectoriesByRealpath: () => symlinkedDirectoriesByRealpath, setSymlinkedFile: (path, real) => (symlinkedFiles || (symlinkedFiles = new Map())).set(path, real), - setSymlinkedDirectory: (path, directory) => (symlinkedDirectories || (symlinkedDirectories = new Map())).set(path, directory), + setSymlinkedDirectory: (symlink, real) => { + // Large, interconnected dependency graphs in pnpm will have a huge number of symlinks + // where both the realpath and the symlink path are inside node_modules/.pnpm. Since + // this path is never a candidate for a module specifier, we can ignore it entirely. + let symlinkPath = toPath(symlink, cwd, getCanonicalFileName); + if (!containsIgnoredPath(symlinkPath)) { + symlinkPath = ensureTrailingDirectorySeparator(symlinkPath); + if (real !== false && !symlinkedDirectories?.has(symlinkPath)) { + (symlinkedDirectoriesByRealpath ||= createMultiMap()).add(ensureTrailingDirectorySeparator(real.realPath), symlink); + } + (symlinkedDirectories || (symlinkedDirectories = new Map())).set(symlinkPath, real); + } + } }; } export function discoverProbableSymlinks(files: readonly SourceFile[], getCanonicalFileName: GetCanonicalFileName, cwd: string): SymlinkCache { - const cache = createSymlinkCache(); + const cache = createSymlinkCache(cwd, getCanonicalFileName); const symlinks = flatten(mapDefined(files, sf => sf.resolvedModules && compact(arrayFrom(mapIterator(sf.resolvedModules.values(), res => res && res.originalPath && res.resolvedFileName !== res.originalPath ? [res.resolvedFileName, res.originalPath] as const : undefined))))); @@ -6105,7 +6145,7 @@ namespace ts { const [commonResolved, commonOriginal] = guessDirectorySymlink(resolvedPath, originalPath, cwd, getCanonicalFileName) || emptyArray; if (commonResolved && commonOriginal) { cache.setSymlinkedDirectory( - toPath(commonOriginal, cwd, getCanonicalFileName), + commonOriginal, { real: commonResolved, realPath: toPath(commonResolved, cwd, getCanonicalFileName) }); } } @@ -6113,8 +6153,8 @@ namespace ts { } function guessDirectorySymlink(a: string, b: string, cwd: string, getCanonicalFileName: GetCanonicalFileName): [string, string] | undefined { - const aParts = getPathComponents(toPath(a, cwd, getCanonicalFileName)); - const bParts = getPathComponents(toPath(b, cwd, getCanonicalFileName)); + const aParts = getPathComponents(getNormalizedAbsolutePath(a, cwd)); + const bParts = getPathComponents(getNormalizedAbsolutePath(b, cwd)); let isDirectory = false; while (!isNodeModulesOrScopedPackageDirectory(aParts[aParts.length - 2], getCanonicalFileName) && !isNodeModulesOrScopedPackageDirectory(bParts[bParts.length - 2], getCanonicalFileName) && @@ -6546,6 +6586,18 @@ namespace ts { return false; } + function numberOfDirectorySeparators(str: string) { + const match = str.match(/\//g); + return match ? match.length : 0; + } + + export function compareNumberOfDirectorySeparators(path1: string, path2: string) { + return compareValues( + numberOfDirectorySeparators(path1), + numberOfDirectorySeparators(path2) + ); + } + /** * Extension boundaries by priority. Lower numbers indicate higher priorities, and are * aligned to the offset of the highest priority extension in the @@ -7066,4 +7118,8 @@ namespace ts { return false; } } + + export function containsIgnoredPath(path: string) { + return some(ignoredPaths, p => stringContains(path, p)); + } } diff --git a/src/compiler/utilitiesPublic.ts b/src/compiler/utilitiesPublic.ts index 6722e7ad5be1f..d45eb73478d5a 100644 --- a/src/compiler/utilitiesPublic.ts +++ b/src/compiler/utilitiesPublic.ts @@ -311,13 +311,16 @@ namespace ts { // nodes like variable declarations and binding elements can returned a view of their flags // that includes the modifiers from their container. i.e. flags like export/declare aren't // stored on the variable declaration directly, but on the containing variable statement - // (if it has one). Similarly, flags for let/const are store on the variable declaration + // (if it has one). Similarly, flags for let/const are stored on the variable declaration // list. By calling this function, all those flags are combined so that the client can treat // the node as if it actually had those flags. export function getCombinedNodeFlags(node: Node): NodeFlags { return getCombinedFlags(node, n => n.flags); } + /* @internal */ + export const supportedLocaleDirectories = ["cs", "de", "es", "fr", "it", "ja", "ko", "pl", "pt-br", "ru", "tr", "zh-cn", "zh-tw"]; + /** * Checks to see if the locale is in the appropriate format, * and if it is, attempts to set the appropriate language. @@ -326,7 +329,8 @@ namespace ts { locale: string, sys: { getExecutingFilePath(): string, resolvePath(path: string): string, fileExists(fileName: string): boolean, readFile(fileName: string): string | undefined }, errors?: Push) { - const matchResult = /^([a-z]+)([_\-]([a-z]+))?$/.exec(locale.toLowerCase()); + const lowerCaseLocale = locale.toLowerCase(); + const matchResult = /^([a-z]+)([_\-]([a-z]+))?$/.exec(lowerCaseLocale); if (!matchResult) { if (errors) { @@ -340,7 +344,7 @@ namespace ts { // First try the entire locale, then fall back to just language if that's all we have. // Either ways do not fail, and fallback to the English diagnostic strings. - if (!trySetLanguageAndTerritory(language, territory, errors)) { + if (contains(supportedLocaleDirectories, lowerCaseLocale) && !trySetLanguageAndTerritory(language, territory, errors)) { trySetLanguageAndTerritory(language, /*territory*/ undefined, errors); } diff --git a/src/executeCommandLine/executeCommandLine.ts b/src/executeCommandLine/executeCommandLine.ts index bf7d109e8382a..09f5230ab8a40 100644 --- a/src/executeCommandLine/executeCommandLine.ts +++ b/src/executeCommandLine/executeCommandLine.ts @@ -501,7 +501,7 @@ namespace ts { updateSolutionBuilderHost(sys, cb, buildHost); const builder = createSolutionBuilder(buildHost, projects, buildOptions); const exitStatus = buildOptions.clean ? builder.clean() : builder.build(); - tracing.dumpLegend(); + tracing?.dumpLegend(); return sys.exit(exitStatus); } @@ -662,11 +662,12 @@ namespace ts { function enableStatisticsAndTracing(system: System, compilerOptions: CompilerOptions, isBuildMode: boolean) { if (canReportDiagnostics(system, compilerOptions)) { - performance.enable(); + performance.enable(system); } if (canTrace(system, compilerOptions)) { - tracing.startTracing(isBuildMode ? tracing.Mode.Build : tracing.Mode.Project, compilerOptions.generateTrace!, compilerOptions.configFilePath); + startTracing(isBuildMode ? tracingEnabled.Mode.Build : tracingEnabled.Mode.Project, + compilerOptions.generateTrace!, compilerOptions.configFilePath); } } @@ -674,7 +675,7 @@ namespace ts { const compilerOptions = program.getCompilerOptions(); if (canTrace(sys, compilerOptions)) { - tracing.stopTracing(program.getTypeCatalog()); + tracing?.stopTracing(program.getTypeCatalog()); } let statistics: Statistic[]; diff --git a/src/harness/client.ts b/src/harness/client.ts index 4bdb316b6b47d..f4f703d9164e3 100644 --- a/src/harness/client.ts +++ b/src/harness/client.ts @@ -605,7 +605,7 @@ namespace ts.server { return notImplemented(); } - getDocCommentTemplateAtPosition(_fileName: string, _position: number): TextInsertion { + getDocCommentTemplateAtPosition(_fileName: string, _position: number, _options?: DocCommentTemplateOptions): TextInsertion { return notImplemented(); } diff --git a/src/harness/fourslashImpl.ts b/src/harness/fourslashImpl.ts index 6355cb15acaba..d86f2e904fe65 100644 --- a/src/harness/fourslashImpl.ts +++ b/src/harness/fourslashImpl.ts @@ -1453,9 +1453,9 @@ namespace FourSlash { } public baselineRename(marker: string, options: FourSlashInterface.RenameOptions) { - const position = this.getMarkerByName(marker).position; + const { fileName, position } = this.getMarkerByName(marker); const locations = this.languageService.findRenameLocations( - this.activeFile.fileName, + fileName, position, options.findInStrings ?? false, options.findInComments ?? false, @@ -2802,7 +2802,7 @@ namespace FourSlash { const matchingName = completions?.filter(e => e.name === options.name); const detailMessage = matchingName?.length ? `\n Found ${matchingName.length} with name '${options.name}' from source(s) ${matchingName.map(e => `'${e.source}'`).join(", ")}.` - : ""; + : ` (In fact, there were no completions with name '${options.name}' at all.)`; return this.raiseError(`No completions were found for the given name, source, and preferences.` + detailMessage); } const codeActions = details.codeActions; @@ -3022,7 +3022,7 @@ namespace FourSlash { this.editScriptAndUpdateMarkers(fileName, span.start, span.start + insertedText.length, deletedText); } if (expectedTextArray.length !== actualTextArray.length) { - this.raiseError(`Expected ${expectedTextArray.length} import fixes, got ${actualTextArray.length}`); + this.raiseError(`Expected ${expectedTextArray.length} import fixes, got ${actualTextArray.length}:\n\n${actualTextArray.join("\n\n" + "-".repeat(20) + "\n\n")}`); } ts.zipWith(expectedTextArray, actualTextArray, (expected, actual, index) => { if (expected !== actual) { @@ -3048,9 +3048,9 @@ namespace FourSlash { assert.deepEqual(actualModuleSpecifiers, moduleSpecifiers); } - public verifyDocCommentTemplate(expected: ts.TextInsertion | undefined) { + public verifyDocCommentTemplate(expected: ts.TextInsertion | undefined, options?: ts.DocCommentTemplateOptions) { const name = "verifyDocCommentTemplate"; - const actual = this.languageService.getDocCommentTemplateAtPosition(this.activeFile.fileName, this.currentCaretPosition)!; + const actual = this.languageService.getDocCommentTemplateAtPosition(this.activeFile.fileName, this.currentCaretPosition, options || { generateReturnInDocTemplate: true })!; if (expected === undefined) { if (actual) { diff --git a/src/harness/fourslashInterfaceImpl.ts b/src/harness/fourslashInterfaceImpl.ts index 2e64b2921e8b6..09b52997b1285 100644 --- a/src/harness/fourslashInterfaceImpl.ts +++ b/src/harness/fourslashInterfaceImpl.ts @@ -432,9 +432,9 @@ namespace FourSlashInterface { this.state.verifyNoMatchingBracePosition(bracePosition); } - public docCommentTemplateAt(marker: string | FourSlash.Marker, expectedOffset: number, expectedText: string) { + public docCommentTemplateAt(marker: string | FourSlash.Marker, expectedOffset: number, expectedText: string, options?: ts.DocCommentTemplateOptions) { this.state.goToMarker(marker); - this.state.verifyDocCommentTemplate({ newText: expectedText.replace(/\r?\n/g, "\r\n"), caretOffset: expectedOffset }); + this.state.verifyDocCommentTemplate({ newText: expectedText.replace(/\r?\n/g, "\r\n"), caretOffset: expectedOffset }, options); } public noDocCommentTemplateAt(marker: string | FourSlash.Marker) { diff --git a/src/harness/harnessLanguageService.ts b/src/harness/harnessLanguageService.ts index 85164d58bb122..1a056683f912c 100644 --- a/src/harness/harnessLanguageService.ts +++ b/src/harness/harnessLanguageService.ts @@ -558,8 +558,8 @@ namespace Harness.LanguageService { getFormattingEditsAfterKeystroke(fileName: string, position: number, key: string, options: ts.FormatCodeOptions): ts.TextChange[] { return unwrapJSONCallResult(this.shim.getFormattingEditsAfterKeystroke(fileName, position, key, JSON.stringify(options))); } - getDocCommentTemplateAtPosition(fileName: string, position: number): ts.TextInsertion { - return unwrapJSONCallResult(this.shim.getDocCommentTemplateAtPosition(fileName, position)); + getDocCommentTemplateAtPosition(fileName: string, position: number, options?: ts.DocCommentTemplateOptions): ts.TextInsertion { + return unwrapJSONCallResult(this.shim.getDocCommentTemplateAtPosition(fileName, position, options)); } isValidBraceCompletionAtPosition(fileName: string, position: number, openingBrace: number): boolean { return unwrapJSONCallResult(this.shim.isValidBraceCompletionAtPosition(fileName, position, openingBrace)); diff --git a/src/lib/es5.d.ts b/src/lib/es5.d.ts index 0a7f8846ca01e..98bb0ee676e5d 100644 --- a/src/lib/es5.d.ts +++ b/src/lib/es5.d.ts @@ -4331,8 +4331,8 @@ declare namespace Intl { interface DateTimeFormatOptions { localeMatcher?: "best fit" | "lookup"; - weekday?: "long" | "short" | "narrow"; - era?: "long" | "short" | "narrow"; + weekday?: "long" | "short" | "narrow"; + era?: "long" | "short" | "narrow"; year?: "numeric" | "2-digit"; month?: "numeric" | "2-digit" | "long" | "short" | "narrow"; day?: "numeric" | "2-digit"; diff --git a/src/server/editorServices.ts b/src/server/editorServices.ts index 5787a5f01a678..1965cb20c8d49 100644 --- a/src/server/editorServices.ts +++ b/src/server/editorServices.ts @@ -207,7 +207,7 @@ namespace ts.server { const defaultTypeSafeList: SafeList = { "jquery": { // jquery files can have names like "jquery-1.10.2.min.js" (or "jquery.intellisense.js") - match: /jquery(-(\.?\d+)+)?(\.intellisense)?(\.min)?\.js$/i, + match: /jquery(-[\d\.]+)?(\.intellisense)?(\.min)?\.js$/i, types: ["jquery"] }, "WinJS": { @@ -922,13 +922,12 @@ namespace ts.server { case ActionSet: // Update the typing files and update the project project.updateTypingFiles(this.typingsCache.updateTypingsForProject(response.projectName, response.compilerOptions, response.typeAcquisition, response.unresolvedImports, response.typings)); - break; + return; case ActionInvalidate: // Do not clear resolution cache, there was changes detected in typings, so enque typing request and let it get us correct results this.typingsCache.enqueueInstallTypingsForProject(project, project.lastCachedUnresolvedImportsList, /*forceRefresh*/ true); return; } - this.delayUpdateProjectGraphAndEnsureProjectStructureForOpenFiles(project); } /*@internal*/ @@ -1982,28 +1981,17 @@ namespace ts.server { totalNonTsFileSize += this.host.getFileSize(fileName); if (totalNonTsFileSize > maxProgramSizeForNonTsFiles || totalNonTsFileSize > availableSpace) { - this.logger.info(getExceedLimitMessage({ propertyReader, hasTSFileExtension: ts.hasTSFileExtension, host: this.host }, totalNonTsFileSize)); // eslint-disable-line @typescript-eslint/no-unnecessary-qualifier + const top5LargestFiles = fileNames.map(f => propertyReader.getFileName(f)) + .filter(name => !hasTSFileExtension(name)) + .map(name => ({ name, size: this.host.getFileSize!(name) })) + .sort((a, b) => b.size - a.size) + .slice(0, 5); + this.logger.info(`Non TS file size exceeded limit (${totalNonTsFileSize}). Largest files: ${top5LargestFiles.map(file => `${file.name}:${file.size}`).join(", ")}`); // Keep the size as zero since it's disabled return fileName; } } - this.projectToSizeMap.set(name, totalNonTsFileSize); - - return; - - function getExceedLimitMessage(context: { propertyReader: FilePropertyReader, hasTSFileExtension: (filename: string) => boolean, host: ServerHost }, totalNonTsFileSize: number) { - const files = getTop5LargestFiles(context); - - return `Non TS file size exceeded limit (${totalNonTsFileSize}). Largest files: ${files.map(file => `${file.name}:${file.size}`).join(", ")}`; - } - function getTop5LargestFiles({ propertyReader, hasTSFileExtension, host }: { propertyReader: FilePropertyReader, hasTSFileExtension: (filename: string) => boolean, host: ServerHost }) { - return fileNames.map(f => propertyReader.getFileName(f)) - .filter(name => hasTSFileExtension(name)) - .map(name => ({ name, size: host.getFileSize!(name) })) // TODO: GH#18217 - .sort((a, b) => b.size - a.size) - .slice(0, 5); - } } private createExternalProject(projectFileName: string, files: protocol.ExternalFile[], options: protocol.ExternalProjectCompilerOptions, typeAcquisition: TypeAcquisition, excludedFiles: NormalizedPath[]) { diff --git a/src/server/project.ts b/src/server/project.ts index 6323e458227cb..ef1a51198178f 100644 --- a/src/server/project.ts +++ b/src/server/project.ts @@ -102,7 +102,7 @@ namespace ts.server { /** * The project root can be script info - if root is present, - * or it could be just normalized path if root wasnt present on the host(only for non inferred project) + * or it could be just normalized path if root wasn't present on the host(only for non inferred project) */ /* @internal */ export interface ProjectRootFile { @@ -147,7 +147,8 @@ namespace ts.server { /*@internal*/ private hasAddedorRemovedFiles = false; - private lastFileExceededProgramSize: string | undefined; + /*@internal*/ + lastFileExceededProgramSize: string | undefined; // wrapper over the real language service that will suppress all semantic operations protected languageService: LanguageService; @@ -1057,13 +1058,16 @@ namespace ts.server { /*@internal*/ updateTypingFiles(typingFiles: SortedReadonlyArray) { - enumerateInsertsAndDeletes(typingFiles, this.typingFiles, getStringComparer(!this.useCaseSensitiveFileNames()), + if (enumerateInsertsAndDeletes(typingFiles, this.typingFiles, getStringComparer(!this.useCaseSensitiveFileNames()), /*inserted*/ noop, removed => this.detachScriptInfoFromProject(removed) - ); - this.typingFiles = typingFiles; - // Invalidate files with unresolved imports - this.resolutionCache.setFilesWithInvalidatedNonRelativeUnresolvedImports(this.cachedUnresolvedImportsPerFile); + )) { + // If typing files changed, then only schedule project update + this.typingFiles = typingFiles; + // Invalidate files with unresolved imports + this.resolutionCache.setFilesWithInvalidatedNonRelativeUnresolvedImports(this.cachedUnresolvedImportsPerFile); + this.projectService.delayUpdateProjectGraphAndEnsureProjectStructureForOpenFiles(this); + } } /* @internal */ @@ -1577,6 +1581,10 @@ namespace ts.server { protected enablePlugin(pluginConfigEntry: PluginImport, searchPaths: string[], pluginConfigOverrides: Map | undefined) { this.projectService.logger.info(`Enabling plugin ${pluginConfigEntry.name} from candidate paths: ${searchPaths.join(",")}`); + if (!pluginConfigEntry.name || parsePackageName(pluginConfigEntry.name).rest) { + this.projectService.logger.info(`Skipped loading plugin ${pluginConfigEntry.name || JSON.stringify(pluginConfigEntry)} because only package name is allowed plugin name`); + return; + } const log = (message: string) => this.projectService.logger.info(message); let errorLogs: string[] | undefined; diff --git a/src/server/protocol.ts b/src/server/protocol.ts index 9b406411dfd2d..1ce0c66019f6d 100644 --- a/src/server/protocol.ts +++ b/src/server/protocol.ts @@ -861,6 +861,11 @@ namespace ts.server.protocol { * Length of the span. */ length: number; + /** + * Optional parameter for the semantic highlighting response, if absent it + * defaults to "original". + */ + format?: "original" | "2020" } /** @@ -3268,6 +3273,8 @@ namespace ts.server.protocol { readonly provideRefactorNotApplicableReason?: boolean; readonly allowRenameOfImportPath?: boolean; readonly includePackageJsonAutoImports?: "auto" | "on" | "off"; + + readonly generateReturnInDocTemplate?: boolean; } export interface CompilerOptions { diff --git a/src/server/session.ts b/src/server/session.ts index a3fcdc7787e7a..dc0d4f42f5c79 100644 --- a/src/server/session.ts +++ b/src/server/session.ts @@ -208,25 +208,25 @@ namespace ts.server { try { if (this.operationHost.isCancellationRequested()) { stop = true; - tracing.instant(tracing.Phase.Session, "stepCanceled", { seq: this.requestId, early: true }); + tracing?.instant(tracing.Phase.Session, "stepCanceled", { seq: this.requestId, early: true }); } else { - tracing.push(tracing.Phase.Session, "stepAction", { seq: this.requestId }); + tracing?.push(tracing.Phase.Session, "stepAction", { seq: this.requestId }); action(this); - tracing.pop(); + tracing?.pop(); } } catch (e) { // Cancellation or an error may have left incomplete events on the tracing stack. - tracing.popAll(); + tracing?.popAll(); stop = true; // ignore cancellation request if (e instanceof OperationCanceledException) { - tracing.instant(tracing.Phase.Session, "stepCanceled", { seq: this.requestId }); + tracing?.instant(tracing.Phase.Session, "stepCanceled", { seq: this.requestId }); } else { - tracing.instant(tracing.Phase.Session, "stepError", { seq: this.requestId, message: (e).message }); + tracing?.instant(tracing.Phase.Session, "stepError", { seq: this.requestId, message: (e).message }); this.operationHost.logError(e, `delayed processing of request ${this.requestId}`); } } @@ -947,7 +947,7 @@ namespace ts.server { } public event(body: T, eventName: string): void { - tracing.instant(tracing.Phase.Session, "event", { eventName }); + tracing?.instant(tracing.Phase.Session, "event", { eventName }); this.send(toEvent(eventName, body)); } @@ -1115,7 +1115,8 @@ namespace ts.server { private getEncodedSemanticClassifications(args: protocol.EncodedSemanticClassificationsRequestArgs) { const { file, project } = this.getFileAndProject(args); - return project.getLanguageService().getEncodedSemanticClassifications(file, args); + const format = args.format === "2020" ? SemanticClassificationFormat.TwentyTwenty : SemanticClassificationFormat.Original; + return project.getLanguageService().getEncodedSemanticClassifications(file, args, format); } private getProject(projectFileName: string | undefined): Project | undefined { @@ -1640,7 +1641,7 @@ namespace ts.server { private getDocCommentTemplate(args: protocol.FileLocationRequestArgs) { const { file, languageService } = this.getFileAndLanguageServiceForSyntacticOperation(args); const position = this.getPositionInFile(args, file); - return languageService.getDocCommentTemplateAtPosition(file, position); + return languageService.getDocCommentTemplateAtPosition(file, position, this.getPreferences(file)); } private getSpanOfEnclosingComment(args: protocol.SpanOfEnclosingCommentRequestArgs) { @@ -2961,12 +2962,12 @@ namespace ts.server { request = this.parseMessage(message); relevantFile = request.arguments && (request as protocol.FileRequest).arguments.file ? (request as protocol.FileRequest).arguments : undefined; - tracing.instant(tracing.Phase.Session, "request", { seq: request.seq, command: request.command }); + tracing?.instant(tracing.Phase.Session, "request", { seq: request.seq, command: request.command }); perfLogger.logStartCommand("" + request.command, this.toStringMessage(message).substring(0, 100)); - tracing.push(tracing.Phase.Session, "executeCommand", { seq: request.seq, command: request.command }, /*separateBeginAndEnd*/ true); + tracing?.push(tracing.Phase.Session, "executeCommand", { seq: request.seq, command: request.command }, /*separateBeginAndEnd*/ true); const { response, responseRequired } = this.executeCommand(request); - tracing.pop(); + tracing?.pop(); if (this.logger.hasLevel(LogLevel.requestTime)) { const elapsedTime = hrTimeToMilliseconds(this.hrtime(start)).toFixed(4); @@ -2980,7 +2981,7 @@ namespace ts.server { // Note: Log before writing the response, else the editor can complete its activity before the server does perfLogger.logStopCommand("" + request.command, "Success"); - tracing.instant(tracing.Phase.Session, "response", { seq: request.seq, command: request.command, success: !!response }); + tracing?.instant(tracing.Phase.Session, "response", { seq: request.seq, command: request.command, success: !!response }); if (response) { this.doOutput(response, request.command, request.seq, /*success*/ true); } @@ -2990,19 +2991,19 @@ namespace ts.server { } catch (err) { // Cancellation or an error may have left incomplete events on the tracing stack. - tracing.popAll(); + tracing?.popAll(); if (err instanceof OperationCanceledException) { // Handle cancellation exceptions perfLogger.logStopCommand("" + (request && request.command), "Canceled: " + err); - tracing.instant(tracing.Phase.Session, "commandCanceled", { seq: request?.seq, command: request?.command }); + tracing?.instant(tracing.Phase.Session, "commandCanceled", { seq: request?.seq, command: request?.command }); this.doOutput({ canceled: true }, request!.command, request!.seq, /*success*/ true); return; } this.logErrorWorker(err, this.toStringMessage(message), relevantFile); perfLogger.logStopCommand("" + (request && request.command), "Error: " + err); - tracing.instant(tracing.Phase.Session, "commandError", { seq: request?.seq, command: request?.command, message: (err).message }); + tracing?.instant(tracing.Phase.Session, "commandError", { seq: request?.seq, command: request?.command, message: (err).message }); this.doOutput( /*info*/ undefined, diff --git a/src/services/codefixes/addEmptyExportDeclaration.ts b/src/services/codefixes/addEmptyExportDeclaration.ts index 96b7a81e17bb8..ad68d5e0d40e5 100644 --- a/src/services/codefixes/addEmptyExportDeclaration.ts +++ b/src/services/codefixes/addEmptyExportDeclaration.ts @@ -1,7 +1,10 @@ /* @internal */ namespace ts.codefix { registerCodeFix({ - errorCodes: [Diagnostics.await_expressions_are_only_allowed_at_the_top_level_of_a_file_when_that_file_is_a_module_but_this_file_has_no_imports_or_exports_Consider_adding_an_empty_export_to_make_this_file_a_module.code], + errorCodes: [ + Diagnostics.await_expressions_are_only_allowed_at_the_top_level_of_a_file_when_that_file_is_a_module_but_this_file_has_no_imports_or_exports_Consider_adding_an_empty_export_to_make_this_file_a_module.code, + Diagnostics.for_await_loops_are_only_allowed_at_the_top_level_of_a_file_when_that_file_is_a_module_but_this_file_has_no_imports_or_exports_Consider_adding_an_empty_export_to_make_this_file_a_module.code, + ], getCodeActions: context => { const { sourceFile } = context; const changes = textChanges.ChangeTracker.with(context, changes => { diff --git a/src/services/codefixes/convertToAsyncFunction.ts b/src/services/codefixes/convertToAsyncFunction.ts index fb064d024fcd9..3fc61d8b45d3b 100644 --- a/src/services/codefixes/convertToAsyncFunction.ts +++ b/src/services/codefixes/convertToAsyncFunction.ts @@ -65,7 +65,7 @@ namespace ts.codefix { const isInJavascript = isInJSFile(functionToConvert); const setOfExpressionsToReturn = getAllPromiseExpressionsToReturn(functionToConvert, checker); const functionToConvertRenamed = renameCollidingVarNames(functionToConvert, checker, synthNamesMap); - const returnStatements = functionToConvertRenamed.body && isBlock(functionToConvertRenamed.body) ? getReturnStatementsWithPromiseHandlers(functionToConvertRenamed.body) : emptyArray; + const returnStatements = functionToConvertRenamed.body && isBlock(functionToConvertRenamed.body) ? getReturnStatementsWithPromiseHandlers(functionToConvertRenamed.body, checker) : emptyArray; const transformer: Transformer = { checker, synthNamesMap, setOfExpressionsToReturn, isInJSFile: isInJavascript }; if (!returnStatements.length) { return; @@ -90,10 +90,10 @@ namespace ts.codefix { } } - function getReturnStatementsWithPromiseHandlers(body: Block): readonly ReturnStatement[] { + function getReturnStatementsWithPromiseHandlers(body: Block, checker: TypeChecker): readonly ReturnStatement[] { const res: ReturnStatement[] = []; forEachReturnStatement(body, ret => { - if (isReturnStatementWithFixablePromiseHandler(ret)) res.push(ret); + if (isReturnStatementWithFixablePromiseHandler(ret, checker)) res.push(ret); }); return res; } @@ -374,13 +374,14 @@ namespace ts.codefix { case SyntaxKind.NullKeyword: // do not produce a transformed statement for a null argument break; + case SyntaxKind.PropertyAccessExpression: case SyntaxKind.Identifier: // identifier includes undefined if (!argName) { // undefined was argument passed to promise handler break; } - const synthCall = factory.createCallExpression(getSynthesizedDeepClone(func as Identifier), /*typeArguments*/ undefined, isSynthIdentifier(argName) ? [argName.identifier] : []); + const synthCall = factory.createCallExpression(getSynthesizedDeepClone(func as Identifier | PropertyAccessExpression), /*typeArguments*/ undefined, isSynthIdentifier(argName) ? [argName.identifier] : []); if (shouldReturn(parent, transformer)) { return maybeAnnotateAndReturn(synthCall, parent.typeArguments?.[0]); } @@ -410,7 +411,7 @@ namespace ts.codefix { for (const statement of funcBody.statements) { if (isReturnStatement(statement)) { seenReturnStatement = true; - if (isReturnStatementWithFixablePromiseHandler(statement)) { + if (isReturnStatementWithFixablePromiseHandler(statement, transformer.checker)) { refactoredStmts = refactoredStmts.concat(getInnerTransformationBody(transformer, [statement], prevArgName)); } else { @@ -432,7 +433,7 @@ namespace ts.codefix { seenReturnStatement); } else { - const innerRetStmts = isFixablePromiseHandler(funcBody) ? [factory.createReturnStatement(funcBody)] : emptyArray; + const innerRetStmts = isFixablePromiseHandler(funcBody, transformer.checker) ? [factory.createReturnStatement(funcBody)] : emptyArray; const innerCbBody = getInnerTransformationBody(transformer, innerRetStmts, prevArgName); if (innerCbBody.length > 0) { @@ -536,6 +537,9 @@ namespace ts.codefix { else if (isIdentifier(funcNode)) { name = getMapEntryOrDefault(funcNode); } + else if (isPropertyAccessExpression(funcNode) && isIdentifier(funcNode.name)) { + name = getMapEntryOrDefault(funcNode.name); + } // return undefined argName when arg is null or undefined // eslint-disable-next-line no-in-operator diff --git a/src/services/codefixes/fixAwaitInSyncFunction.ts b/src/services/codefixes/fixAwaitInSyncFunction.ts index c47ff6e71650d..84c054fdb887e 100644 --- a/src/services/codefixes/fixAwaitInSyncFunction.ts +++ b/src/services/codefixes/fixAwaitInSyncFunction.ts @@ -3,7 +3,7 @@ namespace ts.codefix { const fixId = "fixAwaitInSyncFunction"; const errorCodes = [ Diagnostics.await_expressions_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules.code, - Diagnostics.A_for_await_of_statement_is_only_allowed_within_an_async_function_or_async_generator.code, + Diagnostics.for_await_loops_are_only_allowed_within_async_functions_and_at_the_top_levels_of_modules.code, ]; registerCodeFix({ errorCodes, diff --git a/src/services/codefixes/fixModuleAndTargetOptions.ts b/src/services/codefixes/fixModuleAndTargetOptions.ts index fce565814836a..16ea0fab7fd07 100644 --- a/src/services/codefixes/fixModuleAndTargetOptions.ts +++ b/src/services/codefixes/fixModuleAndTargetOptions.ts @@ -1,7 +1,10 @@ /* @internal */ namespace ts.codefix { registerCodeFix({ - errorCodes: [Diagnostics.Top_level_await_expressions_are_only_allowed_when_the_module_option_is_set_to_esnext_or_system_and_the_target_option_is_set_to_es2017_or_higher.code], + errorCodes: [ + Diagnostics.Top_level_await_expressions_are_only_allowed_when_the_module_option_is_set_to_esnext_or_system_and_the_target_option_is_set_to_es2017_or_higher.code, + Diagnostics.Top_level_for_await_loops_are_only_allowed_when_the_module_option_is_set_to_esnext_or_system_and_the_target_option_is_set_to_es2017_or_higher.code, + ], getCodeActions: context => { const compilerOptions = context.program.getCompilerOptions(); const { configFile } = compilerOptions; diff --git a/src/services/codefixes/helpers.ts b/src/services/codefixes/helpers.ts index e590081323f2e..4e91a28dafadc 100644 --- a/src/services/codefixes/helpers.ts +++ b/src/services/codefixes/helpers.ts @@ -321,7 +321,7 @@ namespace ts.codefix { return typeNode; } - function createDummyParameters(argCount: number, names: (string | undefined)[] | undefined, types: (TypeNode | undefined)[] | undefined, minArgumentCount: number | undefined, inJs: boolean): ParameterDeclaration[] { + function createDummyParameters(argCount: number, names: (string | undefined)[] | undefined, types: (TypeNode | undefined)[] | undefined, minArgumentCount: number | undefined, inJs: boolean): ParameterDeclaration[] { const parameters: ParameterDeclaration[] = []; for (let i = 0; i < argCount; i++) { const newParameter = factory.createParameterDeclaration( diff --git a/src/services/codefixes/importFixes.ts b/src/services/codefixes/importFixes.ts index e47c7f79b53cf..9700e6b583b3e 100644 --- a/src/services/codefixes/importFixes.ts +++ b/src/services/codefixes/importFixes.ts @@ -215,7 +215,7 @@ namespace ts.codefix { : getAllReExportingModules(sourceFile, exportedSymbol, moduleSymbol, symbolName, host, program, /*useAutoImportProvider*/ true); const useRequire = shouldUseRequire(sourceFile, program); const preferTypeOnlyImport = compilerOptions.importsNotUsedAsValues === ImportsNotUsedAsValues.Error && !isSourceFileJS(sourceFile) && isValidTypeOnlyAliasUseSite(getTokenAtPosition(sourceFile, position)); - const moduleSpecifier = first(getNewImportInfos(program, sourceFile, position, preferTypeOnlyImport, useRequire, exportInfos, host, preferences)).moduleSpecifier; + const moduleSpecifier = getBestFix(getNewImportInfos(program, sourceFile, position, preferTypeOnlyImport, useRequire, exportInfos, host, preferences), sourceFile, program, host).moduleSpecifier; const fix = getImportFixForSymbol(sourceFile, exportInfos, moduleSymbol, symbolName, program, position, preferTypeOnlyImport, useRequire, host, preferences); return { moduleSpecifier, codeAction: codeFixActionToCodeAction(codeActionForFix({ host, formatContext, preferences }, sourceFile, symbolName, fix, getQuotePreference(sourceFile, preferences))) }; } @@ -223,7 +223,7 @@ namespace ts.codefix { function getImportFixForSymbol(sourceFile: SourceFile, exportInfos: readonly SymbolExportInfo[], moduleSymbol: Symbol, symbolName: string, program: Program, position: number | undefined, preferTypeOnlyImport: boolean, useRequire: boolean, host: LanguageServiceHost, preferences: UserPreferences) { Debug.assert(exportInfos.some(info => info.moduleSymbol === moduleSymbol), "Some exportInfo should match the specified moduleSymbol"); // We sort the best codefixes first, so taking `first` is best. - return first(getFixForImport(exportInfos, symbolName, position, preferTypeOnlyImport, useRequire, program, sourceFile, host, preferences)); + return getBestFix(getFixForImport(exportInfos, symbolName, position, preferTypeOnlyImport, useRequire, program, sourceFile, host, preferences), sourceFile, program, host); } function codeFixActionToCodeAction({ description, changes, commands }: CodeFixAction): CodeAction { @@ -424,28 +424,13 @@ namespace ts.codefix { ): readonly (FixAddNewImport | FixUseImportType)[] { const isJs = isSourceFileJS(sourceFile); const compilerOptions = program.getCompilerOptions(); - const { allowsImportingSpecifier } = createAutoImportFilter(sourceFile, program, host); - - const choicesForEachExportingModule = flatMap(moduleSymbols, ({ moduleSymbol, importKind, exportedSymbolIsTypeOnly }) => + return flatMap(moduleSymbols, ({ moduleSymbol, importKind, exportedSymbolIsTypeOnly }) => moduleSpecifiers.getModuleSpecifiers(moduleSymbol, program.getTypeChecker(), compilerOptions, sourceFile, createModuleSpecifierResolutionHost(program, host), preferences) .map((moduleSpecifier): FixAddNewImport | FixUseImportType => // `position` should only be undefined at a missing jsx namespace, in which case we shouldn't be looking for pure types. exportedSymbolIsTypeOnly && isJs ? { kind: ImportFixKind.ImportType, moduleSpecifier, position: Debug.checkDefined(position, "position should be defined") } : { kind: ImportFixKind.AddNew, moduleSpecifier, importKind, useRequire, typeOnly: preferTypeOnlyImport })); - - // Sort by presence in package.json, then shortest paths first - return sort(choicesForEachExportingModule, (a, b) => { - const allowsImportingA = allowsImportingSpecifier(a.moduleSpecifier); - const allowsImportingB = allowsImportingSpecifier(b.moduleSpecifier); - if (allowsImportingA && !allowsImportingB) { - return -1; - } - if (allowsImportingB && !allowsImportingA) { - return 1; - } - return a.moduleSpecifier.length - b.moduleSpecifier.length; - }); } function getFixesForAddImport( @@ -479,7 +464,31 @@ namespace ts.codefix { const info = errorCode === Diagnostics._0_refers_to_a_UMD_global_but_the_current_file_is_a_module_Consider_adding_an_import_instead.code ? getFixesInfoForUMDImport(context, symbolToken) : isIdentifier(symbolToken) ? getFixesInfoForNonUMDImport(context, symbolToken, useAutoImportProvider) : undefined; - return info && { ...info, fixes: sort(info.fixes, (a, b) => a.kind - b.kind) }; + return info && { ...info, fixes: sortFixes(info.fixes, context.sourceFile, context.program, context.host) }; + } + + function sortFixes(fixes: readonly ImportFix[], sourceFile: SourceFile, program: Program, host: LanguageServiceHost): readonly ImportFix[] { + const { allowsImportingSpecifier } = createAutoImportFilter(sourceFile, program, host); + return sort(fixes, (a, b) => compareValues(a.kind, b.kind) || compareModuleSpecifiers(a, b, allowsImportingSpecifier)); + } + + function getBestFix(fixes: readonly T[], sourceFile: SourceFile, program: Program, host: LanguageServiceHost): T { + // These will always be placed first if available, and are better than other kinds + if (fixes[0].kind === ImportFixKind.UseNamespace || fixes[0].kind === ImportFixKind.AddToExisting) { + return fixes[0]; + } + const { allowsImportingSpecifier } = createAutoImportFilter(sourceFile, program, host); + return fixes.reduce((best, fix) => + compareModuleSpecifiers(fix, best, allowsImportingSpecifier) === Comparison.LessThan ? fix : best + ); + } + + function compareModuleSpecifiers(a: ImportFix, b: ImportFix, allowsImportingSpecifier: (specifier: string) => boolean): Comparison { + if (a.kind !== ImportFixKind.UseNamespace && b.kind !== ImportFixKind.UseNamespace) { + return compareBooleans(allowsImportingSpecifier(a.moduleSpecifier), allowsImportingSpecifier(b.moduleSpecifier)) + || compareNumberOfDirectorySeparators(a.moduleSpecifier, b.moduleSpecifier); + } + return Comparison.EqualTo; } function getFixesInfoForUMDImport({ sourceFile, program, host, preferences }: CodeFixContextBase, token: Node): FixesInfo | undefined { @@ -600,7 +609,7 @@ namespace ts.codefix { const exported = getDefaultLikeExportWorker(importingFile, moduleSymbol, checker, compilerOptions); if (!exported) return undefined; const { symbol, kind } = exported; - const info = getDefaultExportInfoWorker(symbol, moduleSymbol, checker, compilerOptions); + const info = getDefaultExportInfoWorker(symbol, checker, compilerOptions); return info && { symbol, kind, ...info }; } @@ -636,7 +645,7 @@ namespace ts.codefix { return allowSyntheticDefaults ? ImportKind.Default : ImportKind.CommonJS; } - function getDefaultExportInfoWorker(defaultExport: Symbol, moduleSymbol: Symbol, checker: TypeChecker, compilerOptions: CompilerOptions): { readonly symbolForMeaning: Symbol, readonly name: string } | undefined { + function getDefaultExportInfoWorker(defaultExport: Symbol, checker: TypeChecker, compilerOptions: CompilerOptions): { readonly symbolForMeaning: Symbol, readonly name: string } | undefined { const localSymbol = getLocalSymbolForExportDefault(defaultExport); if (localSymbol) return { symbolForMeaning: localSymbol, name: localSymbol.name }; @@ -650,7 +659,7 @@ namespace ts.codefix { // but we can still offer completions for it. // - `aliased.parent` will be undefined if the module is exporting `globalThis.something`, // or another expression that resolves to a global. - return getDefaultExportInfoWorker(aliased, aliased.parent, checker, compilerOptions); + return getDefaultExportInfoWorker(aliased, checker, compilerOptions); } } @@ -658,15 +667,13 @@ namespace ts.codefix { defaultExport.escapedName !== InternalSymbolName.ExportEquals) { return { symbolForMeaning: defaultExport, name: defaultExport.getName() }; } - return { symbolForMeaning: defaultExport, name: moduleSymbolToValidIdentifier(moduleSymbol, compilerOptions.target) }; + return { symbolForMeaning: defaultExport, name: getNameForExportedSymbol(defaultExport, compilerOptions.target) }; } function getNameForExportDefault(symbol: Symbol): string | undefined { return symbol.declarations && firstDefined(symbol.declarations, declaration => { if (isExportAssignment(declaration)) { - if (isIdentifier(declaration.expression)) { - return declaration.expression.text; - } + return tryCast(skipOuterExpressions(declaration.expression), isIdentifier)?.text; } else if (isExportSpecifier(declaration)) { Debug.assert(declaration.name.text === InternalSymbolName.Default, "Expected the specifier to be a default export"); diff --git a/src/services/completions.ts b/src/services/completions.ts index 3e02ba7c20237..a3c957442cb0f 100644 --- a/src/services/completions.ts +++ b/src/services/completions.ts @@ -732,7 +732,7 @@ namespace ts.Completions { exportedSymbol, moduleSymbol, sourceFile, - getNameForExportedSymbol(symbol, compilerOptions.target!), + getNameForExportedSymbol(symbol, compilerOptions.target), host, program, formatContext, @@ -855,6 +855,7 @@ namespace ts.Completions { host: LanguageServiceHost ): CompletionData | Request | undefined { const typeChecker = program.getTypeChecker(); + const compilerOptions = program.getCompilerOptions(); let start = timestamp(); let currentToken = getTokenAtPosition(sourceFile, position); // TODO: GH#15853 @@ -1386,7 +1387,7 @@ namespace ts.Completions { // Get all entities in the current scope. completionKind = CompletionKind.Global; - isNewIdentifierLocation = isNewIdentifierDefinitionLocation(contextToken); + isNewIdentifierLocation = isNewIdentifierDefinitionLocation(); if (previousToken !== contextToken) { Debug.assert(!!previousToken, "Expected 'contextToken' to be defined when different from 'previousToken'."); @@ -1504,6 +1505,8 @@ namespace ts.Completions { : KeywordCompletionFilters.TypeKeywords; } + const variableDeclaration = getVariableDeclaration(location); + filterMutate(symbols, symbol => { if (!isSourceFile(location)) { // export = /**/ here we want to get all meanings, so any symbol is ok @@ -1511,7 +1514,28 @@ namespace ts.Completions { return true; } - symbol = skipAlias(symbol, typeChecker); + // Filter out variables from their own initializers + // `const a = /* no 'a' here */` + if (variableDeclaration && symbol.valueDeclaration === variableDeclaration) { + return false; + } + + // External modules can have global export declarations that will be + // available as global keywords in all scopes. But if the external module + // already has an explicit export and user only wants to user explicit + // module imports then the global keywords will be filtered out so auto + // import suggestions will win in the completion + const symbolOrigin = skipAlias(symbol, typeChecker); + // We only want to filter out the global keywords + // Auto Imports are not available for scripts so this conditional is always false + if (!!sourceFile.externalModuleIndicator + && !compilerOptions.allowUmdGlobalAccess + && symbolToSortTextMap[getSymbolId(symbol)] === SortText.GlobalsOrKeywords + && symbolToSortTextMap[getSymbolId(symbolOrigin)] === SortText.AutoImportSuggestions) { + return false; + } + // Continue with origin symbol + symbol = symbolOrigin; // import m = /**/ <-- It can only access namespace (if typing import = x. this would get member symbols and not namespace) if (isInRightSideOfInternalImportEqualsDeclaration(location)) { @@ -1529,6 +1553,19 @@ namespace ts.Completions { }); } + function getVariableDeclaration(property: Node): VariableDeclaration | undefined { + const variableDeclaration = findAncestor(property, node => + isFunctionBlock(node) || isArrowFunctionBody(node) || isBindingPattern(node) + ? "quit" + : isVariableDeclaration(node)); + + return variableDeclaration as VariableDeclaration | undefined; + } + + function isArrowFunctionBody(node: Node) { + return node.parent && isArrowFunction(node.parent) && node.parent.body === node; + }; + function isTypeOnlyCompletion(): boolean { return insideJsDocTagTypeExpression || !isContextTokenValueLocation(contextToken) && @@ -1812,18 +1849,19 @@ namespace ts.Completions { return false; } - function isNewIdentifierDefinitionLocation(previousToken: Node | undefined): boolean { - if (previousToken) { - const containingNodeKind = previousToken.parent.kind; + function isNewIdentifierDefinitionLocation(): boolean { + if (contextToken) { + const containingNodeKind = contextToken.parent.kind; // Previous token may have been a keyword that was converted to an identifier. - switch (keywordForNode(previousToken)) { + switch (keywordForNode(contextToken)) { case SyntaxKind.CommaToken: return containingNodeKind === SyntaxKind.CallExpression // func( a, | || containingNodeKind === SyntaxKind.Constructor // constructor( a, | /* public, protected, private keywords are allowed here, so show completion */ || containingNodeKind === SyntaxKind.NewExpression // new C(a, | || containingNodeKind === SyntaxKind.ArrayLiteralExpression // [a, | || containingNodeKind === SyntaxKind.BinaryExpression // const x = (a, | - || containingNodeKind === SyntaxKind.FunctionType; // var x: (s: string, list| + || containingNodeKind === SyntaxKind.FunctionType // var x: (s: string, list| + || containingNodeKind === SyntaxKind.ObjectLiteralExpression; // const obj = { x, | case SyntaxKind.OpenParenToken: return containingNodeKind === SyntaxKind.CallExpression // func( | @@ -1845,7 +1883,8 @@ namespace ts.Completions { return containingNodeKind === SyntaxKind.ModuleDeclaration; // module A.| case SyntaxKind.OpenBraceToken: - return containingNodeKind === SyntaxKind.ClassDeclaration; // class A{ | + return containingNodeKind === SyntaxKind.ClassDeclaration // class A { | + || containingNodeKind === SyntaxKind.ObjectLiteralExpression; // const obj = { | case SyntaxKind.EqualsToken: return containingNodeKind === SyntaxKind.VariableDeclaration // const x = a| diff --git a/src/services/formatting/formatting.ts b/src/services/formatting/formatting.ts index ee32d0a4dfdde..5415158422cef 100644 --- a/src/services/formatting/formatting.ts +++ b/src/services/formatting/formatting.ts @@ -390,7 +390,8 @@ namespace ts.formatting { sourceFile)); } - function formatSpanWorker(originalRange: TextRange, + function formatSpanWorker( + originalRange: TextRange, enclosingNode: Node, initialIndentation: number, delta: number, @@ -424,16 +425,20 @@ namespace ts.formatting { } if (!formattingScanner.isOnToken()) { + const indentation = SmartIndenter.nodeWillIndentChild(options, enclosingNode, /*child*/ undefined, sourceFile, /*indentByDefault*/ false) + ? initialIndentation + options.indentSize! + : initialIndentation; const leadingTrivia = formattingScanner.getCurrentLeadingTrivia(); if (leadingTrivia) { - indentTriviaItems(leadingTrivia, initialIndentation, /*indentNextTokenOrTrivia*/ false, + indentTriviaItems(leadingTrivia, indentation, /*indentNextTokenOrTrivia*/ false, item => processRange(item, sourceFile.getLineAndCharacterOfPosition(item.pos), enclosingNode, enclosingNode, /*dynamicIndentation*/ undefined!)); - if (options.trimTrailingWhitespace !== false) { - trimTrailingWhitespacesForRemainingRange(); - } } } + if (options.trimTrailingWhitespace !== false) { + trimTrailingWhitespacesForRemainingRange(); + } + return edits; // local functions @@ -498,10 +503,11 @@ namespace ts.formatting { // - we need to get the indentation on last line and the delta of parent return { indentation: indentationOnLastIndentedLine, delta: parentDynamicIndentation.getDelta(node) }; } - else if (SmartIndenter.childStartsOnTheSameLineWithElseInIfStatement(parent, node, startLine, sourceFile)) { - return { indentation: parentDynamicIndentation.getIndentation(), delta }; - } - else if (SmartIndenter.argumentStartsOnSameLineAsPreviousArgument(parent, node, startLine, sourceFile)) { + else if ( + SmartIndenter.childStartsOnTheSameLineWithElseInIfStatement(parent, node, startLine, sourceFile) || + SmartIndenter.childIsUnindentedBranchOfConditionalExpression(parent, node, startLine, sourceFile) || + SmartIndenter.argumentStartsOnSameLineAsPreviousArgument(parent, node, startLine, sourceFile) + ) { return { indentation: parentDynamicIndentation.getIndentation(), delta }; } else { @@ -592,6 +598,7 @@ namespace ts.formatting { case SyntaxKind.JsxOpeningElement: case SyntaxKind.JsxClosingElement: case SyntaxKind.JsxSelfClosingElement: + case SyntaxKind.ExpressionWithTypeArguments: return false; } break; diff --git a/src/services/formatting/smartIndenter.ts b/src/services/formatting/smartIndenter.ts index b8af97350f7df..7bca924dd7184 100644 --- a/src/services/formatting/smartIndenter.ts +++ b/src/services/formatting/smartIndenter.ts @@ -182,7 +182,25 @@ namespace ts.formatting { if (useActualIndentation) { // check if current node is a list item - if yes, take indentation from it - let actualIndentation = getActualIndentationForListItem(current, sourceFile, options, !parentAndChildShareLine); + const firstListChild = getContainingList(current, sourceFile)?.[0]; + // A list indents its children if the children begin on a later line than the list itself: + // + // f1( L0 - List start + // { L1 - First child start: indented, along with all other children + // prop: 0 + // }, + // { + // prop: 1 + // } + // ) + // + // f2({ L0 - List start and first child start: children are not indented. + // prop: 0 Object properties are indented only one level, because the list + // }, { itself contributes nothing. + // prop: 1 L3 - The indentation of the second object literal is best understood by + // }) looking at the relationship between the list and *first* list item. + const listIndentsChild = !!firstListChild && getStartLineAndCharacterForNode(firstListChild, sourceFile).line > containingListOrParentStart.line; + let actualIndentation = getActualIndentationForListItem(current, sourceFile, options, listIndentsChild); if (actualIndentation !== Value.Unknown) { return actualIndentation + indentationDelta; } @@ -323,6 +341,49 @@ namespace ts.formatting { return false; } + // A multiline conditional typically increases the indentation of its whenTrue and whenFalse children: + // + // condition + // ? whenTrue + // : whenFalse; + // + // However, that indentation does not apply if the subexpressions themselves span multiple lines, + // applying their own indentation: + // + // (() => { + // return complexCalculationForCondition(); + // })() ? { + // whenTrue: 'multiline object literal' + // } : ( + // whenFalse('multiline parenthesized expression') + // ); + // + // In these cases, we must discard the indentation increase that would otherwise be applied to the + // whenTrue and whenFalse children to avoid double-indenting their contents. To identify this scenario, + // we check for the whenTrue branch beginning on the line that the condition ends, and the whenFalse + // branch beginning on the line that the whenTrue branch ends. + export function childIsUnindentedBranchOfConditionalExpression(parent: Node, child: TextRangeWithKind, childStartLine: number, sourceFile: SourceFileLike): boolean { + if (isConditionalExpression(parent) && (child === parent.whenTrue || child === parent.whenFalse)) { + const conditionEndLine = getLineAndCharacterOfPosition(sourceFile, parent.condition.end).line; + if (child === parent.whenTrue) { + return childStartLine === conditionEndLine; + } + else { + // On the whenFalse side, we have to look at the whenTrue side, because if that one was + // indented, whenFalse must also be indented: + // + // const y = true + // ? 1 : ( L1: whenTrue indented because it's on a new line + // 0 L2: indented two stops, one because whenTrue was indented + // ); and one because of the parentheses spanning multiple lines + const trueStartLine = getStartLineAndCharacterForNode(parent.whenTrue, sourceFile).line; + const trueEndLine = getLineAndCharacterOfPosition(sourceFile, parent.whenTrue.end).line; + return conditionEndLine === trueStartLine && trueEndLine === childStartLine; + } + } + return false; + } + export function argumentStartsOnSameLineAsPreviousArgument(parent: Node, child: TextRangeWithKind, childStartLine: number, sourceFile: SourceFileLike): boolean { if (isCallOrNewExpression(parent)) { if (!parent.arguments) return false; @@ -581,7 +642,7 @@ namespace ts.formatting { if (childKind === SyntaxKind.TypeLiteral || childKind === SyntaxKind.TupleType) { return false; } - // falls through + break; } // No explicit rule for given nodes so the result will follow the default value argument return indentByDefault; diff --git a/src/services/jsDoc.ts b/src/services/jsDoc.ts index 7874ddfcb3ac5..b0e133521cdf0 100644 --- a/src/services/jsDoc.ts +++ b/src/services/jsDoc.ts @@ -251,7 +251,7 @@ namespace ts.JsDoc { * @param position The (character-indexed) position in the file where the check should * be performed. */ - export function getDocCommentTemplateAtPosition(newLine: string, sourceFile: SourceFile, position: number): TextInsertion | undefined { + export function getDocCommentTemplateAtPosition(newLine: string, sourceFile: SourceFile, position: number, options?: DocCommentTemplateOptions): TextInsertion | undefined { const tokenAtPos = getTokenAtPosition(sourceFile, position); const existingDocComment = findAncestor(tokenAtPos, isJSDoc); if (existingDocComment && (existingDocComment.comment !== undefined || length(existingDocComment.tags))) { @@ -265,7 +265,7 @@ namespace ts.JsDoc { return undefined; } - const commentOwnerInfo = getCommentOwnerInfo(tokenAtPos); + const commentOwnerInfo = getCommentOwnerInfo(tokenAtPos, options); if (!commentOwnerInfo) { return undefined; } @@ -325,10 +325,10 @@ namespace ts.JsDoc { readonly parameters?: readonly ParameterDeclaration[]; readonly hasReturn?: boolean; } - function getCommentOwnerInfo(tokenAtPos: Node): CommentOwnerInfo | undefined { - return forEachAncestor(tokenAtPos, getCommentOwnerInfoWorker); + function getCommentOwnerInfo(tokenAtPos: Node, options: DocCommentTemplateOptions | undefined): CommentOwnerInfo | undefined { + return forEachAncestor(tokenAtPos, n => getCommentOwnerInfoWorker(n, options)); } - function getCommentOwnerInfoWorker(commentOwner: Node): CommentOwnerInfo | undefined | "quit" { + function getCommentOwnerInfoWorker(commentOwner: Node, options: DocCommentTemplateOptions | undefined): CommentOwnerInfo | undefined | "quit" { switch (commentOwner.kind) { case SyntaxKind.FunctionDeclaration: case SyntaxKind.FunctionExpression: @@ -337,10 +337,10 @@ namespace ts.JsDoc { case SyntaxKind.MethodSignature: case SyntaxKind.ArrowFunction: const host = commentOwner as ArrowFunction | FunctionDeclaration | MethodDeclaration | ConstructorDeclaration | MethodSignature; - return { commentOwner, parameters: host.parameters, hasReturn: hasReturn(host) }; + return { commentOwner, parameters: host.parameters, hasReturn: hasReturn(host, options) }; case SyntaxKind.PropertyAssignment: - return getCommentOwnerInfoWorker((commentOwner as PropertyAssignment).initializer); + return getCommentOwnerInfoWorker((commentOwner as PropertyAssignment).initializer, options); case SyntaxKind.ClassDeclaration: case SyntaxKind.InterfaceDeclaration: @@ -357,7 +357,7 @@ namespace ts.JsDoc { ? getRightHandSideOfAssignment(varDeclarations[0].initializer) : undefined; return host - ? { commentOwner, parameters: host.parameters, hasReturn: hasReturn(host) } + ? { commentOwner, parameters: host.parameters, hasReturn: hasReturn(host, options) } : { commentOwner }; } @@ -371,27 +371,28 @@ namespace ts.JsDoc { return commentOwner.parent.kind === SyntaxKind.ModuleDeclaration ? undefined : { commentOwner }; case SyntaxKind.ExpressionStatement: - return getCommentOwnerInfoWorker((commentOwner as ExpressionStatement).expression); + return getCommentOwnerInfoWorker((commentOwner as ExpressionStatement).expression, options); case SyntaxKind.BinaryExpression: { const be = commentOwner as BinaryExpression; if (getAssignmentDeclarationKind(be) === AssignmentDeclarationKind.None) { return "quit"; } return isFunctionLike(be.right) - ? { commentOwner, parameters: be.right.parameters, hasReturn: hasReturn(be.right) } + ? { commentOwner, parameters: be.right.parameters, hasReturn: hasReturn(be.right, options) } : { commentOwner }; } case SyntaxKind.PropertyDeclaration: const init = (commentOwner as PropertyDeclaration).initializer; if (init && (isFunctionExpression(init) || isArrowFunction(init))) { - return { commentOwner, parameters: init.parameters, hasReturn: hasReturn(init) }; + return { commentOwner, parameters: init.parameters, hasReturn: hasReturn(init, options) }; } } } - function hasReturn(node: Node) { - return isArrowFunction(node) && isExpression(node.body) - || isFunctionLikeDeclaration(node) && node.body && isBlock(node.body) && !!forEachReturnStatement(node.body, n => n); + function hasReturn(node: Node, options: DocCommentTemplateOptions | undefined) { + return !!options?.generateReturnInDocTemplate && + (isArrowFunction(node) && isExpression(node.body) + || isFunctionLikeDeclaration(node) && node.body && isBlock(node.body) && !!forEachReturnStatement(node.body, n => n)); } function getRightHandSideOfAssignment(rightHandSide: Expression): FunctionExpression | ArrowFunction | ConstructorDeclaration | undefined { diff --git a/src/services/navigationBar.ts b/src/services/navigationBar.ts index 0ace63aaced71..2158270142a1e 100644 --- a/src/services/navigationBar.ts +++ b/src/services/navigationBar.ts @@ -183,6 +183,17 @@ namespace ts.NavigationBar { endNode(); } + function addNodeWithRecursiveInitializer(node: VariableDeclaration | PropertyAssignment | BindingElement | PropertyDeclaration): void { + if (node.initializer && isFunctionOrClassExpression(node.initializer)) { + startNode(node); + forEachChild(node.initializer, addChildrenRecursively); + endNode(); + } + else { + addNodeWithRecursiveChild(node, node.initializer); + } + } + /** Look for navigation bar items in node's subtree, adding them to the current `parent`. */ function addChildrenRecursively(node: Node | undefined): void { curCancellationToken.throwIfCancellationRequested(); @@ -215,8 +226,12 @@ namespace ts.NavigationBar { break; case SyntaxKind.PropertyDeclaration: + if (!hasDynamicName(node)) { + addNodeWithRecursiveInitializer(node); + } + break; case SyntaxKind.PropertySignature: - if (!hasDynamicName((node))) { + if (!hasDynamicName(node)) { addLeafNode(node); } break; @@ -255,22 +270,16 @@ namespace ts.NavigationBar { break; case SyntaxKind.BindingElement: case SyntaxKind.PropertyAssignment: - case SyntaxKind.VariableDeclaration: - const { name, initializer } = node; - if (isBindingPattern(name)) { - addChildrenRecursively(name); - } - else if (initializer && isFunctionOrClassExpression(initializer)) { - // Add a node for the VariableDeclaration, but not for the initializer. - startNode(node); - forEachChild(initializer, addChildrenRecursively); - endNode(); + case SyntaxKind.VariableDeclaration: { + const child = node; + if (isBindingPattern(child.name)) { + addChildrenRecursively(child.name); } else { - addNodeWithRecursiveChild(node, initializer); + addNodeWithRecursiveInitializer(child); } break; - + } case SyntaxKind.FunctionDeclaration: const nameNode = (node).name; // If we see a function declaration track as a possible ES5 class diff --git a/src/services/refactors/convertParamsToDestructuredObject.ts b/src/services/refactors/convertParamsToDestructuredObject.ts index feef5606b113c..c9e587837ddd9 100644 --- a/src/services/refactors/convertParamsToDestructuredObject.ts +++ b/src/services/refactors/convertParamsToDestructuredObject.ts @@ -51,18 +51,14 @@ namespace ts.refactor.convertParamsToDestructuredObject { changes: textChanges.ChangeTracker, functionDeclaration: ValidFunctionDeclaration, groupedReferences: GroupedReferences): void { - const newParamDeclaration = map(createNewParameters(functionDeclaration, program, host), param => getSynthesizedDeepClone(param)); - changes.replaceNodeRangeWithNodes( - sourceFile, - first(functionDeclaration.parameters), - last(functionDeclaration.parameters), - newParamDeclaration, - { joiner: ", ", - // indentation is set to 0 because otherwise the object parameter will be indented if there is a `this` parameter - indentation: 0, - leadingTriviaOption: textChanges.LeadingTriviaOption.IncludeAll, - trailingTriviaOption: textChanges.TrailingTriviaOption.Include - }); + const signature = groupedReferences.signature; + const newFunctionDeclarationParams = map(createNewParameters(functionDeclaration, program, host), param => getSynthesizedDeepClone(param)); + + if (signature) { + const newSignatureParams = map(createNewParameters(signature, program, host), param => getSynthesizedDeepClone(param)); + replaceParameters(signature, newSignatureParams); + } + replaceParameters(functionDeclaration, newFunctionDeclarationParams); const functionCalls = sortAndDeduplicate(groupedReferences.functionCalls, /*comparer*/ (a, b) => compareValues(a.pos, b.pos)); for (const call of functionCalls) { @@ -76,6 +72,21 @@ namespace ts.refactor.convertParamsToDestructuredObject { { leadingTriviaOption: textChanges.LeadingTriviaOption.IncludeAll, trailingTriviaOption: textChanges.TrailingTriviaOption.Include }); } } + + function replaceParameters(declarationOrSignature: ValidFunctionDeclaration | ValidMethodSignature, parameterDeclarations: ParameterDeclaration[]) { + changes.replaceNodeRangeWithNodes( + sourceFile, + first(declarationOrSignature.parameters), + last(declarationOrSignature.parameters), + parameterDeclarations, + { + joiner: ", ", + // indentation is set to 0 because otherwise the object parameter will be indented if there is a `this` parameter + indentation: 0, + leadingTriviaOption: textChanges.LeadingTriviaOption.IncludeAll, + trailingTriviaOption: textChanges.TrailingTriviaOption.Include + }); + } } function getGroupedReferences(functionDeclaration: ValidFunctionDeclaration, program: Program, cancellationToken: CancellationToken): GroupedReferences { @@ -99,13 +110,41 @@ namespace ts.refactor.convertParamsToDestructuredObject { const functionSymbols = map(functionNames, getSymbolTargetAtLocation); const classSymbols = map(classNames, getSymbolTargetAtLocation); const isConstructor = isConstructorDeclaration(functionDeclaration); + const contextualSymbols = map(functionNames, name => getSymbolForContextualType(name, checker)); for (const entry of referenceEntries) { - if (entry.kind !== FindAllReferences.EntryKind.Node) { + if (entry.kind === FindAllReferences.EntryKind.Span) { groupedReferences.valid = false; continue; } + /* Declarations in object literals may be implementations of method signatures which have a different symbol from the declaration + For example: + interface IFoo { m(a: number): void } + const foo: IFoo = { m(a: number): void {} } + In these cases we get the symbol for the signature from the contextual type. + */ + if (contains(contextualSymbols, getSymbolTargetAtLocation(entry.node))) { + if (isValidMethodSignature(entry.node.parent)) { + groupedReferences.signature = entry.node.parent; + continue; + } + const call = entryToFunctionCall(entry); + if (call) { + groupedReferences.functionCalls.push(call); + continue; + } + } + + const contextualSymbol = getSymbolForContextualType(entry.node, checker); + if (contextualSymbol && contains(contextualSymbols, contextualSymbol)) { + const decl = entryToDeclaration(entry); + if (decl) { + groupedReferences.declarations.push(decl); + continue; + } + } + /* We compare symbols because in some cases find all references wil return a reference that may or may not be to the refactored function. Example from the refactorConvertParamsToDestructuredObject_methodCallUnion.ts test: class A { foo(a: number, b: number) { return a + b; } } @@ -175,6 +214,20 @@ namespace ts.refactor.convertParamsToDestructuredObject { } } + /** + * Gets the symbol for the contextual type of the node if it is not a union or intersection. + */ + function getSymbolForContextualType(node: Node, checker: TypeChecker): Symbol | undefined { + const element = getContainingObjectLiteralElement(node); + if (element) { + const contextualType = checker.getContextualTypeForObjectLiteralElement(element); + const symbol = contextualType?.getSymbol(); + if (symbol && !(getCheckFlags(symbol) & CheckFlags.Synthetic)) { + return symbol; + } + } + } + function entryToImportOrExport(entry: FindAllReferences.NodeEntry): Node | undefined { const node = entry.node; @@ -292,6 +345,10 @@ namespace ts.refactor.convertParamsToDestructuredObject { return false; } + function isValidMethodSignature(node: Node): node is ValidMethodSignature { + return isMethodSignature(node) && (isInterfaceDeclaration(node.parent) || isTypeLiteralNode(node.parent)); + } + function isValidFunctionDeclaration( functionDeclaration: FunctionLikeDeclaration, checker: TypeChecker): functionDeclaration is ValidFunctionDeclaration { @@ -300,6 +357,11 @@ namespace ts.refactor.convertParamsToDestructuredObject { case SyntaxKind.FunctionDeclaration: return hasNameOrDefault(functionDeclaration) && isSingleImplementation(functionDeclaration, checker); case SyntaxKind.MethodDeclaration: + if (isObjectLiteralExpression(functionDeclaration.parent)) { + const contextualSymbol = getSymbolForContextualType(functionDeclaration.name, checker); + // don't offer the refactor when there are multiple signatures since we won't know which ones the user wants to change + return contextualSymbol?.declarations.length === 1 && isSingleImplementation(functionDeclaration, checker); + } return isSingleImplementation(functionDeclaration, checker); case SyntaxKind.Constructor: if (isClassDeclaration(functionDeclaration.parent)) { @@ -398,7 +460,7 @@ namespace ts.refactor.convertParamsToDestructuredObject { return objectLiteral; } - function createNewParameters(functionDeclaration: ValidFunctionDeclaration, program: Program, host: LanguageServiceHost): NodeArray { + function createNewParameters(functionDeclaration: ValidFunctionDeclaration | ValidMethodSignature, program: Program, host: LanguageServiceHost): NodeArray { const checker = program.getTypeChecker(); const refactorableParameters = getRefactorableParameters(functionDeclaration.parameters); const bindingElements = map(refactorableParameters, createBindingElementFromParameterDeclaration); @@ -584,6 +646,10 @@ namespace ts.refactor.convertParamsToDestructuredObject { parameters: NodeArray; } + interface ValidMethodSignature extends MethodSignature { + parameters: NodeArray; + } + type ValidFunctionDeclaration = ValidConstructor | ValidFunction | ValidMethod | ValidArrowFunction | ValidFunctionExpression; interface ValidParameterDeclaration extends ParameterDeclaration { @@ -595,6 +661,7 @@ namespace ts.refactor.convertParamsToDestructuredObject { interface GroupedReferences { functionCalls: (CallExpression | NewExpression)[]; declarations: Node[]; + signature?: ValidMethodSignature; classReferences?: ClassReferences; valid: boolean; } diff --git a/src/services/services.ts b/src/services/services.ts index 3b4ce09683446..1463d81dfdecc 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -1143,7 +1143,7 @@ namespace ts { public throwIfCancellationRequested(): void { if (this.isCancellationRequested()) { - tracing.instant(tracing.Phase.Session, "cancellationThrown", { kind: "CancellationTokenObject" }); + tracing?.instant(tracing.Phase.Session, "cancellationThrown", { kind: "CancellationTokenObject" }); throw new OperationCanceledException(); } } @@ -1174,7 +1174,7 @@ namespace ts { public throwIfCancellationRequested(): void { if (this.isCancellationRequested()) { - tracing.instant(tracing.Phase.Session, "cancellationThrown", { kind: "ThrottledCancellationToken" }); + tracing?.instant(tracing.Phase.Session, "cancellationThrown", { kind: "ThrottledCancellationToken" }); throw new OperationCanceledException(); } } @@ -2004,8 +2004,8 @@ namespace ts { : Promise.reject("Host does not implement `installPackage`"); } - function getDocCommentTemplateAtPosition(fileName: string, position: number): TextInsertion | undefined { - return JsDoc.getDocCommentTemplateAtPosition(getNewLineOrDefaultFromHost(host), syntaxTreeCache.getCurrentSourceFile(fileName), position); + function getDocCommentTemplateAtPosition(fileName: string, position: number, options?: DocCommentTemplateOptions): TextInsertion | undefined { + return JsDoc.getDocCommentTemplateAtPosition(getNewLineOrDefaultFromHost(host), syntaxTreeCache.getCurrentSourceFile(fileName), position, options); } function isValidBraceCompletionAtPosition(fileName: string, position: number, openingBrace: number): boolean { diff --git a/src/services/shims.ts b/src/services/shims.ts index 30144210271ea..e986820765ad9 100644 --- a/src/services/shims.ts +++ b/src/services/shims.ts @@ -263,7 +263,7 @@ namespace ts { /** * Returns JSON-encoded value of the type TextInsertion. */ - getDocCommentTemplateAtPosition(fileName: string, position: number): string; + getDocCommentTemplateAtPosition(fileName: string, position: number, options?: DocCommentTemplateOptions): string; /** * Returns JSON-encoded boolean to indicate whether we should support brace location @@ -999,10 +999,10 @@ namespace ts { }); } - public getDocCommentTemplateAtPosition(fileName: string, position: number): string { + public getDocCommentTemplateAtPosition(fileName: string, position: number, options?: DocCommentTemplateOptions): string { return this.forwardJSONCall( `getDocCommentTemplateAtPosition('${fileName}', ${position})`, - () => this.languageService.getDocCommentTemplateAtPosition(fileName, position) + () => this.languageService.getDocCommentTemplateAtPosition(fileName, position, options) ); } diff --git a/src/services/signatureHelp.ts b/src/services/signatureHelp.ts index c8b333d0356f0..9eb93800605ec 100644 --- a/src/services/signatureHelp.ts +++ b/src/services/signatureHelp.ts @@ -517,7 +517,6 @@ namespace ts.SignatureHelp { if (argumentIndex !== 0) { Debug.assertLessThan(argumentIndex, argumentCount); } - let selectedItemIndex = 0; let itemsSeen = 0; for (let i = 0; i < items.length; i++) { @@ -541,8 +540,19 @@ namespace ts.SignatureHelp { } Debug.assert(selectedItemIndex !== -1); // If candidates is non-empty it should always include bestSignature. We check for an empty candidates before calling this function. - - return { items: flatMapToMutable(items, identity), applicableSpan, selectedItemIndex, argumentIndex, argumentCount }; + const help = { items: flatMapToMutable(items, identity), applicableSpan, selectedItemIndex, argumentIndex, argumentCount }; + const selected = help.items[selectedItemIndex]; + if (selected.isVariadic) { + const firstRest = findIndex(selected.parameters, p => !!p.isRest); + if (-1 < firstRest && firstRest < selected.parameters.length - 1) { + // We don't have any code to get this correct; instead, don't highlight a current parameter AT ALL + help.argumentIndex = selected.parameters.length; + } + else { + help.argumentIndex = Math.min(help.argumentIndex, selected.parameters.length - 1); + } + } + return help; } function createTypeHelpItems( @@ -638,8 +648,9 @@ namespace ts.SignatureHelp { const param = checker.symbolToParameterDeclaration(parameter, enclosingDeclaration, signatureHelpNodeBuilderFlags)!; printer.writeNode(EmitHint.Unspecified, param, sourceFile, writer); }); - const isOptional = checker.isOptionalParameter(parameter.valueDeclaration); - return { name: parameter.name, documentation: parameter.getDocumentationComment(checker), displayParts, isOptional }; + const isOptional = checker.isOptionalParameter(parameter.valueDeclaration as ParameterDeclaration); + const isRest = !!((parameter as TransientSymbol).checkFlags & CheckFlags.RestParameter); + return { name: parameter.name, documentation: parameter.getDocumentationComment(checker), displayParts, isOptional, isRest }; } function createSignatureHelpParameterForTypeParameter(typeParameter: TypeParameter, checker: TypeChecker, enclosingDeclaration: Node, sourceFile: SourceFile, printer: Printer): SignatureHelpParameter { @@ -647,6 +658,6 @@ namespace ts.SignatureHelp { const param = checker.typeParameterToDeclaration(typeParameter, enclosingDeclaration, signatureHelpNodeBuilderFlags)!; printer.writeNode(EmitHint.Unspecified, param, sourceFile, writer); }); - return { name: typeParameter.symbol.name, documentation: typeParameter.symbol.getDocumentationComment(checker), displayParts, isOptional: false }; + return { name: typeParameter.symbol.name, documentation: typeParameter.symbol.getDocumentationComment(checker), displayParts, isOptional: false, isRest: false }; } } diff --git a/src/services/suggestionDiagnostics.ts b/src/services/suggestionDiagnostics.ts index 8d557d4edcb2d..a002f8533e260 100644 --- a/src/services/suggestionDiagnostics.ts +++ b/src/services/suggestionDiagnostics.ts @@ -114,7 +114,7 @@ namespace ts { return !isAsyncFunction(node) && node.body && isBlock(node.body) && - hasReturnStatementWithPromiseHandler(node.body) && + hasReturnStatementWithPromiseHandler(node.body, checker) && returnsPromise(node, checker); } @@ -129,25 +129,25 @@ namespace ts { return isBinaryExpression(commonJsModuleIndicator) ? commonJsModuleIndicator.left : commonJsModuleIndicator; } - function hasReturnStatementWithPromiseHandler(body: Block): boolean { - return !!forEachReturnStatement(body, isReturnStatementWithFixablePromiseHandler); + function hasReturnStatementWithPromiseHandler(body: Block, checker: TypeChecker): boolean { + return !!forEachReturnStatement(body, statement => isReturnStatementWithFixablePromiseHandler(statement, checker)); } - export function isReturnStatementWithFixablePromiseHandler(node: Node): node is ReturnStatement & { expression: CallExpression } { - return isReturnStatement(node) && !!node.expression && isFixablePromiseHandler(node.expression); + export function isReturnStatementWithFixablePromiseHandler(node: Node, checker: TypeChecker): node is ReturnStatement & { expression: CallExpression } { + return isReturnStatement(node) && !!node.expression && isFixablePromiseHandler(node.expression, checker); } // Should be kept up to date with transformExpression in convertToAsyncFunction.ts - export function isFixablePromiseHandler(node: Node): boolean { + export function isFixablePromiseHandler(node: Node, checker: TypeChecker): boolean { // ensure outermost call exists and is a promise handler - if (!isPromiseHandler(node) || !node.arguments.every(isFixablePromiseArgument)) { + if (!isPromiseHandler(node) || !node.arguments.every(arg => isFixablePromiseArgument(arg, checker))) { return false; } // ensure all chained calls are valid let currentNode = node.expression; while (isPromiseHandler(currentNode) || isPropertyAccessExpression(currentNode)) { - if (isCallExpression(currentNode) && !currentNode.arguments.every(isFixablePromiseArgument)) { + if (isCallExpression(currentNode) && !currentNode.arguments.every(arg => isFixablePromiseArgument(arg, checker))) { return false; } currentNode = currentNode.expression; @@ -171,7 +171,7 @@ namespace ts { } // should be kept up to date with getTransformationBody in convertToAsyncFunction.ts - function isFixablePromiseArgument(arg: Expression): boolean { + function isFixablePromiseArgument(arg: Expression, checker: TypeChecker): boolean { switch (arg.kind) { case SyntaxKind.FunctionDeclaration: case SyntaxKind.FunctionExpression: @@ -179,8 +179,16 @@ namespace ts { visitedNestedConvertibleFunctions.set(getKeyFromNode(arg as FunctionLikeDeclaration), true); // falls through case SyntaxKind.NullKeyword: - case SyntaxKind.Identifier: // identifier includes undefined return true; + case SyntaxKind.Identifier: + case SyntaxKind.PropertyAccessExpression: { + const symbol = checker.getSymbolAtLocation(arg); + if (!symbol) { + return false; + } + return checker.isUndefinedSymbol(symbol) || + some(skipAlias(symbol, checker).declarations, d => isFunctionLike(d) || hasInitializer(d) && !!d.initializer && isFunctionLike(d.initializer)); + } default: return false; } diff --git a/src/services/types.ts b/src/services/types.ts index dd97197a92416..82563150ecb8e 100644 --- a/src/services/types.ts +++ b/src/services/types.ts @@ -490,7 +490,7 @@ namespace ts { getFormattingEditsForDocument(fileName: string, options: FormatCodeOptions | FormatCodeSettings): TextChange[]; getFormattingEditsAfterKeystroke(fileName: string, position: number, key: string, options: FormatCodeOptions | FormatCodeSettings): TextChange[]; - getDocCommentTemplateAtPosition(fileName: string, position: number): TextInsertion | undefined; + getDocCommentTemplateAtPosition(fileName: string, position: number, options?: DocCommentTemplateOptions): TextInsertion | undefined; isValidBraceCompletionAtPosition(fileName: string, position: number, openingBrace: number): boolean; /** @@ -1073,11 +1073,16 @@ namespace ts { readonly allowRenameOfImportPath?: boolean; } + export interface DocCommentTemplateOptions { + readonly generateReturnInDocTemplate?: boolean; + } + export interface SignatureHelpParameter { name: string; documentation: SymbolDisplayPart[]; displayParts: SymbolDisplayPart[]; isOptional: boolean; + isRest?: boolean; } export interface SelectionRange { diff --git a/src/services/utilities.ts b/src/services/utilities.ts index 8344c3e60ff87..d57f267ea977c 100644 --- a/src/services/utilities.ts +++ b/src/services/utilities.ts @@ -2495,7 +2495,7 @@ namespace ts { // Editors can pass in undefined or empty string - we want to infer the preference in those cases. const quotePreference = getQuotePreference(sourceFile, preferences); const quoted = JSON.stringify(text); - return quotePreference === QuotePreference.Single ? `'${stripQuotes(quoted).replace("'", "\\'").replace('\\"', '"')}'` : quoted; + return quotePreference === QuotePreference.Single ? `'${stripQuotes(quoted).replace(/'/g, "\\'").replace(/\\"/g, '"')}'` : quoted; } export function isEqualityOperatorKind(kind: SyntaxKind): kind is EqualityOperator { @@ -2880,10 +2880,10 @@ namespace ts { return isArray(valueOrArray) ? first(valueOrArray) : valueOrArray; } - export function getNameForExportedSymbol(symbol: Symbol, scriptTarget: ScriptTarget) { - if (symbol.escapedName === InternalSymbolName.ExportEquals || symbol.escapedName === InternalSymbolName.Default) { + export function getNameForExportedSymbol(symbol: Symbol, scriptTarget: ScriptTarget | undefined) { + if (!(symbol.flags & SymbolFlags.Transient) && (symbol.escapedName === InternalSymbolName.ExportEquals || symbol.escapedName === InternalSymbolName.Default)) { // Name of "export default foo;" is "foo". Name of "export default 0" is the filename converted to camelCase. - return firstDefined(symbol.declarations, d => isExportAssignment(d) && isIdentifier(d.expression) ? d.expression.text : undefined) + return firstDefined(symbol.declarations, d => isExportAssignment(d) ? tryCast(skipOuterExpressions(d.expression), isIdentifier)?.text : undefined) || codefix.moduleSymbolToValidIdentifier(getSymbolParentOrFail(symbol), scriptTarget); } return symbol.name; diff --git a/src/testRunner/externalCompileRunner.ts b/src/testRunner/externalCompileRunner.ts index 4f2cd9e477070..2b3a2ef9957dc 100644 --- a/src/testRunner/externalCompileRunner.ts +++ b/src/testRunner/externalCompileRunner.ts @@ -68,6 +68,9 @@ namespace Harness { cwd = config.path ? path.join(cwd, config.path) : submoduleDir; } + const npmVersionText = exec("npm", ["--version"], { cwd, stdio: "pipe" })?.trim(); + const npmVersion = npmVersionText ? ts.Version.tryParse(npmVersionText.trim()) : undefined; + const isV7OrLater = !!npmVersion && npmVersion.major >= 7; if (fs.existsSync(path.join(cwd, "package.json"))) { if (fs.existsSync(path.join(cwd, "package-lock.json"))) { fs.unlinkSync(path.join(cwd, "package-lock.json")); @@ -75,24 +78,25 @@ namespace Harness { if (fs.existsSync(path.join(cwd, "node_modules"))) { del.sync(path.join(cwd, "node_modules"), { force: true }); } - exec("npm", ["i", "--ignore-scripts"], { cwd, timeout: timeout / 2 }); // NPM shouldn't take the entire timeout - if it takes a long time, it should be terminated and we should log the failure + exec("npm", ["i", "--ignore-scripts", ...(isV7OrLater ? ["--legacy-peer-deps"] : [])], { cwd, timeout: timeout / 2 }); // NPM shouldn't take the entire timeout - if it takes a long time, it should be terminated and we should log the failure } const args = [path.join(IO.getWorkspaceRoot(), "built/local/tsc.js")]; if (types) { args.push("--types", types.join(",")); // Also actually install those types (for, eg, the js projects which need node) if (types.length) { - exec("npm", ["i", ...types.map(t => `@types/${t}`), "--no-save", "--ignore-scripts"], { cwd: originalCwd, timeout: timeout / 2 }); // NPM shouldn't take the entire timeout - if it takes a long time, it should be terminated and we should log the failure + exec("npm", ["i", ...types.map(t => `@types/${t}`), "--no-save", "--ignore-scripts", ...(isV7OrLater ? ["--legacy-peer-deps"] : [])], { cwd: originalCwd, timeout: timeout / 2 }); // NPM shouldn't take the entire timeout - if it takes a long time, it should be terminated and we should log the failure } } args.push("--noEmit"); Baseline.runBaseline(`${cls.kind()}/${directoryName}.log`, cls.report(cp.spawnSync(`node`, args, { cwd, timeout, shell: true }), cwd)); - function exec(command: string, args: string[], options: { cwd: string, timeout?: number }): void { + function exec(command: string, args: string[], options: { cwd: string, timeout?: number, stdio?: import("child_process").StdioOptions }): string | undefined { const res = cp.spawnSync(isWorker ? `${command} 2>&1` : command, args, { shell: true, stdio, ...options }); if (res.status !== 0) { throw new Error(`${command} ${args.join(" ")} for ${directoryName} failed: ${res.stdout && res.stdout.toString()}`); } + return options.stdio === "pipe" ? res.stdout.toString("utf8") : undefined; } }); }); diff --git a/src/testRunner/runner.ts b/src/testRunner/runner.ts index c3d7d72c2a9d1..0c9f944dbe711 100644 --- a/src/testRunner/runner.ts +++ b/src/testRunner/runner.ts @@ -262,4 +262,4 @@ namespace Harness { } startTestEnvironment(); -} \ No newline at end of file +} diff --git a/src/testRunner/tsconfig.json b/src/testRunner/tsconfig.json index 1d389e21f0140..cfd4dc6f9c456 100644 --- a/src/testRunner/tsconfig.json +++ b/src/testRunner/tsconfig.json @@ -112,6 +112,7 @@ "unittests/services/transpile.ts", "unittests/tsbuild/amdModulesWithOut.ts", "unittests/tsbuild/configFileErrors.ts", + "unittests/tsbuild/configFileExtends.ts", "unittests/tsbuild/containerOnlyReferenced.ts", "unittests/tsbuild/declarationEmit.ts", "unittests/tsbuild/demo.ts", @@ -183,6 +184,7 @@ "unittests/tsserver/openFile.ts", "unittests/tsserver/packageJsonInfo.ts", "unittests/tsserver/partialSemanticServer.ts", + "unittests/tsserver/plugins.ts", "unittests/tsserver/projectErrors.ts", "unittests/tsserver/projectReferenceCompileOnSave.ts", "unittests/tsserver/projectReferenceErrors.ts", diff --git a/src/testRunner/unittests/jsDocParsing.ts b/src/testRunner/unittests/jsDocParsing.ts index a2f5037be2a10..f346ca8b02db5 100644 --- a/src/testRunner/unittests/jsDocParsing.ts +++ b/src/testRunner/unittests/jsDocParsing.ts @@ -331,7 +331,7 @@ namespace ts { * Comments * @author Early Close Caret > * @author No Line Breaks: - * must be on the same line to parse + * must be on the same line to parse * @author Long Comment I * want to keep commenting down here, I dunno. */`); @@ -340,6 +340,22 @@ namespace ts { `/** * @example * Some\n\n * text\r\n * with newlines. + */`); + parsesCorrectly("Chained tags, no leading whitespace", `/**@a @b @c@d*/`); + parsesCorrectly("Initial star is not a tag", `/***@a*/`); + parsesCorrectly("Initial star space is not a tag", `/*** @a*/`); + parsesCorrectly("Initial email address is not a tag", `/**bill@example.com*/`); + parsesCorrectly("no space before @ is not a new tag", + `/** + * @param this (@is@) + * @param fine its@fine +@zerowidth +*@singlestar +**@doublestar + */`); + parsesCorrectly("@@ does not start a new tag", + `/** + * @param this is (@@fine@@and) is one comment */`); }); }); diff --git a/src/testRunner/unittests/publicApi.ts b/src/testRunner/unittests/publicApi.ts index 79d4b9a208243..eb8e5f18c4660 100644 --- a/src/testRunner/unittests/publicApi.ts +++ b/src/testRunner/unittests/publicApi.ts @@ -124,3 +124,30 @@ describe("unittests:: Public APIs:: getTypeAtLocation", () => { assert.equal(type.flags, ts.TypeFlags.Any); }); }); + +describe("unittests:: Public APIs:: validateLocaleAndSetLanguage", () => { + let savedUILocale: string | undefined; + beforeEach(() => savedUILocale = ts.getUILocale()); + afterEach(() => ts.setUILocale(savedUILocale)); + + function verifyValidateLocale(locale: string, expectedToReadFile: boolean) { + it(`Verifying ${locale} ${expectedToReadFile ? "reads" : "does not read"} file`, () => { + const errors: ts.Diagnostic[] = []; + ts.validateLocaleAndSetLanguage(locale, { + getExecutingFilePath: () => "/tsc.js", + resolvePath: ts.identity, + fileExists: fileName => { + assert.isTrue(expectedToReadFile, `Locale : ${locale} ${expectedToReadFile ? "should" : "should not"} check if ${fileName} exists.`); + return expectedToReadFile; + }, + readFile: fileName => { + assert.isTrue(expectedToReadFile, `Locale : ${locale} ${expectedToReadFile ? "should" : "should not"} read ${fileName}.`); + // Throw error here so that actual change to localized diagnostics messages doesnt take place + throw new Error("cannot read file"); + } + }, errors); + }); + } + ts.supportedLocaleDirectories.forEach(locale => verifyValidateLocale(locale, /*expctedToReadFile*/ true)); + ["en", "en-us"].forEach(locale => verifyValidateLocale(locale, /*expctedToReadFile*/ false)); +}); diff --git a/src/testRunner/unittests/services/convertToAsyncFunction.ts b/src/testRunner/unittests/services/convertToAsyncFunction.ts index 5b09aba9549ae..0a36a9ebfcfe9 100644 --- a/src/testRunner/unittests/services/convertToAsyncFunction.ts +++ b/src/testRunner/unittests/services/convertToAsyncFunction.ts @@ -539,6 +539,7 @@ function [#|f|]():Promise { } ` ); + _testConvertToAsyncFunction("convertToAsyncFunction_NoRes3", ` function [#|f|]():Promise { return fetch('https://typescriptlang.org').catch(rej => console.log(rej)); @@ -600,6 +601,7 @@ function [#|f|]():Promise { } ` ); + _testConvertToAsyncFunction("convertToAsyncFunction_ResRef", ` function [#|f|]():Promise { return fetch('https://typescriptlang.org').then(res); @@ -609,6 +611,75 @@ function res(result){ } ` ); + + _testConvertToAsyncFunction("convertToAsyncFunction_ResRef1", ` +class Foo { + public [#|method|](): Promise { + return fetch('a').then(this.foo); + } + + private foo(res) { + return res.ok; + } +} + `); + + _testConvertToAsyncFunction("convertToAsyncFunction_ResRef2", ` +class Foo { + public [#|method|](): Promise { + return fetch('a').then(this.foo); + } + + private foo = res => res; +} + `); + + _testConvertToAsyncFunction("convertToAsyncFunction_ResRef3", ` +const res = (result) => { + return result.ok; +} +function [#|f|](): Promise { + return fetch('https://typescriptlang.org').then(res); +} + ` + ); + + _testConvertToAsyncFunctionFailed("convertToAsyncFunction_NoSuggestionResRef1", ` +const res = 1; +function [#|f|]() { + return fetch('https://typescriptlang.org').then(res); +} +` + ); + + _testConvertToAsyncFunctionFailed("convertToAsyncFunction_NoSuggestionResRef2", ` +class Foo { + private foo = 1; + public [#|method|](): Promise { + return fetch('a').then(this.foo); + } +} +` + ); + + _testConvertToAsyncFunctionFailed("convertToAsyncFunction_NoSuggestionResRef3", ` +const res = undefined; +function [#|f|]() { + return fetch('https://typescriptlang.org').then(res); +} +` + ); + + _testConvertToAsyncFunctionFailed("convertToAsyncFunction_NoSuggestionResRef4", ` +class Foo { + private foo = undefined; + public [#|method|](): Promise { + return fetch('a').then(this.foo); + } +} +` + ); + _testConvertToAsyncFunction("convertToAsyncFunction_ResRefNoReturnVal", ` function [#|f|]():Promise { return fetch('https://typescriptlang.org').then(res); @@ -618,6 +689,19 @@ function res(result){ } ` ); + + _testConvertToAsyncFunction("convertToAsyncFunction_ResRefNoReturnVal1", ` +class Foo { + public [#|method|](): Promise { + return fetch('a').then(this.foo); + } + + private foo(res) { + console.log(res); + } +} + `); + _testConvertToAsyncFunction("convertToAsyncFunction_NoBrackets", ` function [#|f|]():Promise { return fetch('https://typescriptlang.org').then(result => console.log(result)); diff --git a/src/testRunner/unittests/tsbuild/configFileExtends.ts b/src/testRunner/unittests/tsbuild/configFileExtends.ts new file mode 100644 index 0000000000000..b00a213b9d3fc --- /dev/null +++ b/src/testRunner/unittests/tsbuild/configFileExtends.ts @@ -0,0 +1,52 @@ +namespace ts { + describe("unittests:: tsbuild:: configFileExtends:: when tsconfig extends another config", () => { + function getConfigExtendsWithIncludeFs() { + return loadProjectFromFiles({ + "/src/tsconfig.json": JSON.stringify({ + references: [ + { path: "./shared/tsconfig.json" }, + { path: "./webpack/tsconfig.json" } + ], + files: [] + }), + "/src/shared/tsconfig-base.json": JSON.stringify({ + include: ["./typings-base/"] + }), + "/src/shared/typings-base/globals.d.ts": `type Unrestricted = any;`, + "/src/shared/tsconfig.json": JSON.stringify({ + extends: "./tsconfig-base.json", + compilerOptions: { + composite: true, + outDir: "../target-tsc-build/", + rootDir: ".." + }, + files: ["./index.ts"] + }), + "/src/shared/index.ts": `export const a: Unrestricted = 1;`, + "/src/webpack/tsconfig.json": JSON.stringify({ + extends: "../shared/tsconfig-base.json", + compilerOptions: { + composite: true, + outDir: "../target-tsc-build/", + rootDir: ".." + }, + files: ["./index.ts"], + references: [{ path: "../shared/tsconfig.json" }] + }), + "/src/webpack/index.ts": `export const b: Unrestricted = 1;`, + }); + } + verifyTsc({ + scenario: "configFileExtends", + subScenario: "when building solution with projects extends config with include", + fs: getConfigExtendsWithIncludeFs, + commandLineArgs: ["--b", "/src/tsconfig.json", "--v", "--listFiles"], + }); + verifyTsc({ + scenario: "configFileExtends", + subScenario: "when building project uses reference and both extend config with include", + fs: getConfigExtendsWithIncludeFs, + commandLineArgs: ["--b", "/src/webpack/tsconfig.json", "--v", "--listFiles"], + }); + }); +} \ No newline at end of file diff --git a/src/testRunner/unittests/tsserver/events/projectLanguageServiceState.ts b/src/testRunner/unittests/tsserver/events/projectLanguageServiceState.ts index da6718ef9c7ff..d61b022ae9cad 100644 --- a/src/testRunner/unittests/tsserver/events/projectLanguageServiceState.ts +++ b/src/testRunner/unittests/tsserver/events/projectLanguageServiceState.ts @@ -7,7 +7,7 @@ namespace ts.projectSystem { }; const f2 = { path: "/a/largefile.js", - content: "" + content: "", }; const config = { path: "/a/jsconfig.json", @@ -47,5 +47,39 @@ namespace ts.projectSystem { assert.equal(events[1].data.project.getProjectName(), config.path, "config path"); assert.isTrue(events[1].data.languageServiceEnabled, "Language service state"); }); + + it("Large file size is determined correctly", () => { + const f1: File = { + path: "/a/app.js", + content: "let x = 1;" + }; + const f2: File = { + path: "/a/largefile.js", + content: "", + fileSize: server.maxProgramSizeForNonTsFiles + 1 + }; + const f3: File = { + path: "/a/extremlylarge.d.ts", + content: "", + fileSize: server.maxProgramSizeForNonTsFiles + 100 + }; + const config = { + path: "/a/jsconfig.json", + content: "{}" + }; + const host = createServerHost([f1, f2, f3, libFile, config]); + const logs: string[] = []; + const logger: server.Logger = { + ...nullLogger, + info: s => logs.push(s) + }; + const service = createProjectService(host, { logger }); + service.openClientFile(f1.path); + checkNumberOfProjects(service, { configuredProjects: 1 }); + const project = service.configuredProjects.get(config.path)!; + assert.isFalse(project.languageServiceEnabled, "Language service enabled"); + assert.equal(project.lastFileExceededProgramSize, f2.path); + assert.isTrue(contains(logs, `Non TS file size exceeded limit (${f1.content.length + f2.fileSize!}). Largest files: ${f2.path}:${f2.fileSize}, ${f1.path}:${f1.content.length}`)); + }); }); } diff --git a/src/testRunner/unittests/tsserver/plugins.ts b/src/testRunner/unittests/tsserver/plugins.ts new file mode 100644 index 0000000000000..68833409a4b6f --- /dev/null +++ b/src/testRunner/unittests/tsserver/plugins.ts @@ -0,0 +1,55 @@ +namespace ts.projectSystem { + describe("unittests:: tsserver:: plugins loading", () => { + function createHostWithPlugin(files: readonly File[]) { + const host = createServerHost(files); + const pluginsLoaded: string[] = []; + host.require = (_initialPath, moduleName) => { + pluginsLoaded.push(moduleName); + return { + module: () => ({ + create(info: server.PluginCreateInfo) { + return Harness.LanguageService.makeDefaultProxy(info); + } + }), + error: undefined + }; + }; + return { host, pluginsLoaded }; + } + + it("With local plugins", () => { + const expectedToLoad = ["@myscoped/plugin", "unscopedPlugin"]; + const notToLoad = ["../myPlugin", "myPlugin/../malicious"]; + const aTs: File = { path: "/a.ts", content: `class c { prop = "hello"; foo() { return this.prop; } }` }; + const tsconfig: File = { + path: "/tsconfig.json", + content: JSON.stringify({ + compilerOptions: { + plugins: [ + ...[...expectedToLoad, ...notToLoad].map(name => ({ name })), + { transform: "some-transform" } + ] + } + }) + }; + const { host, pluginsLoaded } = createHostWithPlugin([aTs, tsconfig, libFile]); + const service = createProjectService(host); + service.openClientFile(aTs.path); + assert.deepEqual(pluginsLoaded, expectedToLoad); + }); + + it("With global plugins", () => { + const expectedToLoad = ["@myscoped/plugin", "unscopedPlugin"]; + const notToLoad = ["../myPlugin", "myPlugin/../malicious"]; + const aTs: File = { path: "/a.ts", content: `class c { prop = "hello"; foo() { return this.prop; } }` }; + const tsconfig: File = { + path: "/tsconfig.json", + content: "{}" + }; + const { host, pluginsLoaded } = createHostWithPlugin([aTs, tsconfig, libFile]); + const service = createProjectService(host, { globalPlugins: [...expectedToLoad, ...notToLoad] }); + service.openClientFile(aTs.path); + assert.deepEqual(pluginsLoaded, expectedToLoad); + }); + }); +} \ No newline at end of file diff --git a/src/testRunner/unittests/tsserver/projectErrors.ts b/src/testRunner/unittests/tsserver/projectErrors.ts index 40312f9303ab0..4a5926afaca8e 100644 --- a/src/testRunner/unittests/tsserver/projectErrors.ts +++ b/src/testRunner/unittests/tsserver/projectErrors.ts @@ -409,7 +409,7 @@ namespace ts.projectSystem { checkErrors([serverUtilities.path, app.path]); function checkErrors(openFiles: [string, string]) { - verifyGetErrRequestNoErrors({ session, host, files: openFiles, existingTimeouts: 2 }); + verifyGetErrRequestNoErrors({ session, host, files: openFiles }); } }); diff --git a/src/testRunner/unittests/tsserver/projects.ts b/src/testRunner/unittests/tsserver/projects.ts index 65938314f115a..566d098416311 100644 --- a/src/testRunner/unittests/tsserver/projects.ts +++ b/src/testRunner/unittests/tsserver/projects.ts @@ -419,7 +419,7 @@ namespace ts.projectSystem { unresolvedImports: response.unresolvedImports, }); - host.checkTimeoutQueueLengthAndRun(1); + host.checkTimeoutQueueLength(0); assert.isUndefined(request); }); diff --git a/src/testRunner/unittests/tsserver/resolutionCache.ts b/src/testRunner/unittests/tsserver/resolutionCache.ts index 7a88d42da050e..d3d4ff1361774 100644 --- a/src/testRunner/unittests/tsserver/resolutionCache.ts +++ b/src/testRunner/unittests/tsserver/resolutionCache.ts @@ -198,10 +198,7 @@ namespace ts.projectSystem { checkNumberOfProjects(service, { inferredProjects: 1 }); session.clearMessages(); - host.checkTimeoutQueueLengthAndRun(2); - - checkProjectUpdatedInBackgroundEvent(session, [file.path]); - + host.checkTimeoutQueueLength(0); verifyGetErrRequest({ session, host, @@ -240,10 +237,7 @@ namespace ts.projectSystem { checkNumberOfProjects(service, { inferredProjects: 1 }); session.clearMessages(); - host.checkTimeoutQueueLengthAndRun(2); - - checkProjectUpdatedInBackgroundEvent(session, [file.path]); - + host.checkTimeoutQueueLength(0); verifyGetErrRequest({ session, host, diff --git a/src/testRunner/unittests/tsserver/typingsInstaller.ts b/src/testRunner/unittests/tsserver/typingsInstaller.ts index 8a449bccad7cd..5bb0fc9792a83 100644 --- a/src/testRunner/unittests/tsserver/typingsInstaller.ts +++ b/src/testRunner/unittests/tsserver/typingsInstaller.ts @@ -244,7 +244,7 @@ namespace ts.projectSystem { checkProjectActualFiles(p, [jqueryJs.path]); installer.installAll(/*expectedCount*/ 0); - host.checkTimeoutQueueLengthAndRun(2); + host.checkTimeoutQueueLength(0); checkNumberOfProjects(projectService, { inferredProjects: 1 }); // files should not be removed from project if ATA is skipped checkProjectActualFiles(p, [jqueryJs.path]); @@ -1024,9 +1024,8 @@ namespace ts.projectSystem { service.openClientFile(f.path); installer.checkPendingCommands(/*expectedCount*/ 0); - host.writeFile(fixedPackageJson.path, fixedPackageJson.content); - host.checkTimeoutQueueLengthAndRun(2); // To refresh the project and refresh inferred projects + host.checkTimeoutQueueLength(0); // expected install request installer.installAll(/*expectedCount*/ 1); host.checkTimeoutQueueLengthAndRun(2); @@ -1212,7 +1211,8 @@ namespace ts.projectSystem { } }; session.executeCommand(changeRequest); - host.checkTimeoutQueueLengthAndRun(2); // This enqueues the updategraph and refresh inferred projects + host.checkTimeoutQueueLength(0); + proj.updateGraph(); const version2 = proj.lastCachedUnresolvedImportsList; assert.strictEqual(version1, version2, "set of unresolved imports should change"); }); @@ -1837,6 +1837,7 @@ namespace ts.projectSystem { const appPath = "/a/b/app.js" as Path; const foooPath = "/a/b/node_modules/fooo/index.d.ts"; function verifyResolvedModuleOfFooo(project: server.Project) { + server.updateProjectIfDirty(project); const foooResolution = project.getLanguageService().getProgram()!.getSourceFileByPath(appPath)!.resolvedModules!.get("fooo")!; assert.equal(foooResolution.resolvedFileName, foooPath); return foooResolution; @@ -1851,6 +1852,7 @@ namespace ts.projectSystem { path: foooPath, content: `export var x: string;` }; + const host = createServerHost([app, fooo]); const installer = new (class extends Installer { constructor() { @@ -1873,6 +1875,17 @@ namespace ts.projectSystem { checkProjectActualFiles(proj, typingFiles.map(f => f.path).concat(app.path, fooo.path)); const foooResolution2 = verifyResolvedModuleOfFooo(proj); assert.strictEqual(foooResolution1, foooResolution2); + projectService.applyChangesInOpenFiles(/*openFiles*/ undefined, arrayIterator([{ + fileName: app.path, + changes: arrayIterator([{ + span: { start: 0, length: 0 }, + newText: `import * as bar from "bar";` + }]) + }])); + host.runQueuedTimeoutCallbacks(); // Update the graph + // Update the typing + host.checkTimeoutQueueLength(0); + assert.isFalse(proj.resolutionCache.isFileWithInvalidatedNonRelativeUnresolvedImports(app.path as Path)); } it("correctly invalidate the resolutions with typing names", () => { @@ -1883,6 +1896,10 @@ namespace ts.projectSystem { }); it("correctly invalidate the resolutions with typing names that are trimmed", () => { + const fooIndex: File = { + path: `${globalTypingsCacheLocation}/node_modules/foo/index.d.ts`, + content: "export function aa(): void;" + }; const fooAA: File = { path: `${globalTypingsCacheLocation}/node_modules/foo/a/a.d.ts`, content: "export function a (): void;" @@ -1899,7 +1916,7 @@ namespace ts.projectSystem { import * as a from "foo/a/a"; import * as b from "foo/a/b"; import * as c from "foo/a/c"; - `, ["foo"], [fooAA, fooAB, fooAC]); + `, ["foo"], [fooIndex, fooAA, fooAB, fooAC]); }); it("should handle node core modules", () => { @@ -1958,12 +1975,21 @@ declare module "stream" { host.checkTimeoutQueueLengthAndRun(2); checkProjectActualFiles(proj, [file.path, libFile.path, nodeTyping.path]); - // Here, since typings doesnt contain node typings and resolution fails and - // node typings go out of project, - // but because we handle core node modules when resolving from typings cache - // node typings are included in the project - host.checkTimeoutQueueLengthAndRun(2); + // Here, since typings dont change, there is no timeout scheduled + host.checkTimeoutQueueLength(0); + checkProjectActualFiles(proj, [file.path, libFile.path, nodeTyping.path]); + projectService.applyChangesInOpenFiles(/*openFiles*/ undefined, arrayIterator([{ + fileName: file.path, + changes: arrayIterator([{ + span: { start: file.content.indexOf("const"), length: 0 }, + newText: `const bar = require("bar");` + }]) + }])); + proj.updateGraph(); // Update the graph checkProjectActualFiles(proj, [file.path, libFile.path, nodeTyping.path]); + // Update the typing + host.checkTimeoutQueueLength(0); + assert.isFalse(proj.resolutionCache.isFileWithInvalidatedNonRelativeUnresolvedImports(file.path as Path)); }); }); diff --git a/src/tsserver/nodeServer.ts b/src/tsserver/nodeServer.ts index f4b7061881bf3..97aa0a198e86d 100644 --- a/src/tsserver/nodeServer.ts +++ b/src/tsserver/nodeServer.ts @@ -833,9 +833,7 @@ namespace ts.server { exit() { this.logger.info("Exiting..."); this.projectService.closeLog(); - if (traceDir) { - tracing.stopTracing(ts.emptyArray); - } + tracing?.stopTracing(ts.emptyArray); process.exit(0); } @@ -863,7 +861,7 @@ namespace ts.server { ? stripQuotes(commandLineTraceDir) : process.env.TSS_TRACE; if (traceDir) { - tracing.startTracing(tracing.Mode.Server, traceDir); + startTracing(tracingEnabled.Mode.Server, traceDir); } const ioSession = new IOSession(); diff --git a/tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.@@ does not start a new tag.json b/tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.@@ does not start a new tag.json new file mode 100644 index 0000000000000..8da37b34c35ea --- /dev/null +++ b/tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.@@ does not start a new tag.json @@ -0,0 +1,42 @@ +{ + "kind": "JSDocComment", + "pos": 0, + "end": 54, + "flags": "JSDoc", + "modifierFlagsCache": 0, + "transformFlags": 0, + "tags": { + "0": { + "kind": "JSDocParameterTag", + "pos": 7, + "end": 52, + "modifierFlagsCache": 0, + "transformFlags": 0, + "tagName": { + "kind": "Identifier", + "pos": 8, + "end": 13, + "modifierFlagsCache": 0, + "transformFlags": 0, + "escapedText": "param" + }, + "comment": "is (@@fine@@and) is one comment", + "name": { + "kind": "Identifier", + "pos": 14, + "end": 18, + "modifierFlagsCache": 0, + "transformFlags": 0, + "originalKeywordKind": "ThisKeyword", + "escapedText": "this" + }, + "isNameFirst": true, + "isBracketed": false + }, + "length": 1, + "pos": 7, + "end": 52, + "hasTrailingComma": false, + "transformFlags": 0 + } +} \ No newline at end of file diff --git a/tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.Chained tags, no leading whitespace.json b/tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.Chained tags, no leading whitespace.json new file mode 100644 index 0000000000000..1a848db2bb816 --- /dev/null +++ b/tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.Chained tags, no leading whitespace.json @@ -0,0 +1,75 @@ +{ + "kind": "JSDocComment", + "pos": 0, + "end": 15, + "flags": "JSDoc", + "modifierFlagsCache": 0, + "transformFlags": 0, + "tags": { + "0": { + "kind": "JSDocTag", + "pos": 3, + "end": 6, + "modifierFlagsCache": 0, + "transformFlags": 0, + "tagName": { + "kind": "Identifier", + "pos": 4, + "end": 5, + "modifierFlagsCache": 0, + "transformFlags": 0, + "escapedText": "a" + } + }, + "1": { + "kind": "JSDocTag", + "pos": 6, + "end": 9, + "modifierFlagsCache": 0, + "transformFlags": 0, + "tagName": { + "kind": "Identifier", + "pos": 7, + "end": 8, + "modifierFlagsCache": 0, + "transformFlags": 0, + "escapedText": "b" + } + }, + "2": { + "kind": "JSDocTag", + "pos": 9, + "end": 11, + "modifierFlagsCache": 0, + "transformFlags": 0, + "tagName": { + "kind": "Identifier", + "pos": 10, + "end": 11, + "modifierFlagsCache": 0, + "transformFlags": 0, + "escapedText": "c" + } + }, + "3": { + "kind": "JSDocTag", + "pos": 11, + "end": 13, + "modifierFlagsCache": 0, + "transformFlags": 0, + "tagName": { + "kind": "Identifier", + "pos": 12, + "end": 13, + "modifierFlagsCache": 0, + "transformFlags": 0, + "escapedText": "d" + } + }, + "length": 4, + "pos": 3, + "end": 13, + "hasTrailingComma": false, + "transformFlags": 0 + } +} \ No newline at end of file diff --git a/tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.Initial email address is not a tag.json b/tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.Initial email address is not a tag.json new file mode 100644 index 0000000000000..a2ad2693915f0 --- /dev/null +++ b/tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.Initial email address is not a tag.json @@ -0,0 +1,9 @@ +{ + "kind": "JSDocComment", + "pos": 0, + "end": 21, + "flags": "JSDoc", + "modifierFlagsCache": 0, + "transformFlags": 0, + "comment": "bill@example.com" +} \ No newline at end of file diff --git a/tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.Initial star ignores tag.json b/tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.Initial star ignores tag.json new file mode 100644 index 0000000000000..14d6d34b842d1 --- /dev/null +++ b/tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.Initial star ignores tag.json @@ -0,0 +1,9 @@ +{ + "kind": "JSDocComment", + "pos": 0, + "end": 8, + "flags": "JSDoc", + "modifierFlagsCache": 0, + "transformFlags": 0, + "comment": "*@a" +} \ No newline at end of file diff --git a/tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.Initial star is not a tag.json b/tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.Initial star is not a tag.json new file mode 100644 index 0000000000000..14d6d34b842d1 --- /dev/null +++ b/tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.Initial star is not a tag.json @@ -0,0 +1,9 @@ +{ + "kind": "JSDocComment", + "pos": 0, + "end": 8, + "flags": "JSDoc", + "modifierFlagsCache": 0, + "transformFlags": 0, + "comment": "*@a" +} \ No newline at end of file diff --git a/tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.Initial star space ignores tag.json b/tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.Initial star space ignores tag.json new file mode 100644 index 0000000000000..6a0af3e105dc4 --- /dev/null +++ b/tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.Initial star space ignores tag.json @@ -0,0 +1,9 @@ +{ + "kind": "JSDocComment", + "pos": 0, + "end": 9, + "flags": "JSDoc", + "modifierFlagsCache": 0, + "transformFlags": 0, + "comment": "* @a" +} \ No newline at end of file diff --git a/tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.Initial star space is not a tag.json b/tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.Initial star space is not a tag.json new file mode 100644 index 0000000000000..6a0af3e105dc4 --- /dev/null +++ b/tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.Initial star space is not a tag.json @@ -0,0 +1,9 @@ +{ + "kind": "JSDocComment", + "pos": 0, + "end": 9, + "flags": "JSDoc", + "modifierFlagsCache": 0, + "transformFlags": 0, + "comment": "* @a" +} \ No newline at end of file diff --git a/tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.authorTag.json b/tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.authorTag.json index 9ab0162e2a898..4f92b492fca66 100644 --- a/tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.authorTag.json +++ b/tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.authorTag.json @@ -1,7 +1,7 @@ { "kind": "JSDocComment", "pos": 0, - "end": 738, + "end": 739, "flags": "JSDoc", "modifierFlagsCache": 0, "transformFlags": 0, @@ -262,7 +262,7 @@ "16": { "kind": "JSDocAuthorTag", "pos": 559, - "end": 598, + "end": 599, "modifierFlagsCache": 0, "transformFlags": 0, "tagName": { @@ -273,18 +273,18 @@ "transformFlags": 0, "escapedText": "author" }, - "comment": "No Line Breaks:v : string ->`foo ${ a : `foo ${any}` +>`foo ${ a : string >a : any diff --git a/tests/baselines/reference/accessorsOverrideProperty2.types b/tests/baselines/reference/accessorsOverrideProperty2.types index 228dc06299b92..860b6f4f021cf 100644 --- a/tests/baselines/reference/accessorsOverrideProperty2.types +++ b/tests/baselines/reference/accessorsOverrideProperty2.types @@ -22,7 +22,7 @@ class Derived extends Base { >console.log : (...data: any[]) => void >console : Console >log : (...data: any[]) => void ->`x was set to ${value}` : `x was set to ${number}` +>`x was set to ${value}` : string >value : number } diff --git a/tests/baselines/reference/api/tsserverlibrary.d.ts b/tests/baselines/reference/api/tsserverlibrary.d.ts index be9c82b1e1d9f..be1c47fd86a47 100644 --- a/tests/baselines/reference/api/tsserverlibrary.d.ts +++ b/tests/baselines/reference/api/tsserverlibrary.d.ts @@ -2656,8 +2656,6 @@ declare namespace ts { export interface TemplateLiteralType extends InstantiableType { texts: readonly string[]; types: readonly Type[]; - freshType: TemplateLiteralType; - regularType: TemplateLiteralType; } export interface StringMappingType extends InstantiableType { symbol: Symbol; @@ -3970,6 +3968,7 @@ declare namespace ts { reScanJsxToken(): JsxTokenSyntaxKind; reScanLessThanToken(): SyntaxKind; reScanQuestionToken(): SyntaxKind; + reScanInvalidIdentifier(): SyntaxKind; scanJsxToken(): JsxTokenSyntaxKind; scanJsDocToken(): JSDocSyntaxKind; scan(): SyntaxKind; @@ -5556,7 +5555,7 @@ declare namespace ts { getFormattingEditsForRange(fileName: string, start: number, end: number, options: FormatCodeOptions | FormatCodeSettings): TextChange[]; getFormattingEditsForDocument(fileName: string, options: FormatCodeOptions | FormatCodeSettings): TextChange[]; getFormattingEditsAfterKeystroke(fileName: string, position: number, key: string, options: FormatCodeOptions | FormatCodeSettings): TextChange[]; - getDocCommentTemplateAtPosition(fileName: string, position: number): TextInsertion | undefined; + getDocCommentTemplateAtPosition(fileName: string, position: number, options?: DocCommentTemplateOptions): TextInsertion | undefined; isValidBraceCompletionAtPosition(fileName: string, position: number, openingBrace: number): boolean; /** * This will return a defined result if the position is after the `>` of the opening tag, or somewhere in the text, of a JSXElement with no closing tag. @@ -6021,11 +6020,15 @@ declare namespace ts { interface RenameInfoOptions { readonly allowRenameOfImportPath?: boolean; } + interface DocCommentTemplateOptions { + readonly generateReturnInDocTemplate?: boolean; + } interface SignatureHelpParameter { name: string; documentation: SymbolDisplayPart[]; displayParts: SymbolDisplayPart[]; isOptional: boolean; + isRest?: boolean; } interface SelectionRange { textSpan: TextSpan; @@ -9046,6 +9049,7 @@ declare namespace ts.server.protocol { readonly provideRefactorNotApplicableReason?: boolean; readonly allowRenameOfImportPath?: boolean; readonly includePackageJsonAutoImports?: "auto" | "on" | "off"; + readonly generateReturnInDocTemplate?: boolean; } interface CompilerOptions { allowJs?: boolean; @@ -9267,7 +9271,6 @@ declare namespace ts.server { private missingFilesMap; private generatedFilesMap; private plugins; - private lastFileExceededProgramSize; protected languageService: LanguageService; languageServiceEnabled: boolean; readonly trace?: (s: string) => void; diff --git a/tests/baselines/reference/api/typescript.d.ts b/tests/baselines/reference/api/typescript.d.ts index f8f86d5b88fb2..bba168d37e720 100644 --- a/tests/baselines/reference/api/typescript.d.ts +++ b/tests/baselines/reference/api/typescript.d.ts @@ -2656,8 +2656,6 @@ declare namespace ts { export interface TemplateLiteralType extends InstantiableType { texts: readonly string[]; types: readonly Type[]; - freshType: TemplateLiteralType; - regularType: TemplateLiteralType; } export interface StringMappingType extends InstantiableType { symbol: Symbol; @@ -3970,6 +3968,7 @@ declare namespace ts { reScanJsxToken(): JsxTokenSyntaxKind; reScanLessThanToken(): SyntaxKind; reScanQuestionToken(): SyntaxKind; + reScanInvalidIdentifier(): SyntaxKind; scanJsxToken(): JsxTokenSyntaxKind; scanJsDocToken(): JSDocSyntaxKind; scan(): SyntaxKind; @@ -5556,7 +5555,7 @@ declare namespace ts { getFormattingEditsForRange(fileName: string, start: number, end: number, options: FormatCodeOptions | FormatCodeSettings): TextChange[]; getFormattingEditsForDocument(fileName: string, options: FormatCodeOptions | FormatCodeSettings): TextChange[]; getFormattingEditsAfterKeystroke(fileName: string, position: number, key: string, options: FormatCodeOptions | FormatCodeSettings): TextChange[]; - getDocCommentTemplateAtPosition(fileName: string, position: number): TextInsertion | undefined; + getDocCommentTemplateAtPosition(fileName: string, position: number, options?: DocCommentTemplateOptions): TextInsertion | undefined; isValidBraceCompletionAtPosition(fileName: string, position: number, openingBrace: number): boolean; /** * This will return a defined result if the position is after the `>` of the opening tag, or somewhere in the text, of a JSXElement with no closing tag. @@ -6021,11 +6020,15 @@ declare namespace ts { interface RenameInfoOptions { readonly allowRenameOfImportPath?: boolean; } + interface DocCommentTemplateOptions { + readonly generateReturnInDocTemplate?: boolean; + } interface SignatureHelpParameter { name: string; documentation: SymbolDisplayPart[]; displayParts: SymbolDisplayPart[]; isOptional: boolean; + isRest?: boolean; } interface SelectionRange { textSpan: TextSpan; diff --git a/tests/baselines/reference/asOperator3.types b/tests/baselines/reference/asOperator3.types index 1e40a6e218d1a..e5e319d3caf3a 100644 --- a/tests/baselines/reference/asOperator3.types +++ b/tests/baselines/reference/asOperator3.types @@ -5,7 +5,7 @@ declare function tag(...x: any[]): any; var a = `${123 + 456 as number}`; >a : string ->`${123 + 456 as number}` : `${number}` +>`${123 + 456 as number}` : string >123 + 456 as number : number >123 + 456 : number >123 : 123 @@ -13,7 +13,7 @@ var a = `${123 + 456 as number}`; var b = `leading ${123 + 456 as number}`; >b : string ->`leading ${123 + 456 as number}` : `leading ${number}` +>`leading ${123 + 456 as number}` : string >123 + 456 as number : number >123 + 456 : number >123 : 123 @@ -21,7 +21,7 @@ var b = `leading ${123 + 456 as number}`; var c = `${123 + 456 as number} trailing`; >c : string ->`${123 + 456 as number} trailing` : `${number} trailing` +>`${123 + 456 as number} trailing` : string >123 + 456 as number : number >123 + 456 : number >123 : 123 @@ -30,7 +30,7 @@ var c = `${123 + 456 as number} trailing`; var d = `Hello ${123} World` as string; >d : string >`Hello ${123} World` as string : string ->`Hello ${123} World` : "Hello 123 World" +>`Hello ${123} World` : string >123 : 123 var e = `Hello` as string; @@ -43,7 +43,7 @@ var f = 1 + `${1} end of string` as string; >1 + `${1} end of string` as string : string >1 + `${1} end of string` : string >1 : 1 ->`${1} end of string` : "1 end of string" +>`${1} end of string` : string >1 : 1 var g = tag `Hello ${123} World` as string; @@ -51,7 +51,7 @@ var g = tag `Hello ${123} World` as string; >tag `Hello ${123} World` as string : string >tag `Hello ${123} World` : any >tag : (...x: any[]) => any ->`Hello ${123} World` : "Hello 123 World" +>`Hello ${123} World` : string >123 : 123 var h = tag `Hello` as string; diff --git a/tests/baselines/reference/awaitInNonAsyncFunction.errors.txt b/tests/baselines/reference/awaitInNonAsyncFunction.errors.txt index 78eba138d0d14..ee1aa75d3cc74 100644 --- a/tests/baselines/reference/awaitInNonAsyncFunction.errors.txt +++ b/tests/baselines/reference/awaitInNonAsyncFunction.errors.txt @@ -1,18 +1,18 @@ -tests/cases/compiler/awaitInNonAsyncFunction.ts(4,7): error TS1103: A 'for-await-of' statement is only allowed within an async function or async generator. +tests/cases/compiler/awaitInNonAsyncFunction.ts(4,7): error TS1103: 'for await' loops are only allowed within async functions and at the top levels of modules. tests/cases/compiler/awaitInNonAsyncFunction.ts(5,10): error TS1308: 'await' expressions are only allowed within async functions and at the top levels of modules. -tests/cases/compiler/awaitInNonAsyncFunction.ts(9,7): error TS1103: A 'for-await-of' statement is only allowed within an async function or async generator. +tests/cases/compiler/awaitInNonAsyncFunction.ts(9,7): error TS1103: 'for await' loops are only allowed within async functions and at the top levels of modules. tests/cases/compiler/awaitInNonAsyncFunction.ts(10,10): error TS1308: 'await' expressions are only allowed within async functions and at the top levels of modules. -tests/cases/compiler/awaitInNonAsyncFunction.ts(14,7): error TS1103: A 'for-await-of' statement is only allowed within an async function or async generator. +tests/cases/compiler/awaitInNonAsyncFunction.ts(14,7): error TS1103: 'for await' loops are only allowed within async functions and at the top levels of modules. tests/cases/compiler/awaitInNonAsyncFunction.ts(15,3): error TS1308: 'await' expressions are only allowed within async functions and at the top levels of modules. -tests/cases/compiler/awaitInNonAsyncFunction.ts(19,7): error TS1103: A 'for-await-of' statement is only allowed within an async function or async generator. +tests/cases/compiler/awaitInNonAsyncFunction.ts(19,7): error TS1103: 'for await' loops are only allowed within async functions and at the top levels of modules. tests/cases/compiler/awaitInNonAsyncFunction.ts(20,10): error TS1308: 'await' expressions are only allowed within async functions and at the top levels of modules. -tests/cases/compiler/awaitInNonAsyncFunction.ts(24,7): error TS1103: A 'for-await-of' statement is only allowed within an async function or async generator. +tests/cases/compiler/awaitInNonAsyncFunction.ts(24,7): error TS1103: 'for await' loops are only allowed within async functions and at the top levels of modules. tests/cases/compiler/awaitInNonAsyncFunction.ts(25,9): error TS1308: 'await' expressions are only allowed within async functions and at the top levels of modules. -tests/cases/compiler/awaitInNonAsyncFunction.ts(30,9): error TS1103: A 'for-await-of' statement is only allowed within an async function or async generator. +tests/cases/compiler/awaitInNonAsyncFunction.ts(30,9): error TS1103: 'for await' loops are only allowed within async functions and at the top levels of modules. tests/cases/compiler/awaitInNonAsyncFunction.ts(31,5): error TS1308: 'await' expressions are only allowed within async functions and at the top levels of modules. -tests/cases/compiler/awaitInNonAsyncFunction.ts(34,7): error TS1103: A 'for-await-of' statement is only allowed within an async function or async generator. +tests/cases/compiler/awaitInNonAsyncFunction.ts(34,7): error TS1103: 'for await' loops are only allowed within async functions and at the top levels of modules. tests/cases/compiler/awaitInNonAsyncFunction.ts(35,5): error TS1308: 'await' expressions are only allowed within async functions and at the top levels of modules. -tests/cases/compiler/awaitInNonAsyncFunction.ts(39,5): error TS1103: A 'for-await-of' statement is only allowed within an async function or async generator. +tests/cases/compiler/awaitInNonAsyncFunction.ts(39,5): error TS1432: Top-level 'for await' loops are only allowed when the 'module' option is set to 'esnext' or 'system', and the 'target' option is set to 'es2017' or higher. tests/cases/compiler/awaitInNonAsyncFunction.ts(40,1): error TS1378: Top-level 'await' expressions are only allowed when the 'module' option is set to 'esnext' or 'system', and the 'target' option is set to 'es2017' or higher. @@ -22,7 +22,7 @@ tests/cases/compiler/awaitInNonAsyncFunction.ts(40,1): error TS1378: Top-level ' function normalFunc(p: Promise) { for await (const _ of []); ~~~~~ -!!! error TS1103: A 'for-await-of' statement is only allowed within an async function or async generator. +!!! error TS1103: 'for await' loops are only allowed within async functions and at the top levels of modules. !!! related TS1356 tests/cases/compiler/awaitInNonAsyncFunction.ts:3:10: Did you mean to mark this function as 'async'? return await p; ~~~~~ @@ -33,7 +33,7 @@ tests/cases/compiler/awaitInNonAsyncFunction.ts(40,1): error TS1378: Top-level ' export function exportedFunc(p: Promise) { for await (const _ of []); ~~~~~ -!!! error TS1103: A 'for-await-of' statement is only allowed within an async function or async generator. +!!! error TS1103: 'for await' loops are only allowed within async functions and at the top levels of modules. !!! related TS1356 tests/cases/compiler/awaitInNonAsyncFunction.ts:8:17: Did you mean to mark this function as 'async'? return await p; ~~~~~ @@ -44,7 +44,7 @@ tests/cases/compiler/awaitInNonAsyncFunction.ts(40,1): error TS1378: Top-level ' const functionExpression = function(p: Promise) { for await (const _ of []); ~~~~~ -!!! error TS1103: A 'for-await-of' statement is only allowed within an async function or async generator. +!!! error TS1103: 'for await' loops are only allowed within async functions and at the top levels of modules. !!! related TS1356 tests/cases/compiler/awaitInNonAsyncFunction.ts:13:28: Did you mean to mark this function as 'async'? await p; ~~~~~ @@ -55,7 +55,7 @@ tests/cases/compiler/awaitInNonAsyncFunction.ts(40,1): error TS1378: Top-level ' const arrowFunc = (p: Promise) => { for await (const _ of []); ~~~~~ -!!! error TS1103: A 'for-await-of' statement is only allowed within an async function or async generator. +!!! error TS1103: 'for await' loops are only allowed within async functions and at the top levels of modules. !!! related TS1356 tests/cases/compiler/awaitInNonAsyncFunction.ts:18:19: Did you mean to mark this function as 'async'? return await p; ~~~~~ @@ -66,7 +66,7 @@ tests/cases/compiler/awaitInNonAsyncFunction.ts(40,1): error TS1378: Top-level ' function* generatorFunc(p: Promise) { for await (const _ of []); ~~~~~ -!!! error TS1103: A 'for-await-of' statement is only allowed within an async function or async generator. +!!! error TS1103: 'for await' loops are only allowed within async functions and at the top levels of modules. !!! related TS1356 tests/cases/compiler/awaitInNonAsyncFunction.ts:23:11: Did you mean to mark this function as 'async'? yield await p; ~~~~~ @@ -78,7 +78,7 @@ tests/cases/compiler/awaitInNonAsyncFunction.ts(40,1): error TS1378: Top-level ' constructor(p: Promise) { for await (const _ of []); ~~~~~ -!!! error TS1103: A 'for-await-of' statement is only allowed within an async function or async generator. +!!! error TS1103: 'for await' loops are only allowed within async functions and at the top levels of modules. await p; ~~~~~ !!! error TS1308: 'await' expressions are only allowed within async functions and at the top levels of modules. @@ -86,7 +86,7 @@ tests/cases/compiler/awaitInNonAsyncFunction.ts(40,1): error TS1378: Top-level ' method(p: Promise) { for await (const _ of []); ~~~~~ -!!! error TS1103: A 'for-await-of' statement is only allowed within an async function or async generator. +!!! error TS1103: 'for await' loops are only allowed within async functions and at the top levels of modules. !!! related TS1356 tests/cases/compiler/awaitInNonAsyncFunction.ts:33:3: Did you mean to mark this function as 'async'? await p; ~~~~~ @@ -97,7 +97,7 @@ tests/cases/compiler/awaitInNonAsyncFunction.ts(40,1): error TS1378: Top-level ' for await (const _ of []); ~~~~~ -!!! error TS1103: A 'for-await-of' statement is only allowed within an async function or async generator. +!!! error TS1432: Top-level 'for await' loops are only allowed when the 'module' option is set to 'esnext' or 'system', and the 'target' option is set to 'es2017' or higher. await null; ~~~~~ !!! error TS1378: Top-level 'await' expressions are only allowed when the 'module' option is set to 'esnext' or 'system', and the 'target' option is set to 'es2017' or higher. \ No newline at end of file diff --git a/tests/baselines/reference/binderUninitializedModuleExportsAssignment.symbols b/tests/baselines/reference/binderUninitializedModuleExportsAssignment.symbols index 73777fb2299df..0e501f14c8500 100644 --- a/tests/baselines/reference/binderUninitializedModuleExportsAssignment.symbols +++ b/tests/baselines/reference/binderUninitializedModuleExportsAssignment.symbols @@ -8,7 +8,7 @@ var loop2 = loop1; >loop1 : Symbol(loop1, Decl(loop.js, 0, 3)) module.exports = loop2; ->module.exports : Symbol("tests/cases/conformance/salsa/loop", Decl(loop.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(loop.js, 0, 0)) >module : Symbol(export=, Decl(loop.js, 1, 18)) >exports : Symbol(export=, Decl(loop.js, 1, 18)) >loop2 : Symbol(loop2, Decl(loop.js, 1, 3)) diff --git a/tests/baselines/reference/binderUninitializedModuleExportsAssignment.types b/tests/baselines/reference/binderUninitializedModuleExportsAssignment.types index d1576b8588611..7a6fee6cddfef 100644 --- a/tests/baselines/reference/binderUninitializedModuleExportsAssignment.types +++ b/tests/baselines/reference/binderUninitializedModuleExportsAssignment.types @@ -10,7 +10,7 @@ var loop2 = loop1; module.exports = loop2; >module.exports = loop2 : any >module.exports : any ->module : { "\"tests/cases/conformance/salsa/loop\"": any; } +>module : { exports: any; } >exports : any >loop2 : any diff --git a/tests/baselines/reference/callChain.types b/tests/baselines/reference/callChain.types index ea4700aa9575d..1f1a4f1b7c918 100644 --- a/tests/baselines/reference/callChain.types +++ b/tests/baselines/reference/callChain.types @@ -260,7 +260,7 @@ declare const o5: () => undefined | (() => void); >o5 : () => undefined | (() => void) o5()?.(); ->o5()?.() : void | undefined +>o5()?.() : void >o5() : (() => void) | undefined >o5 : () => (() => void) | undefined diff --git a/tests/baselines/reference/callChainInference.js b/tests/baselines/reference/callChainInference.js new file mode 100644 index 0000000000000..f5a77972b27fe --- /dev/null +++ b/tests/baselines/reference/callChainInference.js @@ -0,0 +1,25 @@ +//// [callChainInference.ts] +// Repro from #42404 + +interface Y { + foo(this: T, arg: keyof T): void; + a: number; + b: string; +} + +declare const value: Y | undefined; + +if (value) { + value?.foo("a"); +} + +value?.foo("a"); + + +//// [callChainInference.js] +"use strict"; +// Repro from #42404 +if (value) { + value === null || value === void 0 ? void 0 : value.foo("a"); +} +value === null || value === void 0 ? void 0 : value.foo("a"); diff --git a/tests/baselines/reference/callChainInference.symbols b/tests/baselines/reference/callChainInference.symbols new file mode 100644 index 0000000000000..b1fab1a8d8b93 --- /dev/null +++ b/tests/baselines/reference/callChainInference.symbols @@ -0,0 +1,39 @@ +=== tests/cases/conformance/expressions/optionalChaining/callChain/callChainInference.ts === +// Repro from #42404 + +interface Y { +>Y : Symbol(Y, Decl(callChainInference.ts, 0, 0)) + + foo(this: T, arg: keyof T): void; +>foo : Symbol(Y.foo, Decl(callChainInference.ts, 2, 13)) +>T : Symbol(T, Decl(callChainInference.ts, 3, 8)) +>this : Symbol(this, Decl(callChainInference.ts, 3, 11)) +>T : Symbol(T, Decl(callChainInference.ts, 3, 8)) +>arg : Symbol(arg, Decl(callChainInference.ts, 3, 19)) +>T : Symbol(T, Decl(callChainInference.ts, 3, 8)) + + a: number; +>a : Symbol(Y.a, Decl(callChainInference.ts, 3, 40)) + + b: string; +>b : Symbol(Y.b, Decl(callChainInference.ts, 4, 14)) +} + +declare const value: Y | undefined; +>value : Symbol(value, Decl(callChainInference.ts, 8, 13)) +>Y : Symbol(Y, Decl(callChainInference.ts, 0, 0)) + +if (value) { +>value : Symbol(value, Decl(callChainInference.ts, 8, 13)) + + value?.foo("a"); +>value?.foo : Symbol(Y.foo, Decl(callChainInference.ts, 2, 13)) +>value : Symbol(value, Decl(callChainInference.ts, 8, 13)) +>foo : Symbol(Y.foo, Decl(callChainInference.ts, 2, 13)) +} + +value?.foo("a"); +>value?.foo : Symbol(Y.foo, Decl(callChainInference.ts, 2, 13)) +>value : Symbol(value, Decl(callChainInference.ts, 8, 13)) +>foo : Symbol(Y.foo, Decl(callChainInference.ts, 2, 13)) + diff --git a/tests/baselines/reference/callChainInference.types b/tests/baselines/reference/callChainInference.types new file mode 100644 index 0000000000000..3f19f66091e63 --- /dev/null +++ b/tests/baselines/reference/callChainInference.types @@ -0,0 +1,37 @@ +=== tests/cases/conformance/expressions/optionalChaining/callChain/callChainInference.ts === +// Repro from #42404 + +interface Y { + foo(this: T, arg: keyof T): void; +>foo : (this: T, arg: keyof T) => void +>this : T +>arg : keyof T + + a: number; +>a : number + + b: string; +>b : string +} + +declare const value: Y | undefined; +>value : Y | undefined + +if (value) { +>value : Y | undefined + + value?.foo("a"); +>value?.foo("a") : void +>value?.foo : (this: T, arg: keyof T) => void +>value : Y +>foo : (this: T, arg: keyof T) => void +>"a" : "a" +} + +value?.foo("a"); +>value?.foo("a") : void +>value?.foo : ((this: T, arg: keyof T) => void) | undefined +>value : Y | undefined +>foo : ((this: T, arg: keyof T) => void) | undefined +>"a" : "a" + diff --git a/tests/baselines/reference/callbackCrossModule.symbols b/tests/baselines/reference/callbackCrossModule.symbols index 9de5c8ffbf394..80a5a9451b012 100644 --- a/tests/baselines/reference/callbackCrossModule.symbols +++ b/tests/baselines/reference/callbackCrossModule.symbols @@ -4,7 +4,7 @@ * @return {any} I don't even know what this should return */ module.exports = C ->module.exports : Symbol("tests/cases/conformance/jsdoc/mod1", Decl(mod1.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >module : Symbol(export=, Decl(mod1.js, 0, 0)) >exports : Symbol(export=, Decl(mod1.js, 0, 0)) >C : Symbol(C, Decl(mod1.js, 4, 18)) diff --git a/tests/baselines/reference/callbackCrossModule.types b/tests/baselines/reference/callbackCrossModule.types index 5138fca3471cf..c3d88c890acb7 100644 --- a/tests/baselines/reference/callbackCrossModule.types +++ b/tests/baselines/reference/callbackCrossModule.types @@ -6,7 +6,7 @@ module.exports = C >module.exports = C : typeof C >module.exports : typeof C ->module : { "\"tests/cases/conformance/jsdoc/mod1\"": typeof C; } +>module : { exports: typeof C; } >exports : typeof C >C : typeof C diff --git a/tests/baselines/reference/checkExportsObjectAssignProperty.symbols b/tests/baselines/reference/checkExportsObjectAssignProperty.symbols index e1dcacbfe2c8f..df426ed4efc09 100644 --- a/tests/baselines/reference/checkExportsObjectAssignProperty.symbols +++ b/tests/baselines/reference/checkExportsObjectAssignProperty.symbols @@ -202,9 +202,9 @@ Object.defineProperty(module.exports, "thing", { value: "yes", writable: true }) >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/mod2", Decl(mod2.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod2.js, 0, 0)) >module : Symbol(module, Decl(mod2.js, 0, 22)) ->exports : Symbol("tests/cases/conformance/jsdoc/mod2", Decl(mod2.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod2.js, 0, 0)) >"thing" : Symbol(thing, Decl(mod2.js, 0, 0)) >value : Symbol(value, Decl(mod2.js, 0, 48)) >writable : Symbol(writable, Decl(mod2.js, 0, 62)) @@ -213,9 +213,9 @@ Object.defineProperty(module.exports, "readonlyProp", { value: "Smith", writable >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/mod2", Decl(mod2.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod2.js, 0, 0)) >module : Symbol(module, Decl(mod2.js, 0, 22)) ->exports : Symbol("tests/cases/conformance/jsdoc/mod2", Decl(mod2.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod2.js, 0, 0)) >"readonlyProp" : Symbol(readonlyProp, Decl(mod2.js, 0, 81)) >value : Symbol(value, Decl(mod2.js, 1, 55)) >writable : Symbol(writable, Decl(mod2.js, 1, 71)) @@ -224,9 +224,9 @@ Object.defineProperty(module.exports, "rwAccessors", { get() { return 98122 }, s >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/mod2", Decl(mod2.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod2.js, 0, 0)) >module : Symbol(module, Decl(mod2.js, 0, 22)) ->exports : Symbol("tests/cases/conformance/jsdoc/mod2", Decl(mod2.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod2.js, 0, 0)) >"rwAccessors" : Symbol(rwAccessors, Decl(mod2.js, 1, 91)) >get : Symbol(get, Decl(mod2.js, 2, 54)) >set : Symbol(set, Decl(mod2.js, 2, 78)) @@ -236,9 +236,9 @@ Object.defineProperty(module.exports, "readonlyAccessor", { get() { return 21.75 >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/mod2", Decl(mod2.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod2.js, 0, 0)) >module : Symbol(module, Decl(mod2.js, 0, 22)) ->exports : Symbol("tests/cases/conformance/jsdoc/mod2", Decl(mod2.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod2.js, 0, 0)) >"readonlyAccessor" : Symbol(readonlyAccessor, Decl(mod2.js, 2, 104)) >get : Symbol(get, Decl(mod2.js, 3, 59)) @@ -246,9 +246,9 @@ Object.defineProperty(module.exports, "setonlyAccessor", { >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/mod2", Decl(mod2.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod2.js, 0, 0)) >module : Symbol(module, Decl(mod2.js, 0, 22)) ->exports : Symbol("tests/cases/conformance/jsdoc/mod2", Decl(mod2.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod2.js, 0, 0)) >"setonlyAccessor" : Symbol(setonlyAccessor, Decl(mod2.js, 3, 86)) /** @param {string} str */ diff --git a/tests/baselines/reference/checkExportsObjectAssignProperty.types b/tests/baselines/reference/checkExportsObjectAssignProperty.types index 78bbbc8f3559f..a029a2aef6df9 100644 --- a/tests/baselines/reference/checkExportsObjectAssignProperty.types +++ b/tests/baselines/reference/checkExportsObjectAssignProperty.types @@ -255,9 +255,9 @@ Object.defineProperty(module.exports, "thing", { value: "yes", writable: true }) >Object.defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any ->module.exports : typeof import("tests/cases/conformance/jsdoc/mod2") ->module : { "\"tests/cases/conformance/jsdoc/mod2\"": typeof import("tests/cases/conformance/jsdoc/mod2"); } ->exports : typeof import("tests/cases/conformance/jsdoc/mod2") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >"thing" : "thing" >{ value: "yes", writable: true } : { value: string; writable: true; } >value : string @@ -270,9 +270,9 @@ Object.defineProperty(module.exports, "readonlyProp", { value: "Smith", writable >Object.defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any ->module.exports : typeof import("tests/cases/conformance/jsdoc/mod2") ->module : { "\"tests/cases/conformance/jsdoc/mod2\"": typeof import("tests/cases/conformance/jsdoc/mod2"); } ->exports : typeof import("tests/cases/conformance/jsdoc/mod2") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >"readonlyProp" : "readonlyProp" >{ value: "Smith", writable: false } : { value: string; writable: false; } >value : string @@ -285,9 +285,9 @@ Object.defineProperty(module.exports, "rwAccessors", { get() { return 98122 }, s >Object.defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any ->module.exports : typeof import("tests/cases/conformance/jsdoc/mod2") ->module : { "\"tests/cases/conformance/jsdoc/mod2\"": typeof import("tests/cases/conformance/jsdoc/mod2"); } ->exports : typeof import("tests/cases/conformance/jsdoc/mod2") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >"rwAccessors" : "rwAccessors" >{ get() { return 98122 }, set(_) { /*ignore*/ } } : { get(): number; set(_: any): void; } >get : () => number @@ -300,9 +300,9 @@ Object.defineProperty(module.exports, "readonlyAccessor", { get() { return 21.75 >Object.defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any ->module.exports : typeof import("tests/cases/conformance/jsdoc/mod2") ->module : { "\"tests/cases/conformance/jsdoc/mod2\"": typeof import("tests/cases/conformance/jsdoc/mod2"); } ->exports : typeof import("tests/cases/conformance/jsdoc/mod2") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >"readonlyAccessor" : "readonlyAccessor" >{ get() { return 21.75 } } : { get(): number; } >get : () => number @@ -313,9 +313,9 @@ Object.defineProperty(module.exports, "setonlyAccessor", { >Object.defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any ->module.exports : typeof import("tests/cases/conformance/jsdoc/mod2") ->module : { "\"tests/cases/conformance/jsdoc/mod2\"": typeof import("tests/cases/conformance/jsdoc/mod2"); } ->exports : typeof import("tests/cases/conformance/jsdoc/mod2") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >"setonlyAccessor" : "setonlyAccessor" >{ /** @param {string} str */ set(str) { this.rwAccessors = Number(str) }} : { set(str: string): void; } diff --git a/tests/baselines/reference/checkExportsObjectAssignPrototypeProperty.symbols b/tests/baselines/reference/checkExportsObjectAssignPrototypeProperty.symbols index 051a342a2b5e7..c06d66518ec43 100644 --- a/tests/baselines/reference/checkExportsObjectAssignPrototypeProperty.symbols +++ b/tests/baselines/reference/checkExportsObjectAssignPrototypeProperty.symbols @@ -170,7 +170,7 @@ Object.defineProperty(Person.prototype, "setonlyAccessor", { } }); module.exports = Person; ->module.exports : Symbol("tests/cases/conformance/jsdoc/mod1", Decl(mod1.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >module : Symbol(export=, Decl(mod1.js, 19, 3)) >exports : Symbol(export=, Decl(mod1.js, 19, 3)) >Person : Symbol(Person, Decl(mod1.js, 0, 0)) diff --git a/tests/baselines/reference/checkExportsObjectAssignPrototypeProperty.types b/tests/baselines/reference/checkExportsObjectAssignPrototypeProperty.types index 77875ad8c6374..085f6cf008ef9 100644 --- a/tests/baselines/reference/checkExportsObjectAssignPrototypeProperty.types +++ b/tests/baselines/reference/checkExportsObjectAssignPrototypeProperty.types @@ -214,7 +214,7 @@ Object.defineProperty(Person.prototype, "setonlyAccessor", { module.exports = Person; >module.exports = Person : typeof Person >module.exports : typeof Person ->module : { "\"tests/cases/conformance/jsdoc/mod1\"": typeof Person; } +>module : { exports: typeof Person; } >exports : typeof Person >Person : typeof Person diff --git a/tests/baselines/reference/checkJsObjectLiteralIndexSignatures.types b/tests/baselines/reference/checkJsObjectLiteralIndexSignatures.types index 465cbf72e815f..21653432b5acb 100644 --- a/tests/baselines/reference/checkJsObjectLiteralIndexSignatures.types +++ b/tests/baselines/reference/checkJsObjectLiteralIndexSignatures.types @@ -10,7 +10,7 @@ let n = Math.random(); let s = `${n}`; >s : string ->`${n}` : `${number}` +>`${n}` : string >n : number const numericIndex = { [n]: 1 }; diff --git a/tests/baselines/reference/checkJsTypeDefNoUnusedLocalMarked.symbols b/tests/baselines/reference/checkJsTypeDefNoUnusedLocalMarked.symbols index 3385a5bb58c11..34b50108d3012 100644 --- a/tests/baselines/reference/checkJsTypeDefNoUnusedLocalMarked.symbols +++ b/tests/baselines/reference/checkJsTypeDefNoUnusedLocalMarked.symbols @@ -22,7 +22,7 @@ export = Foo; /** @typedef {(foo: Foo) => string} FooFun */ module.exports = /** @type {FooFun} */(void 0); ->module.exports : Symbol("tests/cases/compiler/something", Decl(something.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(something.js, 0, 0)) >module : Symbol(export=, Decl(something.js, 0, 0)) >exports : Symbol(export=, Decl(something.js, 0, 0)) diff --git a/tests/baselines/reference/checkJsTypeDefNoUnusedLocalMarked.types b/tests/baselines/reference/checkJsTypeDefNoUnusedLocalMarked.types index c9ddb40738138..d3c62c6f0ab07 100644 --- a/tests/baselines/reference/checkJsTypeDefNoUnusedLocalMarked.types +++ b/tests/baselines/reference/checkJsTypeDefNoUnusedLocalMarked.types @@ -24,7 +24,7 @@ export = Foo; module.exports = /** @type {FooFun} */(void 0); >module.exports = /** @type {FooFun} */(void 0) : (foo: Foo) => string >module.exports : (foo: typeof import("tests/cases/compiler/file")) => string ->module : { "\"tests/cases/compiler/something\"": (foo: typeof import("tests/cases/compiler/file")) => string; } +>module : { exports: (foo: typeof import("tests/cases/compiler/file")) => string; } >exports : (foo: typeof import("tests/cases/compiler/file")) => string >(void 0) : FooFun >void 0 : undefined diff --git a/tests/baselines/reference/checkJsxChildrenCanBeTupleType.symbols b/tests/baselines/reference/checkJsxChildrenCanBeTupleType.symbols index 05c7042ad1025..eb16e5a085075 100644 --- a/tests/baselines/reference/checkJsxChildrenCanBeTupleType.symbols +++ b/tests/baselines/reference/checkJsxChildrenCanBeTupleType.symbols @@ -29,10 +29,10 @@ const test = >ResizablePanel : Symbol(ResizablePanel, Decl(checkJsxChildrenCanBeTupleType.tsx, 6, 1))
->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114))
->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >ResizablePanel : Symbol(ResizablePanel, Decl(checkJsxChildrenCanBeTupleType.tsx, 6, 1)) @@ -42,13 +42,13 @@ const testErr = >ResizablePanel : Symbol(ResizablePanel, Decl(checkJsxChildrenCanBeTupleType.tsx, 6, 1))
->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114))
->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114))
->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >ResizablePanel : Symbol(ResizablePanel, Decl(checkJsxChildrenCanBeTupleType.tsx, 6, 1)) diff --git a/tests/baselines/reference/checkJsxUnionSFXContextualTypeInferredCorrectly.symbols b/tests/baselines/reference/checkJsxUnionSFXContextualTypeInferredCorrectly.symbols index 13675eb985d7e..3d30cc6bc6685 100644 --- a/tests/baselines/reference/checkJsxUnionSFXContextualTypeInferredCorrectly.symbols +++ b/tests/baselines/reference/checkJsxUnionSFXContextualTypeInferredCorrectly.symbols @@ -39,8 +39,8 @@ export function ComponentWithUnion(props: PM | PS) { >PS : Symbol(PS, Decl(checkJsxUnionSFXContextualTypeInferredCorrectly.tsx, 2, 26)) return

; ->h1 : Symbol(JSX.IntrinsicElements.h1, Decl(react16.d.ts, 2430, 106)) ->h1 : Symbol(JSX.IntrinsicElements.h1, Decl(react16.d.ts, 2430, 106)) +>h1 : Symbol(JSX.IntrinsicElements.h1, Decl(react16.d.ts, 2556, 106)) +>h1 : Symbol(JSX.IntrinsicElements.h1, Decl(react16.d.ts, 2556, 106)) } // Usage with React tsx diff --git a/tests/baselines/reference/checkObjectDefineProperty.symbols b/tests/baselines/reference/checkObjectDefineProperty.symbols index 6b746640af88e..0552f8fcf494e 100644 --- a/tests/baselines/reference/checkObjectDefineProperty.symbols +++ b/tests/baselines/reference/checkObjectDefineProperty.symbols @@ -196,7 +196,7 @@ match(() => expected, (x = expected) => void 0); >expected : Symbol(expected, Decl(index.js, 32, 5)) module.exports = x; ->module.exports : Symbol("tests/cases/conformance/jsdoc/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 41, 48)) >exports : Symbol(export=, Decl(index.js, 41, 48)) >x : Symbol(x, Decl(index.js, 0, 5), Decl(index.js, 1, 22), Decl(index.js, 2, 22), Decl(index.js, 3, 22), Decl(index.js, 4, 22) ... and 2 more) diff --git a/tests/baselines/reference/checkObjectDefineProperty.types b/tests/baselines/reference/checkObjectDefineProperty.types index 05359b68bb183..79467e4dc2ede 100644 --- a/tests/baselines/reference/checkObjectDefineProperty.types +++ b/tests/baselines/reference/checkObjectDefineProperty.types @@ -249,7 +249,7 @@ match(() => expected, (x = expected) => void 0); module.exports = x; >module.exports = x : typeof x >module.exports : typeof x ->module : { "\"tests/cases/conformance/jsdoc/index\"": typeof x; } +>module : { exports: typeof x; } >exports : typeof x >x : typeof x diff --git a/tests/baselines/reference/commonJSReexport.symbols b/tests/baselines/reference/commonJSReexport.symbols index 7b31548415ffd..73225e001c883 100644 --- a/tests/baselines/reference/commonJSReexport.symbols +++ b/tests/baselines/reference/commonJSReexport.symbols @@ -17,9 +17,9 @@ const hardline = { type: "hard" } >type : Symbol(type, Decl(first.js, 2, 18)) module.exports = { ->module.exports : Symbol("tests/cases/conformance/salsa/first", Decl(first.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(first.js, 0, 0)) >module : Symbol(module, Decl(first.js, 2, 33)) ->exports : Symbol("tests/cases/conformance/salsa/first", Decl(first.js, 0, 0)) +>exports : Symbol(module.exports, Decl(first.js, 0, 0)) hardline >hardline : Symbol(hardline, Decl(first.js, 3, 18)) @@ -28,7 +28,7 @@ module.exports = { === tests/cases/conformance/salsa/second.js === module.exports = { ->module.exports : Symbol("tests/cases/conformance/salsa/second", Decl(second.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(second.js, 0, 0)) >module : Symbol(export=, Decl(second.js, 0, 0)) >exports : Symbol(export=, Decl(second.js, 0, 0)) diff --git a/tests/baselines/reference/commonJSReexport.types b/tests/baselines/reference/commonJSReexport.types index 84e98c4fea008..1b8ec20f34941 100644 --- a/tests/baselines/reference/commonJSReexport.types +++ b/tests/baselines/reference/commonJSReexport.types @@ -20,10 +20,10 @@ const hardline = { type: "hard" } >"hard" : "hard" module.exports = { ->module.exports = { hardline} : typeof import("tests/cases/conformance/salsa/first") ->module.exports : typeof import("tests/cases/conformance/salsa/first") ->module : { "\"tests/cases/conformance/salsa/first\"": typeof import("tests/cases/conformance/salsa/first"); } ->exports : typeof import("tests/cases/conformance/salsa/first") +>module.exports = { hardline} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{ hardline} : { hardline: { type: string; }; } hardline @@ -35,7 +35,7 @@ module.exports = { module.exports = { >module.exports = { nested: require('./first')} : { nested: typeof import("tests/cases/conformance/salsa/first"); } >module.exports : { nested: typeof import("tests/cases/conformance/salsa/first"); } ->module : { "\"tests/cases/conformance/salsa/second\"": { nested: typeof import("tests/cases/conformance/salsa/first"); }; } +>module : { exports: { nested: typeof import("tests/cases/conformance/salsa/first"); }; } >exports : { nested: typeof import("tests/cases/conformance/salsa/first"); } >{ nested: require('./first')} : { nested: typeof import("tests/cases/conformance/salsa/first"); } diff --git a/tests/baselines/reference/commonJsIsolatedModules.symbols b/tests/baselines/reference/commonJsIsolatedModules.symbols index f0f9d0d785553..af28f884f0ef3 100644 --- a/tests/baselines/reference/commonJsIsolatedModules.symbols +++ b/tests/baselines/reference/commonJsIsolatedModules.symbols @@ -1,8 +1,8 @@ === tests/cases/compiler/index.js === module.exports = {} ->module.exports : Symbol("tests/cases/compiler/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/compiler/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) var x = 1 >x : Symbol(x, Decl(index.js, 1, 3)) diff --git a/tests/baselines/reference/commonJsIsolatedModules.types b/tests/baselines/reference/commonJsIsolatedModules.types index 12da6a2e0a780..986988648c98e 100644 --- a/tests/baselines/reference/commonJsIsolatedModules.types +++ b/tests/baselines/reference/commonJsIsolatedModules.types @@ -1,9 +1,9 @@ === tests/cases/compiler/index.js === module.exports = {} ->module.exports = {} : typeof import("tests/cases/compiler/index") ->module.exports : typeof import("tests/cases/compiler/index") ->module : { "\"tests/cases/compiler/index\"": typeof import("tests/cases/compiler/index"); } ->exports : typeof import("tests/cases/compiler/index") +>module.exports = {} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{} : {} var x = 1 diff --git a/tests/baselines/reference/computedPropertyNames10_ES5.types b/tests/baselines/reference/computedPropertyNames10_ES5.types index 7c89309b32e02..82d82bcc638fd 100644 --- a/tests/baselines/reference/computedPropertyNames10_ES5.types +++ b/tests/baselines/reference/computedPropertyNames10_ES5.types @@ -60,6 +60,6 @@ var v = { [`hello ${a} bye`]() { } >[`hello ${a} bye`] : () => void ->`hello ${a} bye` : `hello ${any} bye` +>`hello ${a} bye` : string >a : any } diff --git a/tests/baselines/reference/computedPropertyNames10_ES6.types b/tests/baselines/reference/computedPropertyNames10_ES6.types index 355fc7c58208d..c9ad6eeebb6c4 100644 --- a/tests/baselines/reference/computedPropertyNames10_ES6.types +++ b/tests/baselines/reference/computedPropertyNames10_ES6.types @@ -60,6 +60,6 @@ var v = { [`hello ${a} bye`]() { } >[`hello ${a} bye`] : () => void ->`hello ${a} bye` : `hello ${any} bye` +>`hello ${a} bye` : string >a : any } diff --git a/tests/baselines/reference/computedPropertyNames11_ES5.types b/tests/baselines/reference/computedPropertyNames11_ES5.types index b66b419310d83..944f4a4cfcc3b 100644 --- a/tests/baselines/reference/computedPropertyNames11_ES5.types +++ b/tests/baselines/reference/computedPropertyNames11_ES5.types @@ -70,7 +70,7 @@ var v = { get [`hello ${a} bye`]() { return 0; } >[`hello ${a} bye`] : number ->`hello ${a} bye` : `hello ${any} bye` +>`hello ${a} bye` : string >a : any >0 : 0 } diff --git a/tests/baselines/reference/computedPropertyNames11_ES6.types b/tests/baselines/reference/computedPropertyNames11_ES6.types index 40e0c98488eb1..1d9551ea082be 100644 --- a/tests/baselines/reference/computedPropertyNames11_ES6.types +++ b/tests/baselines/reference/computedPropertyNames11_ES6.types @@ -70,7 +70,7 @@ var v = { get [`hello ${a} bye`]() { return 0; } >[`hello ${a} bye`] : number ->`hello ${a} bye` : `hello ${any} bye` +>`hello ${a} bye` : string >a : any >0 : 0 } diff --git a/tests/baselines/reference/computedPropertyNames12_ES5.types b/tests/baselines/reference/computedPropertyNames12_ES5.types index cc7d1a29755dd..63afc3bd4da0b 100644 --- a/tests/baselines/reference/computedPropertyNames12_ES5.types +++ b/tests/baselines/reference/computedPropertyNames12_ES5.types @@ -63,7 +63,7 @@ class C { static [`hello ${a} bye`] = 0 >[`hello ${a} bye`] : number ->`hello ${a} bye` : `hello ${any} bye` +>`hello ${a} bye` : string >a : any >0 : 0 } diff --git a/tests/baselines/reference/computedPropertyNames12_ES6.types b/tests/baselines/reference/computedPropertyNames12_ES6.types index d1da7d7aab9dd..f846d159eec08 100644 --- a/tests/baselines/reference/computedPropertyNames12_ES6.types +++ b/tests/baselines/reference/computedPropertyNames12_ES6.types @@ -63,7 +63,7 @@ class C { static [`hello ${a} bye`] = 0 >[`hello ${a} bye`] : number ->`hello ${a} bye` : `hello ${any} bye` +>`hello ${a} bye` : string >a : any >0 : 0 } diff --git a/tests/baselines/reference/computedPropertyNames13_ES5.types b/tests/baselines/reference/computedPropertyNames13_ES5.types index 33c89a82c94c6..07c5cee22cd0e 100644 --- a/tests/baselines/reference/computedPropertyNames13_ES5.types +++ b/tests/baselines/reference/computedPropertyNames13_ES5.types @@ -59,6 +59,6 @@ class C { static [`hello ${a} bye`]() { } >[`hello ${a} bye`] : () => void ->`hello ${a} bye` : `hello ${any} bye` +>`hello ${a} bye` : string >a : any } diff --git a/tests/baselines/reference/computedPropertyNames13_ES6.types b/tests/baselines/reference/computedPropertyNames13_ES6.types index 57a4bb9b46548..8e0111d760022 100644 --- a/tests/baselines/reference/computedPropertyNames13_ES6.types +++ b/tests/baselines/reference/computedPropertyNames13_ES6.types @@ -59,6 +59,6 @@ class C { static [`hello ${a} bye`]() { } >[`hello ${a} bye`] : () => void ->`hello ${a} bye` : `hello ${any} bye` +>`hello ${a} bye` : string >a : any } diff --git a/tests/baselines/reference/computedPropertyNames16_ES5.types b/tests/baselines/reference/computedPropertyNames16_ES5.types index 468f77b322975..7e6d5054098ec 100644 --- a/tests/baselines/reference/computedPropertyNames16_ES5.types +++ b/tests/baselines/reference/computedPropertyNames16_ES5.types @@ -69,7 +69,7 @@ class C { get [`hello ${a} bye`]() { return 0; } >[`hello ${a} bye`] : number ->`hello ${a} bye` : `hello ${any} bye` +>`hello ${a} bye` : string >a : any >0 : 0 } diff --git a/tests/baselines/reference/computedPropertyNames16_ES6.types b/tests/baselines/reference/computedPropertyNames16_ES6.types index 558af27cea7bd..9898cbc00d4dc 100644 --- a/tests/baselines/reference/computedPropertyNames16_ES6.types +++ b/tests/baselines/reference/computedPropertyNames16_ES6.types @@ -69,7 +69,7 @@ class C { get [`hello ${a} bye`]() { return 0; } >[`hello ${a} bye`] : number ->`hello ${a} bye` : `hello ${any} bye` +>`hello ${a} bye` : string >a : any >0 : 0 } diff --git a/tests/baselines/reference/computedPropertyNames4_ES5.types b/tests/baselines/reference/computedPropertyNames4_ES5.types index ba6d3c6d9e828..b9181140ed56c 100644 --- a/tests/baselines/reference/computedPropertyNames4_ES5.types +++ b/tests/baselines/reference/computedPropertyNames4_ES5.types @@ -70,7 +70,7 @@ var v = { [`hello ${a} bye`]: 0 >[`hello ${a} bye`] : number ->`hello ${a} bye` : `hello ${any} bye` +>`hello ${a} bye` : string >a : any >0 : 0 } diff --git a/tests/baselines/reference/computedPropertyNames4_ES6.types b/tests/baselines/reference/computedPropertyNames4_ES6.types index a25ca0f7bc153..669af26ebdf12 100644 --- a/tests/baselines/reference/computedPropertyNames4_ES6.types +++ b/tests/baselines/reference/computedPropertyNames4_ES6.types @@ -70,7 +70,7 @@ var v = { [`hello ${a} bye`]: 0 >[`hello ${a} bye`] : number ->`hello ${a} bye` : `hello ${any} bye` +>`hello ${a} bye` : string >a : any >0 : 0 } diff --git a/tests/baselines/reference/computedTypesKeyofNoIndexSignatureType.js b/tests/baselines/reference/computedTypesKeyofNoIndexSignatureType.js new file mode 100644 index 0000000000000..600ffaa78f67c --- /dev/null +++ b/tests/baselines/reference/computedTypesKeyofNoIndexSignatureType.js @@ -0,0 +1,23 @@ +//// [computedTypesKeyofNoIndexSignatureType.ts] +type Compute = { [K in keyof A]: Compute; } & {}; + +type EqualsTest = () => A extends T ? 1 : 0; +type Equals = EqualsTest extends EqualsTest ? 1 : 0; + +type Filter = Equals extends 1 ? never : K; + +type OmitIndex = { + [K in keyof T as Filter]: T[K]; +}; + +type IndexObject = { [key: string]: unknown; }; +type FooBar = { foo: "hello"; bar: "world"; }; + +type WithIndex = Compute; // { [x: string]: {}; foo: "hello"; bar: "world"; } <-- OK +type WithoutIndex = OmitIndex; // { foo: "hello"; bar: "world"; } <-- OK + +type FooBarKey = keyof FooBar; // "foo" | "bar" <-- OK +type WithIndexKey = keyof WithIndex; // string | number <-- Expected: string +type WithoutIndexKey = keyof WithoutIndex; // number <-- Expected: "foo" | "bar" + +//// [computedTypesKeyofNoIndexSignatureType.js] diff --git a/tests/baselines/reference/computedTypesKeyofNoIndexSignatureType.symbols b/tests/baselines/reference/computedTypesKeyofNoIndexSignatureType.symbols new file mode 100644 index 0000000000000..a329413972d07 --- /dev/null +++ b/tests/baselines/reference/computedTypesKeyofNoIndexSignatureType.symbols @@ -0,0 +1,83 @@ +=== tests/cases/compiler/computedTypesKeyofNoIndexSignatureType.ts === +type Compute = { [K in keyof A]: Compute; } & {}; +>Compute : Symbol(Compute, Decl(computedTypesKeyofNoIndexSignatureType.ts, 0, 0)) +>A : Symbol(A, Decl(computedTypesKeyofNoIndexSignatureType.ts, 0, 13)) +>K : Symbol(K, Decl(computedTypesKeyofNoIndexSignatureType.ts, 0, 21)) +>A : Symbol(A, Decl(computedTypesKeyofNoIndexSignatureType.ts, 0, 13)) +>Compute : Symbol(Compute, Decl(computedTypesKeyofNoIndexSignatureType.ts, 0, 0)) +>A : Symbol(A, Decl(computedTypesKeyofNoIndexSignatureType.ts, 0, 13)) +>K : Symbol(K, Decl(computedTypesKeyofNoIndexSignatureType.ts, 0, 21)) + +type EqualsTest = () => A extends T ? 1 : 0; +>EqualsTest : Symbol(EqualsTest, Decl(computedTypesKeyofNoIndexSignatureType.ts, 0, 58)) +>T : Symbol(T, Decl(computedTypesKeyofNoIndexSignatureType.ts, 2, 16)) +>A : Symbol(A, Decl(computedTypesKeyofNoIndexSignatureType.ts, 2, 22)) +>A : Symbol(A, Decl(computedTypesKeyofNoIndexSignatureType.ts, 2, 22)) +>T : Symbol(T, Decl(computedTypesKeyofNoIndexSignatureType.ts, 2, 16)) + +type Equals = EqualsTest extends EqualsTest ? 1 : 0; +>Equals : Symbol(Equals, Decl(computedTypesKeyofNoIndexSignatureType.ts, 2, 50)) +>A1 : Symbol(A1, Decl(computedTypesKeyofNoIndexSignatureType.ts, 3, 12)) +>A2 : Symbol(A2, Decl(computedTypesKeyofNoIndexSignatureType.ts, 3, 15)) +>EqualsTest : Symbol(EqualsTest, Decl(computedTypesKeyofNoIndexSignatureType.ts, 0, 58)) +>A2 : Symbol(A2, Decl(computedTypesKeyofNoIndexSignatureType.ts, 3, 15)) +>EqualsTest : Symbol(EqualsTest, Decl(computedTypesKeyofNoIndexSignatureType.ts, 0, 58)) +>A1 : Symbol(A1, Decl(computedTypesKeyofNoIndexSignatureType.ts, 3, 12)) + +type Filter = Equals extends 1 ? never : K; +>Filter : Symbol(Filter, Decl(computedTypesKeyofNoIndexSignatureType.ts, 3, 68)) +>K : Symbol(K, Decl(computedTypesKeyofNoIndexSignatureType.ts, 5, 12)) +>I : Symbol(I, Decl(computedTypesKeyofNoIndexSignatureType.ts, 5, 14)) +>Equals : Symbol(Equals, Decl(computedTypesKeyofNoIndexSignatureType.ts, 2, 50)) +>K : Symbol(K, Decl(computedTypesKeyofNoIndexSignatureType.ts, 5, 12)) +>I : Symbol(I, Decl(computedTypesKeyofNoIndexSignatureType.ts, 5, 14)) +>K : Symbol(K, Decl(computedTypesKeyofNoIndexSignatureType.ts, 5, 12)) + +type OmitIndex = { +>OmitIndex : Symbol(OmitIndex, Decl(computedTypesKeyofNoIndexSignatureType.ts, 5, 55)) +>T : Symbol(T, Decl(computedTypesKeyofNoIndexSignatureType.ts, 7, 15)) +>I : Symbol(I, Decl(computedTypesKeyofNoIndexSignatureType.ts, 7, 17)) + + [K in keyof T as Filter]: T[K]; +>K : Symbol(K, Decl(computedTypesKeyofNoIndexSignatureType.ts, 8, 3)) +>T : Symbol(T, Decl(computedTypesKeyofNoIndexSignatureType.ts, 7, 15)) +>Filter : Symbol(Filter, Decl(computedTypesKeyofNoIndexSignatureType.ts, 3, 68)) +>K : Symbol(K, Decl(computedTypesKeyofNoIndexSignatureType.ts, 8, 3)) +>I : Symbol(I, Decl(computedTypesKeyofNoIndexSignatureType.ts, 7, 17)) +>T : Symbol(T, Decl(computedTypesKeyofNoIndexSignatureType.ts, 7, 15)) +>K : Symbol(K, Decl(computedTypesKeyofNoIndexSignatureType.ts, 8, 3)) + +}; + +type IndexObject = { [key: string]: unknown; }; +>IndexObject : Symbol(IndexObject, Decl(computedTypesKeyofNoIndexSignatureType.ts, 9, 2)) +>key : Symbol(key, Decl(computedTypesKeyofNoIndexSignatureType.ts, 11, 22)) + +type FooBar = { foo: "hello"; bar: "world"; }; +>FooBar : Symbol(FooBar, Decl(computedTypesKeyofNoIndexSignatureType.ts, 11, 47)) +>foo : Symbol(foo, Decl(computedTypesKeyofNoIndexSignatureType.ts, 12, 15)) +>bar : Symbol(bar, Decl(computedTypesKeyofNoIndexSignatureType.ts, 12, 29)) + +type WithIndex = Compute; // { [x: string]: {}; foo: "hello"; bar: "world"; } <-- OK +>WithIndex : Symbol(WithIndex, Decl(computedTypesKeyofNoIndexSignatureType.ts, 12, 46)) +>Compute : Symbol(Compute, Decl(computedTypesKeyofNoIndexSignatureType.ts, 0, 0)) +>FooBar : Symbol(FooBar, Decl(computedTypesKeyofNoIndexSignatureType.ts, 11, 47)) +>IndexObject : Symbol(IndexObject, Decl(computedTypesKeyofNoIndexSignatureType.ts, 9, 2)) + +type WithoutIndex = OmitIndex; // { foo: "hello"; bar: "world"; } <-- OK +>WithoutIndex : Symbol(WithoutIndex, Decl(computedTypesKeyofNoIndexSignatureType.ts, 14, 47)) +>OmitIndex : Symbol(OmitIndex, Decl(computedTypesKeyofNoIndexSignatureType.ts, 5, 55)) +>WithIndex : Symbol(WithIndex, Decl(computedTypesKeyofNoIndexSignatureType.ts, 12, 46)) + +type FooBarKey = keyof FooBar; // "foo" | "bar" <-- OK +>FooBarKey : Symbol(FooBarKey, Decl(computedTypesKeyofNoIndexSignatureType.ts, 15, 49)) +>FooBar : Symbol(FooBar, Decl(computedTypesKeyofNoIndexSignatureType.ts, 11, 47)) + +type WithIndexKey = keyof WithIndex; // string | number <-- Expected: string +>WithIndexKey : Symbol(WithIndexKey, Decl(computedTypesKeyofNoIndexSignatureType.ts, 17, 30)) +>WithIndex : Symbol(WithIndex, Decl(computedTypesKeyofNoIndexSignatureType.ts, 12, 46)) + +type WithoutIndexKey = keyof WithoutIndex; // number <-- Expected: "foo" | "bar" +>WithoutIndexKey : Symbol(WithoutIndexKey, Decl(computedTypesKeyofNoIndexSignatureType.ts, 18, 36)) +>WithoutIndex : Symbol(WithoutIndex, Decl(computedTypesKeyofNoIndexSignatureType.ts, 14, 47)) + diff --git a/tests/baselines/reference/computedTypesKeyofNoIndexSignatureType.types b/tests/baselines/reference/computedTypesKeyofNoIndexSignatureType.types new file mode 100644 index 0000000000000..4723797638850 --- /dev/null +++ b/tests/baselines/reference/computedTypesKeyofNoIndexSignatureType.types @@ -0,0 +1,43 @@ +=== tests/cases/compiler/computedTypesKeyofNoIndexSignatureType.ts === +type Compute = { [K in keyof A]: Compute; } & {}; +>Compute : { [K in keyof A]: { [K in keyof A[K]]: { [K in keyof A[K][K]]: { [K in keyof A[K][K][K]]: { [K in keyof A[K][K][K][K]]: { [K in keyof A[K][K][K][K][K]]: { [K in keyof A[K][K][K][K][K][K]]: { [K in keyof A[K][K][K][K][K][K][K]]: { [K in keyof A[K][K][K][K][K][K][K][K]]: { [K in keyof A[K][K][K][K][K][K][K][K][K]]: { [K in keyof A[K][K][K][K][K][K][K][K][K][K]]: any; }; }; }; }; }; }; }; }; }; }; } + +type EqualsTest = () => A extends T ? 1 : 0; +>EqualsTest : EqualsTest + +type Equals = EqualsTest extends EqualsTest ? 1 : 0; +>Equals : Equals + +type Filter = Equals extends 1 ? never : K; +>Filter : Filter + +type OmitIndex = { +>OmitIndex : OmitIndex + + [K in keyof T as Filter]: T[K]; +}; + +type IndexObject = { [key: string]: unknown; }; +>IndexObject : IndexObject +>key : string + +type FooBar = { foo: "hello"; bar: "world"; }; +>FooBar : FooBar +>foo : "hello" +>bar : "world" + +type WithIndex = Compute; // { [x: string]: {}; foo: "hello"; bar: "world"; } <-- OK +>WithIndex : { [x: string]: {}; foo: "hello"; bar: "world"; } + +type WithoutIndex = OmitIndex; // { foo: "hello"; bar: "world"; } <-- OK +>WithoutIndex : OmitIndex<{ [x: string]: {}; foo: "hello"; bar: "world"; }, string> + +type FooBarKey = keyof FooBar; // "foo" | "bar" <-- OK +>FooBarKey : keyof FooBar + +type WithIndexKey = keyof WithIndex; // string | number <-- Expected: string +>WithIndexKey : string | number + +type WithoutIndexKey = keyof WithoutIndex; // number <-- Expected: "foo" | "bar" +>WithoutIndexKey : number | "foo" | "bar" + diff --git a/tests/baselines/reference/conditionalAnyCheckTypePicksBothBranches.errors.txt b/tests/baselines/reference/conditionalAnyCheckTypePicksBothBranches.errors.txt new file mode 100644 index 0000000000000..92722f01a4010 --- /dev/null +++ b/tests/baselines/reference/conditionalAnyCheckTypePicksBothBranches.errors.txt @@ -0,0 +1,15 @@ +tests/cases/compiler/conditionalAnyCheckTypePicksBothBranches.ts(9,1): error TS2322: Type '0' is not assignable to type '1'. + + +==== tests/cases/compiler/conditionalAnyCheckTypePicksBothBranches.ts (1 errors) ==== + type T = any extends number ? 1 : 0; + let x: T; + x = 1; + x = 0; // not an error + + type U = [any] extends [number] ? 1 : 0; + let y: U; + y = 1; + y = 0; // error + ~ +!!! error TS2322: Type '0' is not assignable to type '1'. \ No newline at end of file diff --git a/tests/baselines/reference/conditionalAnyCheckTypePicksBothBranches.js b/tests/baselines/reference/conditionalAnyCheckTypePicksBothBranches.js new file mode 100644 index 0000000000000..41e72019fd82c --- /dev/null +++ b/tests/baselines/reference/conditionalAnyCheckTypePicksBothBranches.js @@ -0,0 +1,18 @@ +//// [conditionalAnyCheckTypePicksBothBranches.ts] +type T = any extends number ? 1 : 0; +let x: T; +x = 1; +x = 0; // not an error + +type U = [any] extends [number] ? 1 : 0; +let y: U; +y = 1; +y = 0; // error + +//// [conditionalAnyCheckTypePicksBothBranches.js] +var x; +x = 1; +x = 0; // not an error +var y; +y = 1; +y = 0; // error diff --git a/tests/baselines/reference/conditionalAnyCheckTypePicksBothBranches.symbols b/tests/baselines/reference/conditionalAnyCheckTypePicksBothBranches.symbols new file mode 100644 index 0000000000000..ca02f89be04fb --- /dev/null +++ b/tests/baselines/reference/conditionalAnyCheckTypePicksBothBranches.symbols @@ -0,0 +1,27 @@ +=== tests/cases/compiler/conditionalAnyCheckTypePicksBothBranches.ts === +type T = any extends number ? 1 : 0; +>T : Symbol(T, Decl(conditionalAnyCheckTypePicksBothBranches.ts, 0, 0)) + +let x: T; +>x : Symbol(x, Decl(conditionalAnyCheckTypePicksBothBranches.ts, 1, 3)) +>T : Symbol(T, Decl(conditionalAnyCheckTypePicksBothBranches.ts, 0, 0)) + +x = 1; +>x : Symbol(x, Decl(conditionalAnyCheckTypePicksBothBranches.ts, 1, 3)) + +x = 0; // not an error +>x : Symbol(x, Decl(conditionalAnyCheckTypePicksBothBranches.ts, 1, 3)) + +type U = [any] extends [number] ? 1 : 0; +>U : Symbol(U, Decl(conditionalAnyCheckTypePicksBothBranches.ts, 3, 6)) + +let y: U; +>y : Symbol(y, Decl(conditionalAnyCheckTypePicksBothBranches.ts, 6, 3)) +>U : Symbol(U, Decl(conditionalAnyCheckTypePicksBothBranches.ts, 3, 6)) + +y = 1; +>y : Symbol(y, Decl(conditionalAnyCheckTypePicksBothBranches.ts, 6, 3)) + +y = 0; // error +>y : Symbol(y, Decl(conditionalAnyCheckTypePicksBothBranches.ts, 6, 3)) + diff --git a/tests/baselines/reference/conditionalAnyCheckTypePicksBothBranches.types b/tests/baselines/reference/conditionalAnyCheckTypePicksBothBranches.types new file mode 100644 index 0000000000000..f9523f041d078 --- /dev/null +++ b/tests/baselines/reference/conditionalAnyCheckTypePicksBothBranches.types @@ -0,0 +1,33 @@ +=== tests/cases/compiler/conditionalAnyCheckTypePicksBothBranches.ts === +type T = any extends number ? 1 : 0; +>T : 0 | 1 + +let x: T; +>x : 0 | 1 + +x = 1; +>x = 1 : 1 +>x : 0 | 1 +>1 : 1 + +x = 0; // not an error +>x = 0 : 0 +>x : 0 | 1 +>0 : 0 + +type U = [any] extends [number] ? 1 : 0; +>U : 1 + +let y: U; +>y : 1 + +y = 1; +>y = 1 : 1 +>y : 1 +>1 : 1 + +y = 0; // error +>y = 0 : 0 +>y : 1 +>0 : 0 + diff --git a/tests/baselines/reference/conditionalEqualityTestingNullability.js b/tests/baselines/reference/conditionalEqualityTestingNullability.js new file mode 100644 index 0000000000000..3c30da8a0ff96 --- /dev/null +++ b/tests/baselines/reference/conditionalEqualityTestingNullability.js @@ -0,0 +1,19 @@ +//// [conditionalEqualityTestingNullability.ts] +export type Equals = + (() => A extends A1 ? 1 : 0) extends (() => A extends A2 ? 1 : 0) + ? 1 + : 0 + +interface Foo { + x : () => T +} + +declare const a: Foo; +declare const b: Foo; + +//Expected 0, Actual 1 +type ShouldBe0 = Equals; + +//// [conditionalEqualityTestingNullability.js] +"use strict"; +exports.__esModule = true; diff --git a/tests/baselines/reference/conditionalEqualityTestingNullability.symbols b/tests/baselines/reference/conditionalEqualityTestingNullability.symbols new file mode 100644 index 0000000000000..c1ede984fb804 --- /dev/null +++ b/tests/baselines/reference/conditionalEqualityTestingNullability.symbols @@ -0,0 +1,43 @@ +=== tests/cases/compiler/conditionalEqualityTestingNullability.ts === +export type Equals = +>Equals : Symbol(Equals, Decl(conditionalEqualityTestingNullability.ts, 0, 0)) +>A1 : Symbol(A1, Decl(conditionalEqualityTestingNullability.ts, 0, 19)) +>A2 : Symbol(A2, Decl(conditionalEqualityTestingNullability.ts, 0, 34)) + + (() => A extends A1 ? 1 : 0) extends (() => A extends A2 ? 1 : 0) +>A : Symbol(A, Decl(conditionalEqualityTestingNullability.ts, 1, 6)) +>A : Symbol(A, Decl(conditionalEqualityTestingNullability.ts, 1, 6)) +>A1 : Symbol(A1, Decl(conditionalEqualityTestingNullability.ts, 0, 19)) +>A : Symbol(A, Decl(conditionalEqualityTestingNullability.ts, 1, 46)) +>A : Symbol(A, Decl(conditionalEqualityTestingNullability.ts, 1, 46)) +>A2 : Symbol(A2, Decl(conditionalEqualityTestingNullability.ts, 0, 34)) + + ? 1 + : 0 + +interface Foo { +>Foo : Symbol(Foo, Decl(conditionalEqualityTestingNullability.ts, 3, 7)) +>T : Symbol(T, Decl(conditionalEqualityTestingNullability.ts, 5, 14)) + + x : () => T +>x : Symbol(Foo.x, Decl(conditionalEqualityTestingNullability.ts, 5, 18)) +>T : Symbol(T, Decl(conditionalEqualityTestingNullability.ts, 5, 14)) +} + +declare const a: Foo; +>a : Symbol(a, Decl(conditionalEqualityTestingNullability.ts, 9, 13)) +>Foo : Symbol(Foo, Decl(conditionalEqualityTestingNullability.ts, 3, 7)) +>Date : Symbol(Date, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.scripthost.d.ts, --, --)) + +declare const b: Foo; +>b : Symbol(b, Decl(conditionalEqualityTestingNullability.ts, 10, 13)) +>Foo : Symbol(Foo, Decl(conditionalEqualityTestingNullability.ts, 3, 7)) +>Date : Symbol(Date, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.scripthost.d.ts, --, --)) + +//Expected 0, Actual 1 +type ShouldBe0 = Equals; +>ShouldBe0 : Symbol(ShouldBe0, Decl(conditionalEqualityTestingNullability.ts, 10, 34)) +>Equals : Symbol(Equals, Decl(conditionalEqualityTestingNullability.ts, 0, 0)) +>a : Symbol(a, Decl(conditionalEqualityTestingNullability.ts, 9, 13)) +>b : Symbol(b, Decl(conditionalEqualityTestingNullability.ts, 10, 13)) + diff --git a/tests/baselines/reference/conditionalEqualityTestingNullability.types b/tests/baselines/reference/conditionalEqualityTestingNullability.types new file mode 100644 index 0000000000000..c99571b8fc168 --- /dev/null +++ b/tests/baselines/reference/conditionalEqualityTestingNullability.types @@ -0,0 +1,26 @@ +=== tests/cases/compiler/conditionalEqualityTestingNullability.ts === +export type Equals = +>Equals : Equals + + (() => A extends A1 ? 1 : 0) extends (() => A extends A2 ? 1 : 0) + ? 1 + : 0 + +interface Foo { + x : () => T +>x : () => T +} + +declare const a: Foo; +>a : Foo + +declare const b: Foo; +>b : Foo +>null : null + +//Expected 0, Actual 1 +type ShouldBe0 = Equals; +>ShouldBe0 : 0 +>a : Foo +>b : Foo + diff --git a/tests/baselines/reference/constEnumNamespaceReferenceCausesNoImport(isolatedmodules=false).js b/tests/baselines/reference/constEnumNamespaceReferenceCausesNoImport(isolatedmodules=false).js new file mode 100644 index 0000000000000..145cb9d37e835 --- /dev/null +++ b/tests/baselines/reference/constEnumNamespaceReferenceCausesNoImport(isolatedmodules=false).js @@ -0,0 +1,35 @@ +//// [tests/cases/compiler/constEnumNamespaceReferenceCausesNoImport.ts] //// + +//// [foo.ts] +export const enum ConstFooEnum { + Some, + Values, + Here +}; +export function fooFunc(): void { /* removed */ } +//// [index.ts] +import * as Foo from "./foo"; + +function check(x: Foo.ConstFooEnum): void { + switch (x) { + case Foo.ConstFooEnum.Some: + break; + } +} + +//// [foo.js] +"use strict"; +exports.__esModule = true; +exports.fooFunc = void 0; +; +function fooFunc() { } +exports.fooFunc = fooFunc; +//// [index.js] +"use strict"; +exports.__esModule = true; +function check(x) { + switch (x) { + case 0 /* Some */: + break; + } +} diff --git a/tests/baselines/reference/constEnumNamespaceReferenceCausesNoImport(isolatedmodules=false).symbols b/tests/baselines/reference/constEnumNamespaceReferenceCausesNoImport(isolatedmodules=false).symbols new file mode 100644 index 0000000000000..92a8501383484 --- /dev/null +++ b/tests/baselines/reference/constEnumNamespaceReferenceCausesNoImport(isolatedmodules=false).symbols @@ -0,0 +1,40 @@ +=== tests/cases/compiler/foo.ts === +export const enum ConstFooEnum { +>ConstFooEnum : Symbol(ConstFooEnum, Decl(foo.ts, 0, 0)) + + Some, +>Some : Symbol(ConstFooEnum.Some, Decl(foo.ts, 0, 32)) + + Values, +>Values : Symbol(ConstFooEnum.Values, Decl(foo.ts, 1, 9)) + + Here +>Here : Symbol(ConstFooEnum.Here, Decl(foo.ts, 2, 11)) + +}; +export function fooFunc(): void { /* removed */ } +>fooFunc : Symbol(fooFunc, Decl(foo.ts, 4, 2)) + +=== tests/cases/compiler/index.ts === +import * as Foo from "./foo"; +>Foo : Symbol(Foo, Decl(index.ts, 0, 6)) + +function check(x: Foo.ConstFooEnum): void { +>check : Symbol(check, Decl(index.ts, 0, 29)) +>x : Symbol(x, Decl(index.ts, 2, 15)) +>Foo : Symbol(Foo, Decl(index.ts, 0, 6)) +>ConstFooEnum : Symbol(Foo.ConstFooEnum, Decl(foo.ts, 0, 0)) + + switch (x) { +>x : Symbol(x, Decl(index.ts, 2, 15)) + + case Foo.ConstFooEnum.Some: +>Foo.ConstFooEnum.Some : Symbol(Foo.ConstFooEnum.Some, Decl(foo.ts, 0, 32)) +>Foo.ConstFooEnum : Symbol(Foo.ConstFooEnum, Decl(foo.ts, 0, 0)) +>Foo : Symbol(Foo, Decl(index.ts, 0, 6)) +>ConstFooEnum : Symbol(Foo.ConstFooEnum, Decl(foo.ts, 0, 0)) +>Some : Symbol(Foo.ConstFooEnum.Some, Decl(foo.ts, 0, 32)) + + break; + } +} diff --git a/tests/baselines/reference/constEnumNamespaceReferenceCausesNoImport(isolatedmodules=false).types b/tests/baselines/reference/constEnumNamespaceReferenceCausesNoImport(isolatedmodules=false).types new file mode 100644 index 0000000000000..dc9c6ea705b47 --- /dev/null +++ b/tests/baselines/reference/constEnumNamespaceReferenceCausesNoImport(isolatedmodules=false).types @@ -0,0 +1,39 @@ +=== tests/cases/compiler/foo.ts === +export const enum ConstFooEnum { +>ConstFooEnum : ConstFooEnum + + Some, +>Some : ConstFooEnum.Some + + Values, +>Values : ConstFooEnum.Values + + Here +>Here : ConstFooEnum.Here + +}; +export function fooFunc(): void { /* removed */ } +>fooFunc : () => void + +=== tests/cases/compiler/index.ts === +import * as Foo from "./foo"; +>Foo : typeof Foo + +function check(x: Foo.ConstFooEnum): void { +>check : (x: Foo.ConstFooEnum) => void +>x : Foo.ConstFooEnum +>Foo : any + + switch (x) { +>x : Foo.ConstFooEnum + + case Foo.ConstFooEnum.Some: +>Foo.ConstFooEnum.Some : Foo.ConstFooEnum.Some +>Foo.ConstFooEnum : typeof Foo.ConstFooEnum +>Foo : typeof Foo +>ConstFooEnum : typeof Foo.ConstFooEnum +>Some : Foo.ConstFooEnum.Some + + break; + } +} diff --git a/tests/baselines/reference/constEnumNamespaceReferenceCausesNoImport(isolatedmodules=true).js b/tests/baselines/reference/constEnumNamespaceReferenceCausesNoImport(isolatedmodules=true).js new file mode 100644 index 0000000000000..4f282ee36fb3b --- /dev/null +++ b/tests/baselines/reference/constEnumNamespaceReferenceCausesNoImport(isolatedmodules=true).js @@ -0,0 +1,42 @@ +//// [tests/cases/compiler/constEnumNamespaceReferenceCausesNoImport.ts] //// + +//// [foo.ts] +export const enum ConstFooEnum { + Some, + Values, + Here +}; +export function fooFunc(): void { /* removed */ } +//// [index.ts] +import * as Foo from "./foo"; + +function check(x: Foo.ConstFooEnum): void { + switch (x) { + case Foo.ConstFooEnum.Some: + break; + } +} + +//// [foo.js] +"use strict"; +exports.__esModule = true; +exports.fooFunc = exports.ConstFooEnum = void 0; +var ConstFooEnum; +(function (ConstFooEnum) { + ConstFooEnum[ConstFooEnum["Some"] = 0] = "Some"; + ConstFooEnum[ConstFooEnum["Values"] = 1] = "Values"; + ConstFooEnum[ConstFooEnum["Here"] = 2] = "Here"; +})(ConstFooEnum = exports.ConstFooEnum || (exports.ConstFooEnum = {})); +; +function fooFunc() { } +exports.fooFunc = fooFunc; +//// [index.js] +"use strict"; +exports.__esModule = true; +var Foo = require("./foo"); +function check(x) { + switch (x) { + case Foo.ConstFooEnum.Some: + break; + } +} diff --git a/tests/baselines/reference/constEnumNamespaceReferenceCausesNoImport(isolatedmodules=true).symbols b/tests/baselines/reference/constEnumNamespaceReferenceCausesNoImport(isolatedmodules=true).symbols new file mode 100644 index 0000000000000..92a8501383484 --- /dev/null +++ b/tests/baselines/reference/constEnumNamespaceReferenceCausesNoImport(isolatedmodules=true).symbols @@ -0,0 +1,40 @@ +=== tests/cases/compiler/foo.ts === +export const enum ConstFooEnum { +>ConstFooEnum : Symbol(ConstFooEnum, Decl(foo.ts, 0, 0)) + + Some, +>Some : Symbol(ConstFooEnum.Some, Decl(foo.ts, 0, 32)) + + Values, +>Values : Symbol(ConstFooEnum.Values, Decl(foo.ts, 1, 9)) + + Here +>Here : Symbol(ConstFooEnum.Here, Decl(foo.ts, 2, 11)) + +}; +export function fooFunc(): void { /* removed */ } +>fooFunc : Symbol(fooFunc, Decl(foo.ts, 4, 2)) + +=== tests/cases/compiler/index.ts === +import * as Foo from "./foo"; +>Foo : Symbol(Foo, Decl(index.ts, 0, 6)) + +function check(x: Foo.ConstFooEnum): void { +>check : Symbol(check, Decl(index.ts, 0, 29)) +>x : Symbol(x, Decl(index.ts, 2, 15)) +>Foo : Symbol(Foo, Decl(index.ts, 0, 6)) +>ConstFooEnum : Symbol(Foo.ConstFooEnum, Decl(foo.ts, 0, 0)) + + switch (x) { +>x : Symbol(x, Decl(index.ts, 2, 15)) + + case Foo.ConstFooEnum.Some: +>Foo.ConstFooEnum.Some : Symbol(Foo.ConstFooEnum.Some, Decl(foo.ts, 0, 32)) +>Foo.ConstFooEnum : Symbol(Foo.ConstFooEnum, Decl(foo.ts, 0, 0)) +>Foo : Symbol(Foo, Decl(index.ts, 0, 6)) +>ConstFooEnum : Symbol(Foo.ConstFooEnum, Decl(foo.ts, 0, 0)) +>Some : Symbol(Foo.ConstFooEnum.Some, Decl(foo.ts, 0, 32)) + + break; + } +} diff --git a/tests/baselines/reference/constEnumNamespaceReferenceCausesNoImport(isolatedmodules=true).types b/tests/baselines/reference/constEnumNamespaceReferenceCausesNoImport(isolatedmodules=true).types new file mode 100644 index 0000000000000..dc9c6ea705b47 --- /dev/null +++ b/tests/baselines/reference/constEnumNamespaceReferenceCausesNoImport(isolatedmodules=true).types @@ -0,0 +1,39 @@ +=== tests/cases/compiler/foo.ts === +export const enum ConstFooEnum { +>ConstFooEnum : ConstFooEnum + + Some, +>Some : ConstFooEnum.Some + + Values, +>Values : ConstFooEnum.Values + + Here +>Here : ConstFooEnum.Here + +}; +export function fooFunc(): void { /* removed */ } +>fooFunc : () => void + +=== tests/cases/compiler/index.ts === +import * as Foo from "./foo"; +>Foo : typeof Foo + +function check(x: Foo.ConstFooEnum): void { +>check : (x: Foo.ConstFooEnum) => void +>x : Foo.ConstFooEnum +>Foo : any + + switch (x) { +>x : Foo.ConstFooEnum + + case Foo.ConstFooEnum.Some: +>Foo.ConstFooEnum.Some : Foo.ConstFooEnum.Some +>Foo.ConstFooEnum : typeof Foo.ConstFooEnum +>Foo : typeof Foo +>ConstFooEnum : typeof Foo.ConstFooEnum +>Some : Foo.ConstFooEnum.Some + + break; + } +} diff --git a/tests/baselines/reference/constEnumNamespaceReferenceCausesNoImport2.js b/tests/baselines/reference/constEnumNamespaceReferenceCausesNoImport2.js new file mode 100644 index 0000000000000..02a802f20ea9a --- /dev/null +++ b/tests/baselines/reference/constEnumNamespaceReferenceCausesNoImport2.js @@ -0,0 +1,50 @@ +//// [tests/cases/compiler/constEnumNamespaceReferenceCausesNoImport2.ts] //// + +//// [foo.ts] +export module ConstEnumOnlyModule { + export const enum ConstFooEnum { + Some, + Values, + Here + } +} + +//// [reexport.ts] +import * as Foo from "./foo"; +export = Foo.ConstEnumOnlyModule; + +//// [index.ts] +import Foo = require("./reexport"); +function check(x: Foo.ConstFooEnum): void { + switch (x) { + case Foo.ConstFooEnum.Some: + break; + } +} + +//// [foo.js] +"use strict"; +exports.__esModule = true; +exports.ConstEnumOnlyModule = void 0; +var ConstEnumOnlyModule; +(function (ConstEnumOnlyModule) { + var ConstFooEnum; + (function (ConstFooEnum) { + ConstFooEnum[ConstFooEnum["Some"] = 0] = "Some"; + ConstFooEnum[ConstFooEnum["Values"] = 1] = "Values"; + ConstFooEnum[ConstFooEnum["Here"] = 2] = "Here"; + })(ConstFooEnum = ConstEnumOnlyModule.ConstFooEnum || (ConstEnumOnlyModule.ConstFooEnum = {})); +})(ConstEnumOnlyModule = exports.ConstEnumOnlyModule || (exports.ConstEnumOnlyModule = {})); +//// [reexport.js] +"use strict"; +var Foo = require("./foo"); +module.exports = Foo.ConstEnumOnlyModule; +//// [index.js] +"use strict"; +exports.__esModule = true; +function check(x) { + switch (x) { + case 0 /* Some */: + break; + } +} diff --git a/tests/baselines/reference/constructorFunctions2.symbols b/tests/baselines/reference/constructorFunctions2.symbols index d0b5b991cce73..35a24c915f3ec 100644 --- a/tests/baselines/reference/constructorFunctions2.symbols +++ b/tests/baselines/reference/constructorFunctions2.symbols @@ -56,7 +56,7 @@ function A() { this.id = 1; } >id : Symbol(A.id, Decl(other.js, 0, 14)) module.exports = A; ->module.exports : Symbol("tests/cases/conformance/salsa/other", Decl(other.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(other.js, 0, 0)) >module : Symbol(export=, Decl(other.js, 0, 29)) >exports : Symbol(export=, Decl(other.js, 0, 29)) >A : Symbol(A, Decl(other.js, 0, 0)) diff --git a/tests/baselines/reference/constructorFunctions2.types b/tests/baselines/reference/constructorFunctions2.types index 8b1f3711770aa..ad5b7b69a38b1 100644 --- a/tests/baselines/reference/constructorFunctions2.types +++ b/tests/baselines/reference/constructorFunctions2.types @@ -71,7 +71,7 @@ function A() { this.id = 1; } module.exports = A; >module.exports = A : typeof A >module.exports : typeof A ->module : { "\"tests/cases/conformance/salsa/other\"": typeof A; } +>module : { exports: typeof A; } >exports : typeof A >A : typeof A diff --git a/tests/baselines/reference/contextualTypedSpecialAssignment.symbols b/tests/baselines/reference/contextualTypedSpecialAssignment.symbols index c185640d89700..01047ffb7f559 100644 --- a/tests/baselines/reference/contextualTypedSpecialAssignment.symbols +++ b/tests/baselines/reference/contextualTypedSpecialAssignment.symbols @@ -103,7 +103,7 @@ module.exports.y = { >module.exports.y : Symbol(y, Decl(test.js, 45, 9)) >module.exports : Symbol(y, Decl(test.js, 45, 9)) >module : Symbol(module, Decl(test.js, 45, 9)) ->exports : Symbol("tests/cases/conformance/salsa/test", Decl(test.js, 0, 0)) +>exports : Symbol(module.exports, Decl(test.js, 0, 0)) >y : Symbol(y, Decl(test.js, 45, 9)) status: "done", @@ -115,9 +115,9 @@ module.exports.y = { } module.exports.y >module.exports.y : Symbol(y, Decl(test.js, 45, 9)) ->module.exports : Symbol("tests/cases/conformance/salsa/test", Decl(test.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(test.js, 0, 0)) >module : Symbol(module, Decl(test.js, 45, 9)) ->exports : Symbol("tests/cases/conformance/salsa/test", Decl(test.js, 0, 0)) +>exports : Symbol(module.exports, Decl(test.js, 0, 0)) >y : Symbol(y, Decl(test.js, 45, 9)) // prototype-property assignment @@ -165,7 +165,7 @@ F.prototype = { // module.exports assignment /** @type {{ status: 'done', m(n: number): void }} */ module.exports = { ->module.exports : Symbol("tests/cases/conformance/salsa/mod", Decl(mod.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod.js, 0, 0)) >module : Symbol(export=, Decl(mod.js, 0, 0)) >exports : Symbol(export=, Decl(mod.js, 0, 0)) diff --git a/tests/baselines/reference/contextualTypedSpecialAssignment.types b/tests/baselines/reference/contextualTypedSpecialAssignment.types index fe6711a330710..494532a5eaee5 100644 --- a/tests/baselines/reference/contextualTypedSpecialAssignment.types +++ b/tests/baselines/reference/contextualTypedSpecialAssignment.types @@ -118,9 +118,9 @@ exports.x module.exports.y = { >module.exports.y = { status: "done", m(n) { }} : { status: "done"; m(n: number): void; } >module.exports.y : DoneStatus ->module.exports : typeof import("tests/cases/conformance/salsa/test") ->module : { "\"tests/cases/conformance/salsa/test\"": typeof import("tests/cases/conformance/salsa/test"); } ->exports : typeof import("tests/cases/conformance/salsa/test") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >y : DoneStatus >{ status: "done", m(n) { }} : { status: "done"; m(n: number): void; } @@ -134,9 +134,9 @@ module.exports.y = { } module.exports.y >module.exports.y : DoneStatus ->module.exports : typeof import("tests/cases/conformance/salsa/test") ->module : { "\"tests/cases/conformance/salsa/test\"": typeof import("tests/cases/conformance/salsa/test"); } ->exports : typeof import("tests/cases/conformance/salsa/test") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >y : DoneStatus // prototype-property assignment @@ -192,7 +192,7 @@ F.prototype = { module.exports = { >module.exports = { status: "done", m(n) { }} : { status: 'done'; m(n: number): void; } >module.exports : { status: "done"; m(n: number): void; } ->module : { "\"tests/cases/conformance/salsa/mod\"": { status: "done"; m(n: number): void; }; } +>module : { exports: { status: "done"; m(n: number): void; }; } >exports : { status: "done"; m(n: number): void; } >{ status: "done", m(n) { }} : { status: "done"; m(n: number): void; } diff --git a/tests/baselines/reference/controlFlowIfStatement.js b/tests/baselines/reference/controlFlowIfStatement.js index e40b831552f3d..89b1bc8041563 100644 --- a/tests/baselines/reference/controlFlowIfStatement.js +++ b/tests/baselines/reference/controlFlowIfStatement.js @@ -51,6 +51,15 @@ function d(data: string | T): never { return data; } } + +interface I { + p: T; +} +function e(x: I<"A" | "B">) { + if (x.p === "A") { + let a: "A" = (null as unknown as typeof x.p) + } +} //// [controlFlowIfStatement.js] @@ -104,3 +113,8 @@ function d(data) { return data; } } +function e(x) { + if (x.p === "A") { + var a_1 = null; + } +} diff --git a/tests/baselines/reference/controlFlowIfStatement.symbols b/tests/baselines/reference/controlFlowIfStatement.symbols index 01d62d4d178c8..4f95e9aea871b 100644 --- a/tests/baselines/reference/controlFlowIfStatement.symbols +++ b/tests/baselines/reference/controlFlowIfStatement.symbols @@ -110,3 +110,29 @@ function d(data: string | T): never { } } +interface I { +>I : Symbol(I, Decl(controlFlowIfStatement.ts, 51, 1)) +>T : Symbol(T, Decl(controlFlowIfStatement.ts, 53, 12)) + + p: T; +>p : Symbol(I.p, Decl(controlFlowIfStatement.ts, 53, 16)) +>T : Symbol(T, Decl(controlFlowIfStatement.ts, 53, 12)) +} +function e(x: I<"A" | "B">) { +>e : Symbol(e, Decl(controlFlowIfStatement.ts, 55, 1)) +>x : Symbol(x, Decl(controlFlowIfStatement.ts, 56, 11)) +>I : Symbol(I, Decl(controlFlowIfStatement.ts, 51, 1)) + + if (x.p === "A") { +>x.p : Symbol(I.p, Decl(controlFlowIfStatement.ts, 53, 16)) +>x : Symbol(x, Decl(controlFlowIfStatement.ts, 56, 11)) +>p : Symbol(I.p, Decl(controlFlowIfStatement.ts, 53, 16)) + + let a: "A" = (null as unknown as typeof x.p) +>a : Symbol(a, Decl(controlFlowIfStatement.ts, 58, 11)) +>x.p : Symbol(I.p, Decl(controlFlowIfStatement.ts, 53, 16)) +>x : Symbol(x, Decl(controlFlowIfStatement.ts, 56, 11)) +>p : Symbol(I.p, Decl(controlFlowIfStatement.ts, 53, 16)) + } +} + diff --git a/tests/baselines/reference/controlFlowIfStatement.types b/tests/baselines/reference/controlFlowIfStatement.types index 85b040825049d..d549ef6f0a2bb 100644 --- a/tests/baselines/reference/controlFlowIfStatement.types +++ b/tests/baselines/reference/controlFlowIfStatement.types @@ -132,3 +132,30 @@ function d(data: string | T): never { } } +interface I { + p: T; +>p : T +} +function e(x: I<"A" | "B">) { +>e : (x: I<"A" | "B">) => void +>x : I<"A" | "B"> + + if (x.p === "A") { +>x.p === "A" : boolean +>x.p : "A" | "B" +>x : I<"A" | "B"> +>p : "A" | "B" +>"A" : "A" + + let a: "A" = (null as unknown as typeof x.p) +>a : "A" +>(null as unknown as typeof x.p) : "A" +>null as unknown as typeof x.p : "A" +>null as unknown : unknown +>null : null +>x.p : "A" +>x : I<"A" | "B"> +>p : "A" + } +} + diff --git a/tests/baselines/reference/controlFlowOptionalChain.errors.txt b/tests/baselines/reference/controlFlowOptionalChain.errors.txt index df3c5a5553419..1dfe8e9e328a0 100644 --- a/tests/baselines/reference/controlFlowOptionalChain.errors.txt +++ b/tests/baselines/reference/controlFlowOptionalChain.errors.txt @@ -18,7 +18,6 @@ tests/cases/conformance/controlFlow/controlFlowOptionalChain.ts(112,1): error TS tests/cases/conformance/controlFlow/controlFlowOptionalChain.ts(112,1): error TS2532: Object is possibly 'undefined'. tests/cases/conformance/controlFlow/controlFlowOptionalChain.ts(130,5): error TS2532: Object is possibly 'undefined'. tests/cases/conformance/controlFlow/controlFlowOptionalChain.ts(134,1): error TS2532: Object is possibly 'undefined'. -tests/cases/conformance/controlFlow/controlFlowOptionalChain.ts(153,9): error TS2775: Assertions require every name in the call target to be declared with an explicit type annotation. tests/cases/conformance/controlFlow/controlFlowOptionalChain.ts(208,9): error TS2532: Object is possibly 'undefined'. tests/cases/conformance/controlFlow/controlFlowOptionalChain.ts(211,9): error TS2532: Object is possibly 'undefined'. tests/cases/conformance/controlFlow/controlFlowOptionalChain.ts(214,9): error TS2532: Object is possibly 'undefined'. @@ -62,7 +61,7 @@ tests/cases/conformance/controlFlow/controlFlowOptionalChain.ts(518,13): error T tests/cases/conformance/controlFlow/controlFlowOptionalChain.ts(567,21): error TS2532: Object is possibly 'undefined'. -==== tests/cases/conformance/controlFlow/controlFlowOptionalChain.ts (62 errors) ==== +==== tests/cases/conformance/controlFlow/controlFlowOptionalChain.ts (61 errors) ==== // assignments in shortcutting chain declare const o: undefined | { [key: string]: any; @@ -256,8 +255,6 @@ tests/cases/conformance/controlFlow/controlFlowOptionalChain.ts(567,21): error T if (!!true) { isDefined(maybeIsString); maybeIsString?.(x); - ~~~~~~~~~~~~~ -!!! error TS2775: Assertions require every name in the call target to be declared with an explicit type annotation. x; } if (!!true) { diff --git a/tests/baselines/reference/controlFlowOptionalChain.symbols b/tests/baselines/reference/controlFlowOptionalChain.symbols index 5354a1ef95bd3..be03f36c67da6 100644 --- a/tests/baselines/reference/controlFlowOptionalChain.symbols +++ b/tests/baselines/reference/controlFlowOptionalChain.symbols @@ -200,14 +200,14 @@ else { >o3 : Symbol(o3, Decl(controlFlowOptionalChain.ts, 58, 13)) o3?.x; ->o3?.x : Symbol(x, Decl(controlFlowOptionalChain.ts, 58, 19), Decl(controlFlowOptionalChain.ts, 58, 41)) +>o3?.x : Symbol(x, Decl(controlFlowOptionalChain.ts, 58, 41)) >o3 : Symbol(o3, Decl(controlFlowOptionalChain.ts, 58, 13)) ->x : Symbol(x, Decl(controlFlowOptionalChain.ts, 58, 19), Decl(controlFlowOptionalChain.ts, 58, 41)) +>x : Symbol(x, Decl(controlFlowOptionalChain.ts, 58, 41)) o3.x; ->o3.x : Symbol(x, Decl(controlFlowOptionalChain.ts, 58, 19), Decl(controlFlowOptionalChain.ts, 58, 41)) +>o3.x : Symbol(x, Decl(controlFlowOptionalChain.ts, 58, 41)) >o3 : Symbol(o3, Decl(controlFlowOptionalChain.ts, 58, 13)) ->x : Symbol(x, Decl(controlFlowOptionalChain.ts, 58, 19), Decl(controlFlowOptionalChain.ts, 58, 41)) +>x : Symbol(x, Decl(controlFlowOptionalChain.ts, 58, 41)) } o3; >o3 : Symbol(o3, Decl(controlFlowOptionalChain.ts, 58, 13)) diff --git a/tests/baselines/reference/controlFlowOptionalChain.types b/tests/baselines/reference/controlFlowOptionalChain.types index 9b22d5149d96c..78be0e6f295a6 100644 --- a/tests/baselines/reference/controlFlowOptionalChain.types +++ b/tests/baselines/reference/controlFlowOptionalChain.types @@ -223,16 +223,16 @@ if (o3?.x === 1) { } else { o3; ->o3 : { x: 1; y: string; } | { x: 2; y: number; } | undefined +>o3 : { x: 2; y: number; } | undefined o3?.x; >o3?.x : 2 | undefined ->o3 : { x: 1; y: string; } | { x: 2; y: number; } | undefined +>o3 : { x: 2; y: number; } | undefined >x : 2 | undefined o3.x; >o3.x : 2 ->o3 : { x: 1; y: string; } | { x: 2; y: number; } | undefined +>o3 : { x: 2; y: number; } | undefined >x : 2 } o3; @@ -595,7 +595,7 @@ function f01(x: unknown) { >true : true maybeIsString?.(x); ->maybeIsString?.(x) : void | undefined +>maybeIsString?.(x) : void >maybeIsString : ((value: unknown) => asserts value is string) | undefined >x : unknown diff --git a/tests/baselines/reference/controlFlowOptionalChain2.js b/tests/baselines/reference/controlFlowOptionalChain2.js new file mode 100644 index 0000000000000..a7cf147854bf4 --- /dev/null +++ b/tests/baselines/reference/controlFlowOptionalChain2.js @@ -0,0 +1,188 @@ +//// [controlFlowOptionalChain2.ts] +type A = { + type: 'A'; + name: string; +} + +type B = { + type: 'B'; +} + +function funcTwo(arg: A | B | undefined) { + if (arg?.type === 'B') { + arg; // `B` + return; + } + + arg; + arg?.name; +} + +function funcThree(arg: A | B | null) { + if (arg?.type === 'B') { + arg; // `B` + return; + } + + arg; + arg?.name; +} + +type U = { kind: undefined, u: 'u' } +type N = { kind: null, n: 'n' } +type X = { kind: 'X', x: 'x' } + +function f1(x: X | U | undefined) { + if (x?.kind === undefined) { + x; // U | undefined + } + else { + x; // X + } +} + +function f2(x: X | N | undefined) { + if (x?.kind === undefined) { + x; // undefined + } + else { + x; // X | N + } +} + +function f3(x: X | U | null) { + if (x?.kind === undefined) { + x; // U | null + } + else { + x; // X + } +} + +function f4(x: X | N | null) { + if (x?.kind === undefined) { + x; // null + } + else { + x; // X | N + } +} + +function f5(x: X | U | undefined) { + if (x?.kind === null) { + x; // never + } + else { + x; // X | U | undefined + } +} + +function f6(x: X | N | undefined) { + if (x?.kind === null) { + x; // N + } + else { + x; // X | undefined + } +} + +function f7(x: X | U | null) { + if (x?.kind === null) { + x; // never + } + else { + x; // X | U | null + } +} + +function f8(x: X | N | null) { + if (x?.kind === null) { + x; // N + } + else { + x; // X | null + } +} + + +//// [controlFlowOptionalChain2.js] +function funcTwo(arg) { + if ((arg === null || arg === void 0 ? void 0 : arg.type) === 'B') { + arg; // `B` + return; + } + arg; + arg === null || arg === void 0 ? void 0 : arg.name; +} +function funcThree(arg) { + if ((arg === null || arg === void 0 ? void 0 : arg.type) === 'B') { + arg; // `B` + return; + } + arg; + arg === null || arg === void 0 ? void 0 : arg.name; +} +function f1(x) { + if ((x === null || x === void 0 ? void 0 : x.kind) === undefined) { + x; // U | undefined + } + else { + x; // X + } +} +function f2(x) { + if ((x === null || x === void 0 ? void 0 : x.kind) === undefined) { + x; // undefined + } + else { + x; // X | N + } +} +function f3(x) { + if ((x === null || x === void 0 ? void 0 : x.kind) === undefined) { + x; // U | null + } + else { + x; // X + } +} +function f4(x) { + if ((x === null || x === void 0 ? void 0 : x.kind) === undefined) { + x; // null + } + else { + x; // X | N + } +} +function f5(x) { + if ((x === null || x === void 0 ? void 0 : x.kind) === null) { + x; // never + } + else { + x; // X | U | undefined + } +} +function f6(x) { + if ((x === null || x === void 0 ? void 0 : x.kind) === null) { + x; // N + } + else { + x; // X | undefined + } +} +function f7(x) { + if ((x === null || x === void 0 ? void 0 : x.kind) === null) { + x; // never + } + else { + x; // X | U | null + } +} +function f8(x) { + if ((x === null || x === void 0 ? void 0 : x.kind) === null) { + x; // N + } + else { + x; // X | null + } +} diff --git a/tests/baselines/reference/controlFlowOptionalChain2.symbols b/tests/baselines/reference/controlFlowOptionalChain2.symbols new file mode 100644 index 0000000000000..e4b2184a8895e --- /dev/null +++ b/tests/baselines/reference/controlFlowOptionalChain2.symbols @@ -0,0 +1,249 @@ +=== tests/cases/conformance/controlFlow/controlFlowOptionalChain2.ts === +type A = { +>A : Symbol(A, Decl(controlFlowOptionalChain2.ts, 0, 0)) + + type: 'A'; +>type : Symbol(type, Decl(controlFlowOptionalChain2.ts, 0, 10)) + + name: string; +>name : Symbol(name, Decl(controlFlowOptionalChain2.ts, 1, 12)) +} + +type B = { +>B : Symbol(B, Decl(controlFlowOptionalChain2.ts, 3, 1)) + + type: 'B'; +>type : Symbol(type, Decl(controlFlowOptionalChain2.ts, 5, 10)) +} + +function funcTwo(arg: A | B | undefined) { +>funcTwo : Symbol(funcTwo, Decl(controlFlowOptionalChain2.ts, 7, 1)) +>arg : Symbol(arg, Decl(controlFlowOptionalChain2.ts, 9, 17)) +>A : Symbol(A, Decl(controlFlowOptionalChain2.ts, 0, 0)) +>B : Symbol(B, Decl(controlFlowOptionalChain2.ts, 3, 1)) + + if (arg?.type === 'B') { +>arg?.type : Symbol(type, Decl(controlFlowOptionalChain2.ts, 0, 10), Decl(controlFlowOptionalChain2.ts, 5, 10)) +>arg : Symbol(arg, Decl(controlFlowOptionalChain2.ts, 9, 17)) +>type : Symbol(type, Decl(controlFlowOptionalChain2.ts, 0, 10), Decl(controlFlowOptionalChain2.ts, 5, 10)) + + arg; // `B` +>arg : Symbol(arg, Decl(controlFlowOptionalChain2.ts, 9, 17)) + + return; + } + + arg; +>arg : Symbol(arg, Decl(controlFlowOptionalChain2.ts, 9, 17)) + + arg?.name; +>arg?.name : Symbol(name, Decl(controlFlowOptionalChain2.ts, 1, 12)) +>arg : Symbol(arg, Decl(controlFlowOptionalChain2.ts, 9, 17)) +>name : Symbol(name, Decl(controlFlowOptionalChain2.ts, 1, 12)) +} + +function funcThree(arg: A | B | null) { +>funcThree : Symbol(funcThree, Decl(controlFlowOptionalChain2.ts, 17, 1)) +>arg : Symbol(arg, Decl(controlFlowOptionalChain2.ts, 19, 19)) +>A : Symbol(A, Decl(controlFlowOptionalChain2.ts, 0, 0)) +>B : Symbol(B, Decl(controlFlowOptionalChain2.ts, 3, 1)) + + if (arg?.type === 'B') { +>arg?.type : Symbol(type, Decl(controlFlowOptionalChain2.ts, 0, 10), Decl(controlFlowOptionalChain2.ts, 5, 10)) +>arg : Symbol(arg, Decl(controlFlowOptionalChain2.ts, 19, 19)) +>type : Symbol(type, Decl(controlFlowOptionalChain2.ts, 0, 10), Decl(controlFlowOptionalChain2.ts, 5, 10)) + + arg; // `B` +>arg : Symbol(arg, Decl(controlFlowOptionalChain2.ts, 19, 19)) + + return; + } + + arg; +>arg : Symbol(arg, Decl(controlFlowOptionalChain2.ts, 19, 19)) + + arg?.name; +>arg?.name : Symbol(name, Decl(controlFlowOptionalChain2.ts, 1, 12)) +>arg : Symbol(arg, Decl(controlFlowOptionalChain2.ts, 19, 19)) +>name : Symbol(name, Decl(controlFlowOptionalChain2.ts, 1, 12)) +} + +type U = { kind: undefined, u: 'u' } +>U : Symbol(U, Decl(controlFlowOptionalChain2.ts, 27, 1)) +>kind : Symbol(kind, Decl(controlFlowOptionalChain2.ts, 29, 10)) +>u : Symbol(u, Decl(controlFlowOptionalChain2.ts, 29, 27)) + +type N = { kind: null, n: 'n' } +>N : Symbol(N, Decl(controlFlowOptionalChain2.ts, 29, 36)) +>kind : Symbol(kind, Decl(controlFlowOptionalChain2.ts, 30, 10)) +>n : Symbol(n, Decl(controlFlowOptionalChain2.ts, 30, 22)) + +type X = { kind: 'X', x: 'x' } +>X : Symbol(X, Decl(controlFlowOptionalChain2.ts, 30, 31)) +>kind : Symbol(kind, Decl(controlFlowOptionalChain2.ts, 31, 10)) +>x : Symbol(x, Decl(controlFlowOptionalChain2.ts, 31, 21)) + +function f1(x: X | U | undefined) { +>f1 : Symbol(f1, Decl(controlFlowOptionalChain2.ts, 31, 30)) +>x : Symbol(x, Decl(controlFlowOptionalChain2.ts, 33, 12)) +>X : Symbol(X, Decl(controlFlowOptionalChain2.ts, 30, 31)) +>U : Symbol(U, Decl(controlFlowOptionalChain2.ts, 27, 1)) + + if (x?.kind === undefined) { +>x?.kind : Symbol(kind, Decl(controlFlowOptionalChain2.ts, 29, 10), Decl(controlFlowOptionalChain2.ts, 31, 10)) +>x : Symbol(x, Decl(controlFlowOptionalChain2.ts, 33, 12)) +>kind : Symbol(kind, Decl(controlFlowOptionalChain2.ts, 29, 10), Decl(controlFlowOptionalChain2.ts, 31, 10)) +>undefined : Symbol(undefined) + + x; // U | undefined +>x : Symbol(x, Decl(controlFlowOptionalChain2.ts, 33, 12)) + } + else { + x; // X +>x : Symbol(x, Decl(controlFlowOptionalChain2.ts, 33, 12)) + } +} + +function f2(x: X | N | undefined) { +>f2 : Symbol(f2, Decl(controlFlowOptionalChain2.ts, 40, 1)) +>x : Symbol(x, Decl(controlFlowOptionalChain2.ts, 42, 12)) +>X : Symbol(X, Decl(controlFlowOptionalChain2.ts, 30, 31)) +>N : Symbol(N, Decl(controlFlowOptionalChain2.ts, 29, 36)) + + if (x?.kind === undefined) { +>x?.kind : Symbol(kind, Decl(controlFlowOptionalChain2.ts, 30, 10), Decl(controlFlowOptionalChain2.ts, 31, 10)) +>x : Symbol(x, Decl(controlFlowOptionalChain2.ts, 42, 12)) +>kind : Symbol(kind, Decl(controlFlowOptionalChain2.ts, 30, 10), Decl(controlFlowOptionalChain2.ts, 31, 10)) +>undefined : Symbol(undefined) + + x; // undefined +>x : Symbol(x, Decl(controlFlowOptionalChain2.ts, 42, 12)) + } + else { + x; // X | N +>x : Symbol(x, Decl(controlFlowOptionalChain2.ts, 42, 12)) + } +} + +function f3(x: X | U | null) { +>f3 : Symbol(f3, Decl(controlFlowOptionalChain2.ts, 49, 1)) +>x : Symbol(x, Decl(controlFlowOptionalChain2.ts, 51, 12)) +>X : Symbol(X, Decl(controlFlowOptionalChain2.ts, 30, 31)) +>U : Symbol(U, Decl(controlFlowOptionalChain2.ts, 27, 1)) + + if (x?.kind === undefined) { +>x?.kind : Symbol(kind, Decl(controlFlowOptionalChain2.ts, 29, 10), Decl(controlFlowOptionalChain2.ts, 31, 10)) +>x : Symbol(x, Decl(controlFlowOptionalChain2.ts, 51, 12)) +>kind : Symbol(kind, Decl(controlFlowOptionalChain2.ts, 29, 10), Decl(controlFlowOptionalChain2.ts, 31, 10)) +>undefined : Symbol(undefined) + + x; // U | null +>x : Symbol(x, Decl(controlFlowOptionalChain2.ts, 51, 12)) + } + else { + x; // X +>x : Symbol(x, Decl(controlFlowOptionalChain2.ts, 51, 12)) + } +} + +function f4(x: X | N | null) { +>f4 : Symbol(f4, Decl(controlFlowOptionalChain2.ts, 58, 1)) +>x : Symbol(x, Decl(controlFlowOptionalChain2.ts, 60, 12)) +>X : Symbol(X, Decl(controlFlowOptionalChain2.ts, 30, 31)) +>N : Symbol(N, Decl(controlFlowOptionalChain2.ts, 29, 36)) + + if (x?.kind === undefined) { +>x?.kind : Symbol(kind, Decl(controlFlowOptionalChain2.ts, 30, 10), Decl(controlFlowOptionalChain2.ts, 31, 10)) +>x : Symbol(x, Decl(controlFlowOptionalChain2.ts, 60, 12)) +>kind : Symbol(kind, Decl(controlFlowOptionalChain2.ts, 30, 10), Decl(controlFlowOptionalChain2.ts, 31, 10)) +>undefined : Symbol(undefined) + + x; // null +>x : Symbol(x, Decl(controlFlowOptionalChain2.ts, 60, 12)) + } + else { + x; // X | N +>x : Symbol(x, Decl(controlFlowOptionalChain2.ts, 60, 12)) + } +} + +function f5(x: X | U | undefined) { +>f5 : Symbol(f5, Decl(controlFlowOptionalChain2.ts, 67, 1)) +>x : Symbol(x, Decl(controlFlowOptionalChain2.ts, 69, 12)) +>X : Symbol(X, Decl(controlFlowOptionalChain2.ts, 30, 31)) +>U : Symbol(U, Decl(controlFlowOptionalChain2.ts, 27, 1)) + + if (x?.kind === null) { +>x?.kind : Symbol(kind, Decl(controlFlowOptionalChain2.ts, 29, 10), Decl(controlFlowOptionalChain2.ts, 31, 10)) +>x : Symbol(x, Decl(controlFlowOptionalChain2.ts, 69, 12)) +>kind : Symbol(kind, Decl(controlFlowOptionalChain2.ts, 29, 10), Decl(controlFlowOptionalChain2.ts, 31, 10)) + + x; // never +>x : Symbol(x, Decl(controlFlowOptionalChain2.ts, 69, 12)) + } + else { + x; // X | U | undefined +>x : Symbol(x, Decl(controlFlowOptionalChain2.ts, 69, 12)) + } +} + +function f6(x: X | N | undefined) { +>f6 : Symbol(f6, Decl(controlFlowOptionalChain2.ts, 76, 1)) +>x : Symbol(x, Decl(controlFlowOptionalChain2.ts, 78, 12)) +>X : Symbol(X, Decl(controlFlowOptionalChain2.ts, 30, 31)) +>N : Symbol(N, Decl(controlFlowOptionalChain2.ts, 29, 36)) + + if (x?.kind === null) { +>x?.kind : Symbol(kind, Decl(controlFlowOptionalChain2.ts, 30, 10), Decl(controlFlowOptionalChain2.ts, 31, 10)) +>x : Symbol(x, Decl(controlFlowOptionalChain2.ts, 78, 12)) +>kind : Symbol(kind, Decl(controlFlowOptionalChain2.ts, 30, 10), Decl(controlFlowOptionalChain2.ts, 31, 10)) + + x; // N +>x : Symbol(x, Decl(controlFlowOptionalChain2.ts, 78, 12)) + } + else { + x; // X | undefined +>x : Symbol(x, Decl(controlFlowOptionalChain2.ts, 78, 12)) + } +} + +function f7(x: X | U | null) { +>f7 : Symbol(f7, Decl(controlFlowOptionalChain2.ts, 85, 1)) +>x : Symbol(x, Decl(controlFlowOptionalChain2.ts, 87, 12)) +>X : Symbol(X, Decl(controlFlowOptionalChain2.ts, 30, 31)) +>U : Symbol(U, Decl(controlFlowOptionalChain2.ts, 27, 1)) + + if (x?.kind === null) { +>x?.kind : Symbol(kind, Decl(controlFlowOptionalChain2.ts, 29, 10), Decl(controlFlowOptionalChain2.ts, 31, 10)) +>x : Symbol(x, Decl(controlFlowOptionalChain2.ts, 87, 12)) +>kind : Symbol(kind, Decl(controlFlowOptionalChain2.ts, 29, 10), Decl(controlFlowOptionalChain2.ts, 31, 10)) + + x; // never +>x : Symbol(x, Decl(controlFlowOptionalChain2.ts, 87, 12)) + } + else { + x; // X | U | null +>x : Symbol(x, Decl(controlFlowOptionalChain2.ts, 87, 12)) + } +} + +function f8(x: X | N | null) { +>f8 : Symbol(f8, Decl(controlFlowOptionalChain2.ts, 94, 1)) +>x : Symbol(x, Decl(controlFlowOptionalChain2.ts, 96, 12)) +>X : Symbol(X, Decl(controlFlowOptionalChain2.ts, 30, 31)) +>N : Symbol(N, Decl(controlFlowOptionalChain2.ts, 29, 36)) + + if (x?.kind === null) { +>x?.kind : Symbol(kind, Decl(controlFlowOptionalChain2.ts, 30, 10), Decl(controlFlowOptionalChain2.ts, 31, 10)) +>x : Symbol(x, Decl(controlFlowOptionalChain2.ts, 96, 12)) +>kind : Symbol(kind, Decl(controlFlowOptionalChain2.ts, 30, 10), Decl(controlFlowOptionalChain2.ts, 31, 10)) + + x; // N +>x : Symbol(x, Decl(controlFlowOptionalChain2.ts, 96, 12)) + } + else { + x; // X | null +>x : Symbol(x, Decl(controlFlowOptionalChain2.ts, 96, 12)) + } +} + diff --git a/tests/baselines/reference/controlFlowOptionalChain2.types b/tests/baselines/reference/controlFlowOptionalChain2.types new file mode 100644 index 0000000000000..f3b2d1cd573d9 --- /dev/null +++ b/tests/baselines/reference/controlFlowOptionalChain2.types @@ -0,0 +1,251 @@ +=== tests/cases/conformance/controlFlow/controlFlowOptionalChain2.ts === +type A = { +>A : A + + type: 'A'; +>type : "A" + + name: string; +>name : string +} + +type B = { +>B : B + + type: 'B'; +>type : "B" +} + +function funcTwo(arg: A | B | undefined) { +>funcTwo : (arg: A | B | undefined) => void +>arg : A | B | undefined + + if (arg?.type === 'B') { +>arg?.type === 'B' : boolean +>arg?.type : "A" | "B" | undefined +>arg : A | B | undefined +>type : "A" | "B" | undefined +>'B' : "B" + + arg; // `B` +>arg : B + + return; + } + + arg; +>arg : A | undefined + + arg?.name; +>arg?.name : string | undefined +>arg : A | undefined +>name : string | undefined +} + +function funcThree(arg: A | B | null) { +>funcThree : (arg: A | B | null) => void +>arg : A | B | null +>null : null + + if (arg?.type === 'B') { +>arg?.type === 'B' : boolean +>arg?.type : "A" | "B" | undefined +>arg : A | B | null +>type : "A" | "B" | undefined +>'B' : "B" + + arg; // `B` +>arg : B + + return; + } + + arg; +>arg : A | null + + arg?.name; +>arg?.name : string | undefined +>arg : A | null +>name : string | undefined +} + +type U = { kind: undefined, u: 'u' } +>U : U +>kind : undefined +>u : "u" + +type N = { kind: null, n: 'n' } +>N : N +>kind : null +>null : null +>n : "n" + +type X = { kind: 'X', x: 'x' } +>X : X +>kind : "X" +>x : "x" + +function f1(x: X | U | undefined) { +>f1 : (x: X | U | undefined) => void +>x : U | X | undefined + + if (x?.kind === undefined) { +>x?.kind === undefined : boolean +>x?.kind : "X" | undefined +>x : U | X | undefined +>kind : "X" | undefined +>undefined : undefined + + x; // U | undefined +>x : U | undefined + } + else { + x; // X +>x : X + } +} + +function f2(x: X | N | undefined) { +>f2 : (x: X | N | undefined) => void +>x : N | X | undefined + + if (x?.kind === undefined) { +>x?.kind === undefined : boolean +>x?.kind : "X" | null | undefined +>x : N | X | undefined +>kind : "X" | null | undefined +>undefined : undefined + + x; // undefined +>x : undefined + } + else { + x; // X | N +>x : N | X + } +} + +function f3(x: X | U | null) { +>f3 : (x: X | U | null) => void +>x : U | X | null +>null : null + + if (x?.kind === undefined) { +>x?.kind === undefined : boolean +>x?.kind : "X" | undefined +>x : U | X | null +>kind : "X" | undefined +>undefined : undefined + + x; // U | null +>x : U | null + } + else { + x; // X +>x : X + } +} + +function f4(x: X | N | null) { +>f4 : (x: X | N | null) => void +>x : N | X | null +>null : null + + if (x?.kind === undefined) { +>x?.kind === undefined : boolean +>x?.kind : "X" | null | undefined +>x : N | X | null +>kind : "X" | null | undefined +>undefined : undefined + + x; // null +>x : null + } + else { + x; // X | N +>x : N | X + } +} + +function f5(x: X | U | undefined) { +>f5 : (x: X | U | undefined) => void +>x : U | X | undefined + + if (x?.kind === null) { +>x?.kind === null : boolean +>x?.kind : "X" | undefined +>x : U | X | undefined +>kind : "X" | undefined +>null : null + + x; // never +>x : never + } + else { + x; // X | U | undefined +>x : U | X | undefined + } +} + +function f6(x: X | N | undefined) { +>f6 : (x: X | N | undefined) => void +>x : N | X | undefined + + if (x?.kind === null) { +>x?.kind === null : boolean +>x?.kind : "X" | null | undefined +>x : N | X | undefined +>kind : "X" | null | undefined +>null : null + + x; // N +>x : N + } + else { + x; // X | undefined +>x : X | undefined + } +} + +function f7(x: X | U | null) { +>f7 : (x: X | U | null) => void +>x : U | X | null +>null : null + + if (x?.kind === null) { +>x?.kind === null : boolean +>x?.kind : "X" | undefined +>x : U | X | null +>kind : "X" | undefined +>null : null + + x; // never +>x : never + } + else { + x; // X | U | null +>x : U | X | null + } +} + +function f8(x: X | N | null) { +>f8 : (x: X | N | null) => void +>x : N | X | null +>null : null + + if (x?.kind === null) { +>x?.kind === null : boolean +>x?.kind : "X" | null | undefined +>x : N | X | null +>kind : "X" | null | undefined +>null : null + + x; // N +>x : N + } + else { + x; // X | null +>x : X | null + } +} + diff --git a/tests/baselines/reference/controlFlowSuperPropertyAccess.types b/tests/baselines/reference/controlFlowSuperPropertyAccess.types index 87e7b3f00d0bc..82ba6ccd34e4a 100644 --- a/tests/baselines/reference/controlFlowSuperPropertyAccess.types +++ b/tests/baselines/reference/controlFlowSuperPropertyAccess.types @@ -13,7 +13,7 @@ class C extends B { >body : () => void super.m && super.m(); ->super.m && super.m() : void | undefined +>super.m && super.m() : void >super.m : (() => void) | undefined >super : B >m : (() => void) | undefined diff --git a/tests/baselines/reference/convertToAsyncFunction/convertToAsyncFunction_ResRef1.ts b/tests/baselines/reference/convertToAsyncFunction/convertToAsyncFunction_ResRef1.ts new file mode 100644 index 0000000000000..b9041b7588e11 --- /dev/null +++ b/tests/baselines/reference/convertToAsyncFunction/convertToAsyncFunction_ResRef1.ts @@ -0,0 +1,25 @@ +// ==ORIGINAL== + +class Foo { + public /*[#|*/method/*|]*/(): Promise { + return fetch('a').then(this.foo); + } + + private foo(res) { + return res.ok; + } +} + +// ==ASYNC FUNCTION::Convert to async function== + +class Foo { + public async method(): Promise { + const res = await fetch('a'); + return this.foo(res); + } + + private foo(res) { + return res.ok; + } +} + \ No newline at end of file diff --git a/tests/baselines/reference/convertToAsyncFunction/convertToAsyncFunction_ResRef2.ts b/tests/baselines/reference/convertToAsyncFunction/convertToAsyncFunction_ResRef2.ts new file mode 100644 index 0000000000000..e67729fdcf385 --- /dev/null +++ b/tests/baselines/reference/convertToAsyncFunction/convertToAsyncFunction_ResRef2.ts @@ -0,0 +1,21 @@ +// ==ORIGINAL== + +class Foo { + public /*[#|*/method/*|]*/(): Promise { + return fetch('a').then(this.foo); + } + + private foo = res => res; +} + +// ==ASYNC FUNCTION::Convert to async function== + +class Foo { + public async method(): Promise { + const res = await fetch('a'); + return this.foo(res); + } + + private foo = res => res; +} + \ No newline at end of file diff --git a/tests/baselines/reference/convertToAsyncFunction/convertToAsyncFunction_ResRef3.ts b/tests/baselines/reference/convertToAsyncFunction/convertToAsyncFunction_ResRef3.ts new file mode 100644 index 0000000000000..07a6b17cf2fd5 --- /dev/null +++ b/tests/baselines/reference/convertToAsyncFunction/convertToAsyncFunction_ResRef3.ts @@ -0,0 +1,19 @@ +// ==ORIGINAL== + +const res = (result) => { + return result.ok; +} +function /*[#|*/f/*|]*/(): Promise { + return fetch('https://typescriptlang.org').then(res); +} + +// ==ASYNC FUNCTION::Convert to async function== + +const res = (result) => { + return result.ok; +} +async function f(): Promise { + const result = await fetch('https://typescriptlang.org'); + return res(result); +} + \ No newline at end of file diff --git a/tests/baselines/reference/convertToAsyncFunction/convertToAsyncFunction_ResRefNoReturnVal1.ts b/tests/baselines/reference/convertToAsyncFunction/convertToAsyncFunction_ResRefNoReturnVal1.ts new file mode 100644 index 0000000000000..23c41b28bda67 --- /dev/null +++ b/tests/baselines/reference/convertToAsyncFunction/convertToAsyncFunction_ResRefNoReturnVal1.ts @@ -0,0 +1,25 @@ +// ==ORIGINAL== + +class Foo { + public /*[#|*/method/*|]*/(): Promise { + return fetch('a').then(this.foo); + } + + private foo(res) { + console.log(res); + } +} + +// ==ASYNC FUNCTION::Convert to async function== + +class Foo { + public async method(): Promise { + const res = await fetch('a'); + return this.foo(res); + } + + private foo(res) { + console.log(res); + } +} + \ No newline at end of file diff --git a/tests/baselines/reference/declFileEmitDeclarationOnly.types b/tests/baselines/reference/declFileEmitDeclarationOnly.types index f508a00cc71fa..9a3cf8cfc70b0 100644 --- a/tests/baselines/reference/declFileEmitDeclarationOnly.types +++ b/tests/baselines/reference/declFileEmitDeclarationOnly.types @@ -23,7 +23,7 @@ class HelloWorld { >Log.info : (msg: string) => void >Log : { info(msg: string): void; } >info : (msg: string) => void ->`Hello ${this.name}` : `Hello ${string}` +>`Hello ${this.name}` : string >this.name : string >this : this >name : string diff --git a/tests/baselines/reference/declarationEmitCommonSourceDirectoryDoesNotContainAllFiles.js b/tests/baselines/reference/declarationEmitCommonSourceDirectoryDoesNotContainAllFiles.js new file mode 100644 index 0000000000000..cf0c04350a84d --- /dev/null +++ b/tests/baselines/reference/declarationEmitCommonSourceDirectoryDoesNotContainAllFiles.js @@ -0,0 +1,44 @@ +//// [tests/cases/compiler/declarationEmitCommonSourceDirectoryDoesNotContainAllFiles.ts] //// + +//// [index.ts] +export * from "./src/" +//// [index.ts] +export class B {} +//// [index.ts] +import { B } from "b"; + +export default function () { + return new B(); +} +//// [index.ts] +export * from "./src/" + + + +//// [index.d.ts] +declare module "src/index" { + import { B } from "b"; + export default function (): B; +} +declare module "index" { + export * from "src/index"; +} + + +//// [DtsFileErrors] + + +dist/index.d.ts(2,23): error TS2307: Cannot find module 'b' or its corresponding type declarations. + + +==== dist/index.d.ts (1 errors) ==== + declare module "src/index" { + import { B } from "b"; + ~~~ +!!! error TS2307: Cannot find module 'b' or its corresponding type declarations. + export default function (): B; + } + declare module "index" { + export * from "src/index"; + } + \ No newline at end of file diff --git a/tests/baselines/reference/declarationEmitCommonSourceDirectoryDoesNotContainAllFiles.symbols b/tests/baselines/reference/declarationEmitCommonSourceDirectoryDoesNotContainAllFiles.symbols new file mode 100644 index 0000000000000..baa1d95cce7a9 --- /dev/null +++ b/tests/baselines/reference/declarationEmitCommonSourceDirectoryDoesNotContainAllFiles.symbols @@ -0,0 +1,16 @@ +=== /a/index.ts === +export * from "./src/" +No type information for this code.=== /b/index.ts === +export * from "./src/" +No type information for this code.=== /b/src/index.ts === +export class B {} +>B : Symbol(B, Decl(index.ts, 0, 0)) + +=== /a/src/index.ts === +import { B } from "b"; +>B : Symbol(B, Decl(index.ts, 0, 8)) + +export default function () { + return new B(); +>B : Symbol(B, Decl(index.ts, 0, 8)) +} diff --git a/tests/baselines/reference/declarationEmitCommonSourceDirectoryDoesNotContainAllFiles.types b/tests/baselines/reference/declarationEmitCommonSourceDirectoryDoesNotContainAllFiles.types new file mode 100644 index 0000000000000..a0218c7fe7f81 --- /dev/null +++ b/tests/baselines/reference/declarationEmitCommonSourceDirectoryDoesNotContainAllFiles.types @@ -0,0 +1,17 @@ +=== /a/index.ts === +export * from "./src/" +No type information for this code.=== /b/index.ts === +export * from "./src/" +No type information for this code.=== /b/src/index.ts === +export class B {} +>B : B + +=== /a/src/index.ts === +import { B } from "b"; +>B : typeof B + +export default function () { + return new B(); +>new B() : B +>B : typeof B +} diff --git a/tests/baselines/reference/declarationEmitMixinPrivateProtected.errors.txt b/tests/baselines/reference/declarationEmitMixinPrivateProtected.errors.txt new file mode 100644 index 0000000000000..bb737d0c15ca0 --- /dev/null +++ b/tests/baselines/reference/declarationEmitMixinPrivateProtected.errors.txt @@ -0,0 +1,53 @@ +tests/cases/compiler/another.ts(11,1): error TS4094: Property '_assertIsStripped' of exported class expression may not be private or protected. +tests/cases/compiler/another.ts(11,1): error TS4094: Property '_onDispose' of exported class expression may not be private or protected. +tests/cases/compiler/first.ts(12,1): error TS4094: Property '_assertIsStripped' of exported class expression may not be private or protected. +tests/cases/compiler/first.ts(12,1): error TS4094: Property '_onDispose' of exported class expression may not be private or protected. +tests/cases/compiler/first.ts(13,14): error TS4094: Property '_assertIsStripped' of exported class expression may not be private or protected. +tests/cases/compiler/first.ts(13,14): error TS4094: Property '_onDispose' of exported class expression may not be private or protected. + + +==== tests/cases/compiler/first.ts (4 errors) ==== + declare function mix(mixin: TMix): TMix; + + const DisposableMixin = class { + protected _onDispose() { + this._assertIsStripped() + } + private _assertIsStripped() { + } + }; + + // No error, but definition is wrong. + export default mix(DisposableMixin); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4094: Property '_assertIsStripped' of exported class expression may not be private or protected. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4094: Property '_onDispose' of exported class expression may not be private or protected. + export class Monitor extends mix(DisposableMixin) { + ~~~~~~~ +!!! error TS4094: Property '_assertIsStripped' of exported class expression may not be private or protected. + ~~~~~~~ +!!! error TS4094: Property '_onDispose' of exported class expression may not be private or protected. + protected _onDispose() { + } + } + +==== tests/cases/compiler/another.ts (2 errors) ==== + declare function mix(mixin: TMix): TMix; + + const DisposableMixin = class { + protected _onDispose() { + this._assertIsStripped() + } + private _assertIsStripped() { + } + }; + + export default class extends mix(DisposableMixin) { + ~~~~~~ +!!! error TS4094: Property '_assertIsStripped' of exported class expression may not be private or protected. + ~~~~~~ +!!! error TS4094: Property '_onDispose' of exported class expression may not be private or protected. + protected _onDispose() { + } + } \ No newline at end of file diff --git a/tests/baselines/reference/declarationEmitMixinPrivateProtected.js b/tests/baselines/reference/declarationEmitMixinPrivateProtected.js new file mode 100644 index 0000000000000..8c578e62e7c52 --- /dev/null +++ b/tests/baselines/reference/declarationEmitMixinPrivateProtected.js @@ -0,0 +1,115 @@ +//// [tests/cases/compiler/declarationEmitMixinPrivateProtected.ts] //// + +//// [first.ts] +declare function mix(mixin: TMix): TMix; + +const DisposableMixin = class { + protected _onDispose() { + this._assertIsStripped() + } + private _assertIsStripped() { + } +}; + +// No error, but definition is wrong. +export default mix(DisposableMixin); +export class Monitor extends mix(DisposableMixin) { + protected _onDispose() { + } +} + +//// [another.ts] +declare function mix(mixin: TMix): TMix; + +const DisposableMixin = class { + protected _onDispose() { + this._assertIsStripped() + } + private _assertIsStripped() { + } +}; + +export default class extends mix(DisposableMixin) { + protected _onDispose() { + } +} + +//// [first.js] +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +exports.__esModule = true; +exports.Monitor = void 0; +var DisposableMixin = /** @class */ (function () { + function class_1() { + } + class_1.prototype._onDispose = function () { + this._assertIsStripped(); + }; + class_1.prototype._assertIsStripped = function () { + }; + return class_1; +}()); +// No error, but definition is wrong. +exports["default"] = mix(DisposableMixin); +var Monitor = /** @class */ (function (_super) { + __extends(Monitor, _super); + function Monitor() { + return _super !== null && _super.apply(this, arguments) || this; + } + Monitor.prototype._onDispose = function () { + }; + return Monitor; +}(mix(DisposableMixin))); +exports.Monitor = Monitor; +//// [another.js] +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +exports.__esModule = true; +var DisposableMixin = /** @class */ (function () { + function class_1() { + } + class_1.prototype._onDispose = function () { + this._assertIsStripped(); + }; + class_1.prototype._assertIsStripped = function () { + }; + return class_1; +}()); +var default_1 = /** @class */ (function (_super) { + __extends(default_1, _super); + function default_1() { + return _super !== null && _super.apply(this, arguments) || this; + } + default_1.prototype._onDispose = function () { + }; + return default_1; +}(mix(DisposableMixin))); +exports["default"] = default_1; diff --git a/tests/baselines/reference/declarationEmitMixinPrivateProtected.symbols b/tests/baselines/reference/declarationEmitMixinPrivateProtected.symbols new file mode 100644 index 0000000000000..8f543a285d7be --- /dev/null +++ b/tests/baselines/reference/declarationEmitMixinPrivateProtected.symbols @@ -0,0 +1,71 @@ +=== tests/cases/compiler/first.ts === +declare function mix(mixin: TMix): TMix; +>mix : Symbol(mix, Decl(first.ts, 0, 0)) +>TMix : Symbol(TMix, Decl(first.ts, 0, 21)) +>mixin : Symbol(mixin, Decl(first.ts, 0, 27)) +>TMix : Symbol(TMix, Decl(first.ts, 0, 21)) +>TMix : Symbol(TMix, Decl(first.ts, 0, 21)) + +const DisposableMixin = class { +>DisposableMixin : Symbol(DisposableMixin, Decl(first.ts, 2, 5)) + + protected _onDispose() { +>_onDispose : Symbol(DisposableMixin._onDispose, Decl(first.ts, 2, 31)) + + this._assertIsStripped() +>this._assertIsStripped : Symbol(DisposableMixin._assertIsStripped, Decl(first.ts, 5, 5)) +>this : Symbol(DisposableMixin, Decl(first.ts, 2, 23)) +>_assertIsStripped : Symbol(DisposableMixin._assertIsStripped, Decl(first.ts, 5, 5)) + } + private _assertIsStripped() { +>_assertIsStripped : Symbol(DisposableMixin._assertIsStripped, Decl(first.ts, 5, 5)) + } +}; + +// No error, but definition is wrong. +export default mix(DisposableMixin); +>mix : Symbol(mix, Decl(first.ts, 0, 0)) +>DisposableMixin : Symbol(DisposableMixin, Decl(first.ts, 2, 5)) + +export class Monitor extends mix(DisposableMixin) { +>Monitor : Symbol(Monitor, Decl(first.ts, 11, 36)) +>mix : Symbol(mix, Decl(first.ts, 0, 0)) +>DisposableMixin : Symbol(DisposableMixin, Decl(first.ts, 2, 5)) + + protected _onDispose() { +>_onDispose : Symbol(Monitor._onDispose, Decl(first.ts, 12, 51)) + } +} + +=== tests/cases/compiler/another.ts === +declare function mix(mixin: TMix): TMix; +>mix : Symbol(mix, Decl(another.ts, 0, 0)) +>TMix : Symbol(TMix, Decl(another.ts, 0, 21)) +>mixin : Symbol(mixin, Decl(another.ts, 0, 27)) +>TMix : Symbol(TMix, Decl(another.ts, 0, 21)) +>TMix : Symbol(TMix, Decl(another.ts, 0, 21)) + +const DisposableMixin = class { +>DisposableMixin : Symbol(DisposableMixin, Decl(another.ts, 2, 5)) + + protected _onDispose() { +>_onDispose : Symbol(DisposableMixin._onDispose, Decl(another.ts, 2, 31)) + + this._assertIsStripped() +>this._assertIsStripped : Symbol(DisposableMixin._assertIsStripped, Decl(another.ts, 5, 5)) +>this : Symbol(DisposableMixin, Decl(another.ts, 2, 23)) +>_assertIsStripped : Symbol(DisposableMixin._assertIsStripped, Decl(another.ts, 5, 5)) + } + private _assertIsStripped() { +>_assertIsStripped : Symbol(DisposableMixin._assertIsStripped, Decl(another.ts, 5, 5)) + } +}; + +export default class extends mix(DisposableMixin) { +>mix : Symbol(mix, Decl(another.ts, 0, 0)) +>DisposableMixin : Symbol(DisposableMixin, Decl(another.ts, 2, 5)) + + protected _onDispose() { +>_onDispose : Symbol(default._onDispose, Decl(another.ts, 10, 51)) + } +} diff --git a/tests/baselines/reference/declarationEmitMixinPrivateProtected.types b/tests/baselines/reference/declarationEmitMixinPrivateProtected.types new file mode 100644 index 0000000000000..77dcaba30eb6e --- /dev/null +++ b/tests/baselines/reference/declarationEmitMixinPrivateProtected.types @@ -0,0 +1,72 @@ +=== tests/cases/compiler/first.ts === +declare function mix(mixin: TMix): TMix; +>mix : (mixin: TMix) => TMix +>mixin : TMix + +const DisposableMixin = class { +>DisposableMixin : typeof DisposableMixin +>class { protected _onDispose() { this._assertIsStripped() } private _assertIsStripped() { }} : typeof DisposableMixin + + protected _onDispose() { +>_onDispose : () => void + + this._assertIsStripped() +>this._assertIsStripped() : void +>this._assertIsStripped : () => void +>this : this +>_assertIsStripped : () => void + } + private _assertIsStripped() { +>_assertIsStripped : () => void + } +}; + +// No error, but definition is wrong. +export default mix(DisposableMixin); +>mix(DisposableMixin) : typeof DisposableMixin +>mix : (mixin: TMix) => TMix +>DisposableMixin : typeof DisposableMixin + +export class Monitor extends mix(DisposableMixin) { +>Monitor : Monitor +>mix(DisposableMixin) : DisposableMixin +>mix : (mixin: TMix) => TMix +>DisposableMixin : typeof DisposableMixin + + protected _onDispose() { +>_onDispose : () => void + } +} + +=== tests/cases/compiler/another.ts === +declare function mix(mixin: TMix): TMix; +>mix : (mixin: TMix) => TMix +>mixin : TMix + +const DisposableMixin = class { +>DisposableMixin : typeof DisposableMixin +>class { protected _onDispose() { this._assertIsStripped() } private _assertIsStripped() { }} : typeof DisposableMixin + + protected _onDispose() { +>_onDispose : () => void + + this._assertIsStripped() +>this._assertIsStripped() : void +>this._assertIsStripped : () => void +>this : this +>_assertIsStripped : () => void + } + private _assertIsStripped() { +>_assertIsStripped : () => void + } +}; + +export default class extends mix(DisposableMixin) { +>mix(DisposableMixin) : DisposableMixin +>mix : (mixin: TMix) => TMix +>DisposableMixin : typeof DisposableMixin + + protected _onDispose() { +>_onDispose : () => void + } +} diff --git a/tests/baselines/reference/declarationNoDanglingGenerics.types b/tests/baselines/reference/declarationNoDanglingGenerics.types index 65c381a2e4673..9fd057e32f3d9 100644 --- a/tests/baselines/reference/declarationNoDanglingGenerics.types +++ b/tests/baselines/reference/declarationNoDanglingGenerics.types @@ -16,7 +16,7 @@ function register(kind: string): void | never { throw new Error(`Class with kind "${kind}" is already registered.`); >new Error(`Class with kind "${kind}" is already registered.`) : Error >Error : ErrorConstructor ->`Class with kind "${kind}" is already registered.` : `Class with kind "${string}" is already registered.` +>`Class with kind "${kind}" is already registered.` : string >kind : string } kindCache[kind] = true; diff --git a/tests/baselines/reference/destructuringInitializerContextualTypeFromContext.types b/tests/baselines/reference/destructuringInitializerContextualTypeFromContext.types index 551e2e99339a7..d0ddb4918a034 100644 --- a/tests/baselines/reference/destructuringInitializerContextualTypeFromContext.types +++ b/tests/baselines/reference/destructuringInitializerContextualTypeFromContext.types @@ -34,7 +34,7 @@ const Parent: SFC = ({ const Child: SFC = ({ >Child : SFC ->({ children, name = "Artemis", ...props}) => `name: ${name} props: ${JSON.stringify(props)}` : ({ children, name, ...props }: Props & { children?: any; }) => `name: Apollo props: ${string}` | `name: Artemis props: ${string}` | `name: Dionysus props: ${string}` | `name: Persephone props: ${string}` +>({ children, name = "Artemis", ...props}) => `name: ${name} props: ${JSON.stringify(props)}` : ({ children, name, ...props }: Props & { children?: any; }) => string children, >children : any @@ -47,7 +47,7 @@ const Child: SFC = ({ >props : {} }) => `name: ${name} props: ${JSON.stringify(props)}`; ->`name: ${name} props: ${JSON.stringify(props)}` : `name: Apollo props: ${string}` | `name: Artemis props: ${string}` | `name: Dionysus props: ${string}` | `name: Persephone props: ${string}` +>`name: ${name} props: ${JSON.stringify(props)}` : string >name : "Apollo" | "Artemis" | "Dionysus" | "Persephone" >JSON.stringify(props) : string >JSON.stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } diff --git a/tests/baselines/reference/destructuringParameterProperties4.types b/tests/baselines/reference/destructuringParameterProperties4.types index 0f6e7d88ad59e..8f49dc9ba9110 100644 --- a/tests/baselines/reference/destructuringParameterProperties4.types +++ b/tests/baselines/reference/destructuringParameterProperties4.types @@ -75,10 +75,10 @@ class C2 extends C1 { >C1 : C1 public doSomethingWithSuperProperties() { ->doSomethingWithSuperProperties : () => `${any} ${any} ${any}` +>doSomethingWithSuperProperties : () => string return `${this.a} ${this.b} ${this.c}`; ->`${this.a} ${this.b} ${this.c}` : `${any} ${any} ${any}` +>`${this.a} ${this.b} ${this.c}` : string >this.a : any >this : this >a : any diff --git a/tests/baselines/reference/discriminantPropertyCheck.types b/tests/baselines/reference/discriminantPropertyCheck.types index 10d3b5f117c47..38e04bf6a04da 100644 --- a/tests/baselines/reference/discriminantPropertyCheck.types +++ b/tests/baselines/reference/discriminantPropertyCheck.types @@ -343,7 +343,7 @@ const u: U = {} as any; >{} : {} u.a && u.b && f(u.a, u.b); ->u.a && u.b && f(u.a, u.b) : void | "" | undefined +>u.a && u.b && f(u.a, u.b) : void | "" >u.a && u.b : string | undefined >u.a : string | undefined >u : U @@ -361,7 +361,7 @@ u.a && u.b && f(u.a, u.b); >b : string u.b && u.a && f(u.a, u.b); ->u.b && u.a && f(u.a, u.b) : void | "" | undefined +>u.b && u.a && f(u.a, u.b) : void | "" >u.b && u.a : string | undefined >u.b : string | undefined >u : U diff --git a/tests/baselines/reference/docker/azure-sdk.log b/tests/baselines/reference/docker/azure-sdk.log index 46b6d2421c9f9..828149119c2c1 100644 --- a/tests/baselines/reference/docker/azure-sdk.log +++ b/tests/baselines/reference/docker/azure-sdk.log @@ -2,140 +2,152 @@ Exit Code: 1 Standard output: Rush Multi-Project Build Tool 5.X.X - https://rushjs.io -Node.js version is 15.1.0 (unstable) +Node.js version is 15.7.0 (unstable) Starting "rush rebuild" Executing a maximum of ?simultaneous processes... -BLOCKED (51) -================================ -@azure/abort-controller -@azure/core-auth -@azure/logger -@azure/core-http -@azure/core-asynciterator-polyfill -@azure/identity -@azure/communication-common -@azure/core-amqp -@azure/core-lro -@azure/core-paging -@azure/dev-tool -@azure/test-utils-recorder -@azure/communication-administration -@azure/core-https -@azure/core-xml -@azure/event-hubs -@azure/event-processor-host -@azure/keyvault-secrets -@azure/schema-registry -@azure/storage-blob -@azure/ai-anomaly-detector -@azure/ai-form-recognizer -@azure/ai-metrics-advisor -@azure/ai-text-analytics -@azure/app-configuration -@azure/communication-chat -@azure/communication-sms -@azure/core-arm -@azure/core-client -@azure/core-tracing -@azure/cosmos -@azure/data-tables -@azure/digital-twins-core -@azure/eventgrid -@azure/eventhubs-checkpointstore-blob -@azure/keyvault-admin -@azure/keyvault-certificates -@azure/keyvault-common -@azure/keyvault-keys -@azure/monitor-opentelemetry-exporter -@azure/schema-registry-avro -@azure/search-documents -@azure/service-bus -@azure/storage-blob-changefeed -@azure/storage-file-datalake -@azure/storage-file-share -@azure/storage-internal-avro -@azure/storage-queue -@azure/template -@azure/test-utils-perfstress -testhub -================================ -FAILURE (1) -================================ -@azure/eslint-plugin-azure-sdk (? seconds) ->>> @azure/eslint-plugin-azure-sdk -tsc -p tsconfig.build.json && prettier --write dist/**/*.{js,json,md} -../../temp/node_modules/.pnpm/@typescript-eslint/experimental-utils@X.X.X_eslint@X.X.X+typescript@X.X.X/node_modules/@typescript-eslint/experimental-utils/dist/ts-eslint/Linter.d.ts:6:11 - error TS2300: Duplicate identifier 'Linter'. -6 interface Linter { - ~~~~~~ -../../temp/node_modules/.pnpm/@typescript-eslint/experimental-utils@X.X.X_eslint@X.X.X+typescript@X.X.X/node_modules/@typescript-eslint/experimental-utils/dist/ts-eslint/Linter.d.ts:21:19 - error TS2300: Duplicate identifier 'Linter'. -21 declare namespace Linter { - ~~~~~~ -../../temp/node_modules/.pnpm/@typescript-eslint/experimental-utils@X.X.X_eslint@X.X.X+typescript@X.X.X/node_modules/@typescript-eslint/experimental-utils/dist/ts-eslint/Linter.d.ts:106:15 - error TS2300: Duplicate identifier 'Linter'. -106 declare const Linter: new () => Linter; - ~~~~~~ -../../temp/node_modules/.pnpm/@typescript-eslint/typescript-estree@X.X.X_typescript@X.X.X/node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/ts-nodes.d.ts:3:3999 - error TS2694: Namespace 'ts' has no exported member 'JSDocAuthorTag'. -3 export declare type TSNode = ts.Node & (ts.Modifier | ts.Identifier | ts.QualifiedName | ts.ComputedPropertyName | ts.Decorator | ts.TypeParameterDeclaration | ts.CallSignatureDeclaration | ts.ConstructSignatureDeclaration | ts.VariableDeclaration | ts.VariableDeclarationList | ts.ParameterDeclaration | ts.BindingElement | ts.PropertySignature | ts.PropertyDeclaration | ts.PropertyAssignment | ts.ShorthandPropertyAssignment | ts.SpreadAssignment | ts.ObjectBindingPattern | ts.ArrayBindingPattern | ts.FunctionDeclaration | ts.MethodSignature | ts.MethodDeclaration | ts.ConstructorDeclaration | ts.SemicolonClassElement | ts.GetAccessorDeclaration | ts.SetAccessorDeclaration | ts.IndexSignatureDeclaration | ts.KeywordTypeNode | ts.ImportTypeNode | ts.ThisTypeNode | ts.ConstructorTypeNode | ts.FunctionTypeNode | ts.TypeReferenceNode | ts.TypePredicateNode | ts.TypeQueryNode | ts.TypeLiteralNode | ts.ArrayTypeNode | ts.TupleTypeNode | ts.OptionalTypeNode | ts.RestTypeNode | ts.UnionTypeNode | ts.IntersectionTypeNode | ts.ConditionalTypeNode | ts.InferTypeNode | ts.ParenthesizedTypeNode | ts.TypeOperatorNode | ts.IndexedAccessTypeNode | ts.MappedTypeNode | ts.LiteralTypeNode | ts.StringLiteral | ts.OmittedExpression | ts.PartiallyEmittedExpression | ts.PrefixUnaryExpression | ts.PostfixUnaryExpression | ts.NullLiteral | ts.BooleanLiteral | ts.ThisExpression | ts.SuperExpression | ts.ImportExpression | ts.DeleteExpression | ts.TypeOfExpression | ts.VoidExpression | ts.AwaitExpression | ts.YieldExpression | ts.SyntheticExpression | ts.BinaryExpression | ts.ConditionalExpression | ts.FunctionExpression | ts.ArrowFunction | ts.RegularExpressionLiteral | ts.NoSubstitutionTemplateLiteral | ts.NumericLiteral | ts.BigIntLiteral | ts.TemplateHead | ts.TemplateMiddle | ts.TemplateTail | ts.TemplateExpression | ts.TemplateSpan | ts.ParenthesizedExpression | ts.ArrayLiteralExpression | ts.SpreadElement | ts.ObjectLiteralExpression | ts.PropertyAccessExpression | ts.ElementAccessExpression | ts.CallExpression | ts.ExpressionWithTypeArguments | ts.NewExpression | ts.TaggedTemplateExpression | ts.AsExpression | ts.TypeAssertion | ts.NonNullExpression | ts.MetaProperty | ts.JsxElement | ts.JsxOpeningElement | ts.JsxSelfClosingElement | ts.JsxFragment | ts.JsxOpeningFragment | ts.JsxClosingFragment | ts.JsxAttribute | ts.JsxSpreadAttribute | ts.JsxClosingElement | ts.JsxExpression | ts.JsxText | ts.NotEmittedStatement | ts.CommaListExpression | ts.EmptyStatement | ts.DebuggerStatement | ts.MissingDeclaration | ts.Block | ts.VariableStatement | ts.ExpressionStatement | ts.IfStatement | ts.DoStatement | ts.WhileStatement | ts.ForStatement | ts.ForInStatement | ts.ForOfStatement | ts.BreakStatement | ts.ContinueStatement | ts.ReturnStatement | ts.WithStatement | ts.SwitchStatement | ts.CaseBlock | ts.CaseClause | ts.DefaultClause | ts.LabeledStatement | ts.ThrowStatement | ts.TryStatement | ts.CatchClause | ts.ClassDeclaration | ts.ClassExpression | ts.InterfaceDeclaration | ts.HeritageClause | ts.TypeAliasDeclaration | ts.EnumMember | ts.EnumDeclaration | ts.ModuleDeclaration | ts.ModuleBlock | ts.ImportEqualsDeclaration | ts.ExternalModuleReference | ts.ImportDeclaration | ts.ImportClause | ts.NamespaceImport | ts.NamespaceExportDeclaration | ts.ExportDeclaration | ts.NamedImports | ts.NamedExports | ts.ImportSpecifier | ts.ExportSpecifier | ts.ExportAssignment | ts.CommentRange | ts.SourceFile | ts.Bundle | ts.InputFiles | ts.UnparsedSource | ts.JsonMinusNumericLiteral | ts.JSDoc | ts.JSDocTypeExpression | ts.JSDocUnknownTag | ts.JSDocAugmentsTag | ts.JSDocClassTag | ts.JSDocEnumTag | ts.JSDocThisTag | ts.JSDocTemplateTag | ts.JSDocReturnTag | ts.JSDocTypeTag | ts.JSDocTypedefTag | ts.JSDocCallbackTag | ts.JSDocSignature | ts.JSDocPropertyTag | ts.JSDocParameterTag | ts.JSDocTypeLiteral | ts.JSDocFunctionType | ts.JSDocAllType | ts.JSDocUnknownType | ts.JSDocNullableType | ts.JSDocNonNullableType | ts.JSDocOptionalType | ts.JSDocVariadicType | ts.JSDocAuthorTag); - ~~~~~~~~~~~~~~ -Found 4 errors. -================================ -Error: Project(s) failed -rush rebuild - Errors! (? seconds) +==[ @azure/eslint-plugin-azure-sdk ]==============================[ 1 of 61 ]== +"@azure/abort-controller" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/communication-administration" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/communication-chat" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/communication-common" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/communication-identity" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/communication-sms" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/core-amqp" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/event-hubs" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/eventhubs-checkpointstore-blob" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/service-bus" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/eventgrid" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/core-auth" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/ai-anomaly-detector" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/ai-form-recognizer" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/ai-metrics-advisor" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/ai-text-analytics" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/core-client" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/data-tables" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/core-http" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/app-configuration" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/attestation" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/core-lro" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/keyvault-admin" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/keyvault-certificates" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/keyvault-keys" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/keyvault-secrets" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/storage-blob" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/storage-blob-changefeed" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/storage-file-datalake" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/synapse-artifacts" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/digital-twins-core" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/identity" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/cosmos" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/quantum-jobs" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/schema-registry" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/schema-registry-avro" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/storage-queue" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/keyvault-common" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/opentelemetry-exporter-azure-monitor" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/search-documents" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/storage-file-share" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/synapse-access-control" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/synapse-managed-private-endpoints" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/synapse-monitoring" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/synapse-spark" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/template" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/test-utils-perfstress" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/test-utils-recorder" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/storage-internal-avro" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/test-utils-multi-version" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/core-https" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/core-crypto" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/core-asynciterator-polyfill" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/core-paging" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/core-tracing" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/core-xml" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/dev-tool" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/event-processor-host" is blocked by "@azure/eslint-plugin-azure-sdk". +"testhub" is blocked by "@azure/eslint-plugin-azure-sdk". +"@azure/logger" is blocked by "@azure/eslint-plugin-azure-sdk". +==[ BLOCKED: 60 projects ]===================================================== +These projects were blocked by dependencies that failed: + @azure/abort-controller + @azure/ai-anomaly-detector + @azure/ai-form-recognizer + @azure/ai-metrics-advisor + @azure/ai-text-analytics + @azure/app-configuration + @azure/attestation + @azure/communication-administration + @azure/communication-chat + @azure/communication-common + @azure/communication-identity + @azure/communication-sms + @azure/core-amqp + @azure/core-asynciterator-polyfill + @azure/core-auth + @azure/core-client + @azure/core-crypto + @azure/core-http + @azure/core-https + @azure/core-lro + @azure/core-paging + @azure/core-tracing + @azure/core-xml + @azure/cosmos + @azure/data-tables + @azure/dev-tool + @azure/digital-twins-core + @azure/event-hubs + @azure/event-processor-host + @azure/eventgrid + @azure/eventhubs-checkpointstore-blob + @azure/identity + @azure/keyvault-admin + @azure/keyvault-certificates + @azure/keyvault-common + @azure/keyvault-keys + @azure/keyvault-secrets + @azure/logger + @azure/opentelemetry-exporter-azure-monitor + @azure/quantum-jobs + @azure/schema-registry + @azure/schema-registry-avro + @azure/search-documents + @azure/service-bus + @azure/storage-blob + @azure/storage-blob-changefeed + @azure/storage-file-datalake + @azure/storage-file-share + @azure/storage-internal-avro + @azure/storage-queue + @azure/synapse-access-control + @azure/synapse-artifacts + @azure/synapse-managed-private-endpoints + @azure/synapse-monitoring + @azure/synapse-spark + @azure/template + @azure/test-utils-multi-version + @azure/test-utils-perfstress + @azure/test-utils-recorder + testhub +==[ FAILURE: 1 project ]======================================================= +--[ FAILURE: @azure/eslint-plugin-azure-sdk ]----------------[ ? seconds ]-- +Invoking: tsc -p tsconfig.build.json && prettier --write dist/**/*.{js,json,md} +../../temp/node_modules/.pnpm/@typescript-eslint/experimental-utils@X.X.X_eslint@X.X.X+typescript@X.X.X/node_modules/@typescript-eslint/experimental-utils/_ts3.4/dist/ast-utils/eslint-utils/astUtilities.d.ts:22:136 - error TS2307: Cannot find module '@typescript-eslint/scope-manager/dist/scope/BlockScope'. +22 declare const getPropertyName: (node: TSESTree.MemberExpression | TSESTree.Property | TSESTree.MethodDefinition, initialScope?: import("@typescript-eslint/scope-manager/dist/scope/BlockScope").BlockScope | import("@typescript-eslint/scope-manager/dist/scope/CatchScope").CatchScope | import("@typescript-eslint/scope-manager/dist/scope/ClassScope").ClassScope | import("@typescript-eslint/scope-manager/dist/scope/ConditionalTypeScope").ConditionalTypeScope | import("@typescript-eslint/scope-manager/dist/scope/ForScope").ForScope | import("@typescript-eslint/scope-manager/dist/scope/FunctionExpressionNameScope").FunctionExpressionNameScope | import("@typescript-eslint/scope-manager/dist/scope/FunctionScope").FunctionScope | import("@typescript-eslint/scope-manager/dist/scope/FunctionTypeScope").FunctionTypeScope | import("@typescript-eslint/scope-manager/dist/scope/GlobalScope").GlobalScope | import("@typescript-eslint/scope-manager/dist/scope/MappedTypeScope").MappedTypeScope | import("@typescript-eslint/scope-manager/dist/scope/ModuleScope").ModuleScope | import("@typescript-eslint/scope-manager/dist/scope/SwitchScope").SwitchScope | import("@typescript-eslint/scope-manager/dist/scope/TSEnumScope").TSEnumScope | import("@typescript-eslint/scope-manager/dist/scope/TSModuleScope").TSModuleScope | import("@typescript-eslint/scope-manager/dist/scope/TypeScope").TypeScope | import("@typescript-eslint/scope-manager/dist/scope/WithScope").WithScope | undefined) => string | null; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +../../temp/node_modules/.pnpm/@typescript-eslint/experimental-utils@X.X.X_eslint@X.X.X+typescript@X.X.X/node_modules/@typescript-eslint/experimental-utils/_ts3.4/dist/ast-utils/eslint-utils/astUtilities.d.ts:22:214 - error TS2307: Cannot find module '@typescript-eslint/scope-manager/dist/scope/CatchScope'. +22 declare const getPropertyName: (node: TSESTree.MemberExpression | TSESTree.Property | TSESTree.MethodDefinition, initialScope?: import("@typescript-eslint/scope-manager/dist/scope/BlockScope").BlockScope | import("@typescript-eslint/scope-manager/dist/scope/CatchScope").CatchScope | import("@typescript-eslint/scope-manager/dist/scope/ClassScope").ClassScope | import("@typescript-eslint/scope-manager/dist/scope/ConditionalTypeScope").ConditionalTypeScope | import("@typescript-eslint/scope-manager/dist/scope/ForScope").ForScope | import("@typescript-eslint/scope-manager/dist/scope/FunctionExpressionNameScope").FunctionExpressionNameScope | import("@typescript-eslint/scope-manager/dist/scope/FunctionScope").FunctionScope | import("@typescript-eslint/scope-manager/dist/scope/FunctionTypeScope").FunctionTypeScope | import("@typescript-eslint/scope-manager/dist/scope/GlobalScope").GlobalScope | import("@typescript-eslint/scope-manager/dist/scope/MappedTypeScope").MappedTypeScope | import("@typescript-eslint/scope-manager/dist/scope/ModuleScope").ModuleScope | import("@typescript-eslint/scope-manager/dist/scope/SwitchScope").SwitchScope | import("@typescript-eslint/scope-manager/dist/scope/TSEnumScope").TSEnumScope | import("@typescript-eslint/scope-manager/dist/scope/TSModuleScope").TSModuleScope | import("@typescript-eslint/scope-manager/dist/scope/TypeScope").TypeScope | import("@typescript-eslint/scope-manager/dist/scope/WithScope").WithScope | undefined) => string | null; + ...260 lines omitted... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +src/rules/ts-use-interface-parameters.ts:13:8 - error TS2307: Cannot find module '@typescript-eslint/typescript-estree/dist/parser-options'. +13 } from "@typescript-eslint/typescript-estree/dist/parser-options"; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Found 55 errors. +rush rebuild (? seconds) Standard error: -Your version of Node.js (X.X.X) has not been tested with this release of Rush. Please consider installing a newer version of the "@microsoft/rush" package, or downgrading Node.js. -Your version of Node.js (X.X.X) is an odd-numbered release. These releases frequently have bugs. Please consider installing a Long Term Support (LTS) version instead. -XX of XX: [@azure/eslint-plugin-azure-sdk] failed! -XX of XX: [@azure/abort-controller] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/communication-administration] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/communication-chat] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/communication-common] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/communication-sms] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/core-amqp] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/event-hubs] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/eventhubs-checkpointstore-blob] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/service-bus] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/core-auth] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/ai-anomaly-detector] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/ai-form-recognizer] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/ai-metrics-advisor] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/ai-text-analytics] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/core-client] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/core-http] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/app-configuration] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/core-arm] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/core-lro] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/keyvault-admin] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/keyvault-certificates] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/keyvault-keys] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/keyvault-secrets] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/storage-blob] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/storage-blob-changefeed] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/storage-file-datalake] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/data-tables] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/digital-twins-core] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/eventgrid] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/identity] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/schema-registry] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/schema-registry-avro] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/storage-queue] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/keyvault-common] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/monitor-opentelemetry-exporter] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/search-documents] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/storage-file-share] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/template] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/test-utils-perfstress] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/test-utils-recorder] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/storage-internal-avro] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/core-https] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/core-asynciterator-polyfill] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/core-paging] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/core-tracing] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/core-xml] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/cosmos] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/dev-tool] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/event-processor-host] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [testhub] blocked by [@azure/eslint-plugin-azure-sdk]! -XX of XX: [@azure/logger] blocked by [@azure/eslint-plugin-azure-sdk]! -[@azure/eslint-plugin-azure-sdk] Returned error code: 2 +Your version of Node.js (X.X.X) has not been tested with this release of the Rush engine. Please consider upgrading the "rushVersion" setting in rush.json, or downgrading Node.js. +Returned error code: 2 +"@azure/eslint-plugin-azure-sdk" failed to build. +Projects failed to build. diff --git a/tests/baselines/reference/docker/office-ui-fabric.log b/tests/baselines/reference/docker/office-ui-fabric.log index e7243afc220d5..7876f01c26d28 100644 --- a/tests/baselines/reference/docker/office-ui-fabric.log +++ b/tests/baselines/reference/docker/office-ui-fabric.log @@ -1,5 +1,8 @@ Exit Code: 1 Standard output: +@fluentui/cra-template: yarn run vX.X.X +@fluentui/cra-template: $ /office-ui-fabric-react/node_modules/.bin/just ts +@fluentui/cra-template: Done in ?s. @fluentui/eslint-plugin: yarn run vX.X.X @fluentui/eslint-plugin: $ /office-ui-fabric-react/node_modules/.bin/just ts @fluentui/eslint-plugin: Done in ?s. @@ -36,21 +39,21 @@ Standard output: @fluentui/a11y-testing: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/a11y-testing/tsconfig.json" @fluentui/a11y-testing: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/a11y-testing/tsconfig.json @fluentui/a11y-testing: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/a11y-testing/tsconfig.json" -@fluentui/a11y-testing: Done in ?s. +@fluentui/a11y-testing: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. @fluentui/codemods: yarn run vX.X.X @fluentui/codemods: $ just-scripts ts @fluentui/codemods: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/codemods/tsconfig.json @fluentui/codemods: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/codemods/tsconfig.json" @fluentui/codemods: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/codemods/tsconfig.json @fluentui/codemods: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/codemods/tsconfig.json" -@fluentui/codemods: Done in ?s. +@fluentui/codemods: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. @fluentui/example-data: yarn run vX.X.X @fluentui/example-data: $ just-scripts ts @fluentui/example-data: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/example-data/tsconfig.json @fluentui/example-data: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/example-data/tsconfig.json" @fluentui/example-data: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/example-data/tsconfig.json @fluentui/example-data: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/example-data/tsconfig.json" -@fluentui/example-data: Done in ?s. +@fluentui/example-data: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. @fluentui/keyboard-key: yarn run vX.X.X @fluentui/keyboard-key: $ just-scripts ts @fluentui/keyboard-key: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/keyboard-key/tsconfig.json @@ -71,7 +74,7 @@ Standard output: @fluentui/react-conformance: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/react-conformance/tsconfig.json" @fluentui/react-conformance: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-conformance/tsconfig.json @fluentui/react-conformance: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/react-conformance/tsconfig.json" -@fluentui/react-conformance: Done in ?s. +@fluentui/react-conformance: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. @fluentui/set-version: yarn run vX.X.X @fluentui/set-version: $ just-scripts ts @fluentui/set-version: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/set-version/tsconfig.json @@ -119,14 +122,21 @@ Standard output: @fluentui/date-time-utilities: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/date-time-utilities/tsconfig.json" @fluentui/date-time-utilities: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/date-time-utilities/tsconfig.json @fluentui/date-time-utilities: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/date-time-utilities/tsconfig.json" -@fluentui/date-time-utilities: Done in ?s. +@fluentui/date-time-utilities: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. @fluentui/dom-utilities: yarn run vX.X.X @fluentui/dom-utilities: $ just-scripts ts @fluentui/dom-utilities: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/dom-utilities/tsconfig.json @fluentui/dom-utilities: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/dom-utilities/tsconfig.json" @fluentui/dom-utilities: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/dom-utilities/tsconfig.json @fluentui/dom-utilities: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/dom-utilities/tsconfig.json" -@fluentui/dom-utilities: Done in ?s. +@fluentui/dom-utilities: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. +@fluentui/make-styles: yarn run vX.X.X +@fluentui/make-styles: $ just-scripts ts +@fluentui/make-styles: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/make-styles/tsconfig.json +@fluentui/make-styles: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/make-styles/tsconfig.json" +@fluentui/make-styles: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/make-styles/tsconfig.json +@fluentui/make-styles: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/make-styles/tsconfig.json" +@fluentui/make-styles: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. @fluentui/merge-styles: yarn run vX.X.X @fluentui/merge-styles: $ just-scripts ts @fluentui/merge-styles: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/merge-styles/tsconfig.json @@ -156,7 +166,7 @@ Standard output: @fluentui/react-stylesheets: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/react-stylesheets/tsconfig.json" @fluentui/react-stylesheets: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-stylesheets/tsconfig.json @fluentui/react-stylesheets: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/react-stylesheets/tsconfig.json" -@fluentui/react-stylesheets: Done in ?s. +@fluentui/react-stylesheets: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. @fluentui/react-utilities: yarn run vX.X.X @fluentui/react-utilities: $ just-scripts ts @fluentui/react-utilities: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-utilities/tsconfig.json @@ -207,21 +217,14 @@ Standard output: @fluentui/react-compose: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/react-compose/tsconfig.json" @fluentui/react-compose: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-compose/tsconfig.json @fluentui/react-compose: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/react-compose/tsconfig.json" -@fluentui/react-compose: Done in ?s. -@fluentui/react-focus: yarn run vX.X.X -@fluentui/react-focus: $ just-scripts ts -@fluentui/react-focus: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-focus/tsconfig.json -@fluentui/react-focus: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/react-focus/tsconfig.json" -@fluentui/react-focus: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-focus/tsconfig.json -@fluentui/react-focus: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/react-focus/tsconfig.json" -@fluentui/react-focus: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. +@fluentui/react-compose: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. @fluentui/react-hooks: yarn run vX.X.X @fluentui/react-hooks: $ just-scripts ts @fluentui/react-hooks: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-hooks/tsconfig.json @fluentui/react-hooks: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/react-hooks/tsconfig.json" @fluentui/react-hooks: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-hooks/tsconfig.json @fluentui/react-hooks: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/react-hooks/tsconfig.json" -@fluentui/react-hooks: Done in ?s. +@fluentui/react-hooks: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. @fluentui/react-icons-mdl2: yarn run vX.X.X @fluentui/react-icons-mdl2: $ just-scripts ts @fluentui/react-icons-mdl2: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-icons-mdl2/tsconfig.json @@ -268,13 +271,6 @@ Standard output: @fluentui/common-styles: yarn run vX.X.X @fluentui/common-styles: $ just-scripts ts @fluentui/common-styles: Done in ?s. -@fluentui/file-type-icons: yarn run vX.X.X -@fluentui/file-type-icons: $ just-scripts ts -@fluentui/file-type-icons: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/file-type-icons/tsconfig.json -@fluentui/file-type-icons: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/file-type-icons/tsconfig.json" -@fluentui/file-type-icons: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/file-type-icons/tsconfig.json -@fluentui/file-type-icons: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/file-type-icons/tsconfig.json" -@fluentui/file-type-icons: Done in ?s. @fluentui/font-icons-mdl2: yarn run vX.X.X @fluentui/font-icons-mdl2: $ just-scripts ts @fluentui/font-icons-mdl2: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/font-icons-mdl2/tsconfig.json @@ -289,6 +285,13 @@ Standard output: @fluentui/foundation-legacy: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/foundation-legacy/tsconfig.json @fluentui/foundation-legacy: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/foundation-legacy/tsconfig.json" @fluentui/foundation-legacy: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. +@fluentui/react-file-type-icons: yarn run vX.X.X +@fluentui/react-file-type-icons: $ just-scripts ts +@fluentui/react-file-type-icons: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-file-type-icons/tsconfig.json +@fluentui/react-file-type-icons: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/react-file-type-icons/tsconfig.json" +@fluentui/react-file-type-icons: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-file-type-icons/tsconfig.json +@fluentui/react-file-type-icons: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/react-file-type-icons/tsconfig.json" +@fluentui/react-file-type-icons: Done in ?s. @fluentui/react-theme-provider: yarn run vX.X.X @fluentui/react-theme-provider: $ just-scripts ts @fluentui/react-theme-provider: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-theme-provider/tsconfig.json @@ -306,6 +309,9 @@ codesandbox-react-northstar-template: info Visit https://yarnpkg.com/en/docs/cli @fluentui/react-builder: yarn run vX.X.X @fluentui/react-builder: $ /office-ui-fabric-react/node_modules/.bin/just ts @fluentui/react-builder: Done in ?s. +@fluentui/react-northstar-prototypes: yarn run vX.X.X +@fluentui/react-northstar-prototypes: $ /office-ui-fabric-react/node_modules/.bin/just ts +@fluentui/react-northstar-prototypes: Done in ?s. @fluentui/react-avatar: yarn run vX.X.X @fluentui/react-avatar: $ just-scripts ts @fluentui/react-avatar: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-avatar/tsconfig.json @@ -327,6 +333,13 @@ codesandbox-react-northstar-template: info Visit https://yarnpkg.com/en/docs/cli @fluentui/react-flex: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-flex/tsconfig.json @fluentui/react-flex: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/react-flex/tsconfig.json" @fluentui/react-flex: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. +@fluentui/react-focus: yarn run vX.X.X +@fluentui/react-focus: $ just-scripts ts +@fluentui/react-focus: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-focus/tsconfig.json +@fluentui/react-focus: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/react-focus/tsconfig.json" +@fluentui/react-focus: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-focus/tsconfig.json +@fluentui/react-focus: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/react-focus/tsconfig.json" +@fluentui/react-focus: Done in ?s. @fluentui/react-image: yarn run vX.X.X @fluentui/react-image: $ just-scripts ts @fluentui/react-image: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-image/tsconfig.json @@ -334,13 +347,6 @@ codesandbox-react-northstar-template: info Visit https://yarnpkg.com/en/docs/cli @fluentui/react-image: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-image/tsconfig.json @fluentui/react-image: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/react-image/tsconfig.json" @fluentui/react-image: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. -@fluentui/react-internal: yarn run vX.X.X -@fluentui/react-internal: $ just-scripts ts -@fluentui/react-internal: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-internal/tsconfig.json -@fluentui/react-internal: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/react-internal/tsconfig.json" -@fluentui/react-internal: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-internal/tsconfig.json -@fluentui/react-internal: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/react-internal/tsconfig.json" -@fluentui/react-internal: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. @fluentui/react-text: yarn run vX.X.X @fluentui/react-text: $ just-scripts ts @fluentui/react-text: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-text/tsconfig.json @@ -351,6 +357,16 @@ codesandbox-react-northstar-template: info Visit https://yarnpkg.com/en/docs/cli @fluentui/docs: yarn run vX.X.X @fluentui/docs: $ /office-ui-fabric-react/node_modules/.bin/just ts @fluentui/docs: Done in ?s. +@fluentui/react-internal: yarn run vX.X.X +@fluentui/react-internal: $ just-scripts ts +@fluentui/react-internal: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-internal/tsconfig.json +@fluentui/react-internal: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/react-internal/tsconfig.json" +@fluentui/react-internal: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-internal/tsconfig.json +@fluentui/react-internal: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/react-internal/tsconfig.json" +@fluentui/react-internal: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. +@fluentui/perf: yarn run vX.X.X +@fluentui/perf: $ /office-ui-fabric-react/node_modules/.bin/just ts +@fluentui/perf: Done in ?s. @fluentui/react-checkbox: yarn run vX.X.X @fluentui/react-checkbox: $ just-scripts ts @fluentui/react-checkbox: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-checkbox/tsconfig.json @@ -364,7 +380,7 @@ codesandbox-react-northstar-template: info Visit https://yarnpkg.com/en/docs/cli @fluentui/react-date-time: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/react-date-time/tsconfig.json" @fluentui/react-date-time: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-date-time/tsconfig.json @fluentui/react-date-time: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/react-date-time/tsconfig.json" -@fluentui/react-date-time: Done in ?s. +@fluentui/react-date-time: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. @fluentui/react-link: yarn run vX.X.X @fluentui/react-link: $ just-scripts ts @fluentui/react-link: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-link/tsconfig.json @@ -385,7 +401,7 @@ codesandbox-react-northstar-template: info Visit https://yarnpkg.com/en/docs/cli @fluentui/react-tabs: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/react-tabs/tsconfig.json" @fluentui/react-tabs: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-tabs/tsconfig.json @fluentui/react-tabs: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/react-tabs/tsconfig.json" -@fluentui/react-tabs: Done in ?s. +@fluentui/react-tabs: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. @fluentui/react-toggle: yarn run vX.X.X @fluentui/react-toggle: $ just-scripts ts @fluentui/react-toggle: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-toggle/tsconfig.json @@ -393,9 +409,6 @@ codesandbox-react-northstar-template: info Visit https://yarnpkg.com/en/docs/cli @fluentui/react-toggle: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-toggle/tsconfig.json @fluentui/react-toggle: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/react-toggle/tsconfig.json" @fluentui/react-toggle: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. -@fluentui/perf: yarn run vX.X.X -@fluentui/perf: $ /office-ui-fabric-react/node_modules/.bin/just ts -@fluentui/perf: Done in ?s. @fluentui/react: yarn run vX.X.X @fluentui/react: $ just-scripts ts @fluentui/react: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react/tsconfig.json @@ -409,7 +422,7 @@ a11y-tests: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/types a11y-tests: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/apps/a11y-tests/tsconfig.json" a11y-tests: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/apps/a11y-tests/tsconfig.json a11y-tests: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/apps/a11y-tests/tsconfig.json" -a11y-tests: Done in ?s. +a11y-tests: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. codesandbox-react-template: yarn run vX.X.X codesandbox-react-template: $ just-scripts ts codesandbox-react-template: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/apps/codesandbox-react-template/tsconfig.json @@ -430,7 +443,7 @@ server-rendered-app: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modu server-rendered-app: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/apps/server-rendered-app/tsconfig.json" server-rendered-app: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/apps/server-rendered-app/tsconfig.json server-rendered-app: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/apps/server-rendered-app/tsconfig.json" -server-rendered-app: Done in ?s. +server-rendered-app: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. test-bundles: yarn run vX.X.X test-bundles: $ just-scripts ts test-bundles: Done in ?s. @@ -447,7 +460,7 @@ todo-app: Done in ?s. @fluentui/azure-themes: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/azure-themes/tsconfig.json" @fluentui/azure-themes: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/azure-themes/tsconfig.json @fluentui/azure-themes: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/azure-themes/tsconfig.json" -@fluentui/azure-themes: Done in ?s. +@fluentui/azure-themes: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. @fluentui/react-cards: yarn run vX.X.X @fluentui/react-cards: $ just-scripts ts @fluentui/react-cards: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-cards/tsconfig.json @@ -461,7 +474,7 @@ todo-app: Done in ?s. @fluentui/react-charting: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/react-charting/tsconfig.json" @fluentui/react-charting: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-charting/tsconfig.json @fluentui/react-charting: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/react-charting/tsconfig.json" -@fluentui/react-charting: Done in ?s. +@fluentui/react-charting: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. @fluentui/react-experiments: yarn run vX.X.X @fluentui/react-experiments: $ just-scripts ts @fluentui/react-experiments: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-experiments/tsconfig.json @@ -476,20 +489,13 @@ todo-app: Done in ?s. @fluentui/react-monaco-editor: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-monaco-editor/tsconfig.json @fluentui/react-monaco-editor: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/react-monaco-editor/tsconfig.json" @fluentui/react-monaco-editor: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. -@fluentui/react-next: yarn run vX.X.X -@fluentui/react-next: $ just-scripts ts -@fluentui/react-next: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-next/tsconfig.json -@fluentui/react-next: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/react-next/tsconfig.json" -@fluentui/react-next: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-next/tsconfig.json -@fluentui/react-next: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/react-next/tsconfig.json" -@fluentui/react-next: Done in ?s. @fluentui/theme-samples: yarn run vX.X.X @fluentui/theme-samples: $ just-scripts ts @fluentui/theme-samples: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/theme-samples/tsconfig.json @fluentui/theme-samples: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/theme-samples/tsconfig.json" @fluentui/theme-samples: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/theme-samples/tsconfig.json @fluentui/theme-samples: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/theme-samples/tsconfig.json" -@fluentui/theme-samples: Done in ?s. +@fluentui/theme-samples: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. @fluentui/e2e: yarn run vX.X.X @fluentui/e2e: $ /office-ui-fabric-react/node_modules/.bin/just ts @fluentui/e2e: Done in ?s. @@ -514,20 +520,13 @@ todo-app: Done in ?s. @fluentui/react-docsite-components: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-docsite-components/tsconfig.json @fluentui/react-docsite-components: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/react-docsite-components/tsconfig.json" @fluentui/react-docsite-components: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. -codesandbox-react-next-template: yarn run vX.X.X -codesandbox-react-next-template: $ just-scripts ts -codesandbox-react-next-template: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/apps/codesandbox-react-next-template/tsconfig.json -codesandbox-react-next-template: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/apps/codesandbox-react-next-template/tsconfig.json" -codesandbox-react-next-template: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/apps/codesandbox-react-next-template/tsconfig.json -codesandbox-react-next-template: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/apps/codesandbox-react-next-template/tsconfig.json" -codesandbox-react-next-template: Done in ?s. @fluentui/storybook: yarn run vX.X.X @fluentui/storybook: $ just-scripts ts @fluentui/storybook: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/storybook/tsconfig.json @fluentui/storybook: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/storybook/tsconfig.json" @fluentui/storybook: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/storybook/tsconfig.json @fluentui/storybook: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/storybook/tsconfig.json" -@fluentui/storybook: Done in ?s. +@fluentui/storybook: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. dom-tests: yarn run vX.X.X dom-tests: $ just-scripts ts dom-tests: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/apps/dom-tests/tsconfig.json @@ -548,7 +547,7 @@ vr-tests: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescr vr-tests: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/apps/vr-tests/tsconfig.json" vr-tests: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/apps/vr-tests/tsconfig.json vr-tests: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/apps/vr-tests/tsconfig.json" -vr-tests: Done in ?s. +vr-tests: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. @fluentui/react-examples: yarn run vX.X.X @fluentui/react-examples: $ just-scripts ts @fluentui/react-examples: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/packages/react-examples/tsconfig.json @@ -562,7 +561,7 @@ vr-tests: Done in ?s. @fluentui/public-docsite-resources: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/apps/public-docsite-resources/tsconfig.json" @fluentui/public-docsite-resources: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/apps/public-docsite-resources/tsconfig.json @fluentui/public-docsite-resources: [XX:XX:XX XM] ■ Executing: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/apps/public-docsite-resources/tsconfig.json" -@fluentui/public-docsite-resources: Done in ?s. +@fluentui/public-docsite-resources: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. @fluentui/public-docsite: yarn run vX.X.X @fluentui/public-docsite: $ just-scripts ts @fluentui/public-docsite: [XX:XX:XX XM] ■ Running /office-ui-fabric-react/node_modules/typescript/lib/tsc.js with /office-ui-fabric-react/apps/public-docsite/tsconfig.json @@ -577,6 +576,8 @@ ssr-tests: Done in ?s. Standard error: +@fluentui/cra-template: [XX:XX:XX XM] x Cannot find config file "null". Please create a file called "just.config.js" in the root of the project next to "package.json". +@fluentui/cra-template: [XX:XX:XX XM] x Command not defined: ts @fluentui/eslint-plugin: [XX:XX:XX XM] x Cannot find config file "null". Please create a file called "just.config.js" in the root of the project next to "package.json". @fluentui/eslint-plugin: [XX:XX:XX XM] x Command not defined: ts @fluentui/noop: [XX:XX:XX XM] x Cannot find config file "null". Please create a file called "just.config.js" in the root of the project next to "package.json". @@ -593,24 +594,16 @@ Standard error: @fluentui/scripts: at ChildProcess.exithandler (child_process.js:308:12) @fluentui/scripts: at ChildProcess.emit (events.js:314:20) @fluentui/scripts: at ChildProcess.EventEmitter.emit (domain.js:506:15) -@fluentui/scripts: at maybeClose (internal/child_process.js:1021:16) -@fluentui/scripts: at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5) +@fluentui/scripts: at maybeClose (internal/child_process.js:1022:16) +@fluentui/scripts: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) @fluentui/scripts: at Process.callbackTrampoline (internal/async_hooks.js:126:14) @fluentui/scripts: [XX:XX:XX XM] x stdout: @fluentui/scripts: [XX:XX:XX XM] x gulp/plugins/gulp-component-menu-behaviors.ts:1:38 - error TS2307: Cannot find module '@fluentui/a11y-testing' or its corresponding type declarations. @fluentui/scripts: 1 import * as behaviorDefinitions from '@fluentui/a11y-testing'; @fluentui/scripts: ~~~~~~~~~~~~~~~~~~~~~~~~ -@fluentui/scripts: gulp/plugins/util/getComponentInfo.ts:145:9 - error TS2322: Type 'Tag[]' is not assignable to type '{ title: string; description: string; type: null; name: string; }[]'. -@fluentui/scripts: Type 'Tag' is not assignable to type '{ title: string; description: string; type: null; name: string; }'. -@fluentui/scripts: Types of property 'type' are incompatible. -@fluentui/scripts: Type 'Type' is not assignable to type 'null'. -@fluentui/scripts: Type 'AllLiteral' is not assignable to type 'null'. -@fluentui/scripts: 145 tags, -@fluentui/scripts: ~~~~ -@fluentui/scripts: gulp/plugins/util/docs-types.ts:49:3 -@fluentui/scripts: 49 tags: { -@fluentui/scripts: ~~~~ -@fluentui/scripts: The expected type comes from property 'tags' which is declared here on type 'ComponentProp' +@fluentui/scripts: gulp/plugins/gulp-doctoc.ts:13:56 - error TS2554: Expected 1-2 arguments, but got 3. +@fluentui/scripts: 13 .then(() => runPrettier([file.path], false, true)) +@fluentui/scripts: ~~~~ @fluentui/scripts: gulp/plugins/util/tsLanguageService.ts:25:18 - error TS2569: Type 'IterableIterator' is not an array type or a string type. Use compiler option '--downlevelIteration' to allow iterating of iterators. @fluentui/scripts: 25 return [...files.keys()]; @fluentui/scripts: ~~~~~~~~~~~~ @@ -633,15 +626,18 @@ Standard error: @fluentui/scripts: publish-beta.js:21:43 - error TS1212: Identifier expected. 'package' is a reserved word in strict mode. @fluentui/scripts: 21 console.log(`Publishing ${chalk.magenta(package.packageName)} in ${packagePath}`); @fluentui/scripts: ~~~~~~~ -@fluentui/scripts: tasks/webpack.ts:43:9 - error TS2794: Expected 1 arguments, but got 0. Did you forget to include 'void' in your type argument to 'Promise'? -@fluentui/scripts: 43 resolve(); +@fluentui/scripts: tasks/prettier.ts:4:39 - error TS2559: Type 'true' has no properties in common with type '{ runAsync?: boolean; nonRecursive?: boolean; check?: boolean; }'. +@fluentui/scripts: 4 runPrettierForFolder(process.cwd(), true); +@fluentui/scripts: ~~~~ +@fluentui/scripts: tasks/webpack.ts:67:9 - error TS2794: Expected 1 arguments, but got 0. Did you forget to include 'void' in your type argument to 'Promise'? +@fluentui/scripts: 67 resolve(); @fluentui/scripts: ~~~~~~~~~ @fluentui/scripts: ../node_modules/typescript/lib/lib.es2015.promise.d.ts:33:34 @fluentui/scripts: 33 new (executor: (resolve: (value: T | PromiseLike) => void, reject: (reason?: any) => void) => void): Promise; @fluentui/scripts: ~~~~~~~~~~~~~~~~~~~~~~~~~ @fluentui/scripts: An argument for 'value' was not provided. -@fluentui/scripts: tasks/webpack.ts:61:7 - error TS2794: Expected 1 arguments, but got 0. Did you forget to include 'void' in your type argument to 'Promise'? -@fluentui/scripts: 61 resolve(); +@fluentui/scripts: tasks/webpack.ts:85:7 - error TS2794: Expected 1 arguments, but got 0. Did you forget to include 'void' in your type argument to 'Promise'? +@fluentui/scripts: 85 resolve(); @fluentui/scripts: ~~~~~~~~~ @fluentui/scripts: ../node_modules/typescript/lib/lib.es2015.promise.d.ts:33:34 @fluentui/scripts: 33 new (executor: (resolve: (value: T | PromiseLike) => void, reject: (reason?: any) => void) => void): Promise; @@ -653,29 +649,332 @@ Standard error: @fluentui/scripts: update-package-versions.js:47:12 - error TS1250: Function declarations are not allowed inside blocks in strict mode when targeting 'ES3' or 'ES5'. @fluentui/scripts: 47 function updateDependencies(deps) { @fluentui/scripts: ~~~~~~~~~~~~~~~~~~ -@fluentui/scripts: Found 12 errors. +@fluentui/scripts: Found 13 errors. @fluentui/scripts: [XX:XX:XX XM] x ------------------------------------ @fluentui/scripts: [XX:XX:XX XM] x Error previously detected. See above for error messages. @fluentui/scripts: [XX:XX:XX XM] x Other tasks that did not complete: [ts:commonjs] @fluentui/scripts: error Command failed with exit code 1. +@fluentui/a11y-testing: [XX:XX:XX XM] x Error detected while running '_wrapFunction' +@fluentui/a11y-testing: [XX:XX:XX XM] x ------------------------------------ +@fluentui/a11y-testing: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/a11y-testing/tsconfig.json" +@fluentui/a11y-testing: at ChildProcess.exithandler (child_process.js:308:12) +@fluentui/a11y-testing: at ChildProcess.emit (events.js:314:20) +@fluentui/a11y-testing: at ChildProcess.EventEmitter.emit (domain.js:506:15) +@fluentui/a11y-testing: at maybeClose (internal/child_process.js:1022:16) +@fluentui/a11y-testing: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) +@fluentui/a11y-testing: at Process.callbackTrampoline (internal/async_hooks.js:126:14) +@fluentui/a11y-testing: [XX:XX:XX XM] x stdout: +@fluentui/a11y-testing: [XX:XX:XX XM] x src/definitions/Button/toggleButtonBehaviorDefinition.ts:13:3 - error TS2343: This syntax requires an imported helper named '__spreadArray' which does not exist in 'tslib'. Consider upgrading your version of 'tslib'. +@fluentui/a11y-testing: 13 ...buttonBehaviorDefinition, +@fluentui/a11y-testing: ~~~~~~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/a11y-testing: Found 1 error. +@fluentui/a11y-testing: [XX:XX:XX XM] x ------------------------------------ +@fluentui/a11y-testing: [XX:XX:XX XM] x Error previously detected. See above for error messages. +@fluentui/a11y-testing: [XX:XX:XX XM] x Other tasks that did not complete: [ts:esm] +@fluentui/a11y-testing: error Command failed with exit code 1. +@fluentui/codemods: [XX:XX:XX XM] x Error detected while running '_wrapFunction' +@fluentui/codemods: [XX:XX:XX XM] x ------------------------------------ +@fluentui/codemods: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/codemods/tsconfig.json" +@fluentui/codemods: at ChildProcess.exithandler (child_process.js:308:12) +@fluentui/codemods: at ChildProcess.emit (events.js:314:20) +@fluentui/codemods: at ChildProcess.EventEmitter.emit (domain.js:506:15) +@fluentui/codemods: at maybeClose (internal/child_process.js:1022:16) +@fluentui/codemods: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) +@fluentui/codemods: at Process.callbackTrampoline (internal/async_hooks.js:126:14) +@fluentui/codemods: [XX:XX:XX XM] x stdout: +@fluentui/codemods: [XX:XX:XX XM] x src/codeMods/mods/configMod/configMod.mod.ts:52:5 - error TS2322: Type '(file: SourceFile) => CodeModResult | Err, { error: any; }>' is not assignable to type '(file: SourceFile) => CodeModResult'. +@fluentui/codemods: Type 'CodeModResult | Err, { error: any; }>' is not assignable to type 'CodeModResult'. +@fluentui/codemods: Type 'Err, { error: any; }>' is not assignable to type 'CodeModResult'. +@fluentui/codemods: Type 'Err, { error: any; }>' is not assignable to type 'Err'. +@fluentui/codemods: Type 'ModResult | Result' is not assignable to type 'ModResult'. +@fluentui/codemods: Type 'Err' is not assignable to type 'ModResult'. +@fluentui/codemods: 52 run: (file: SourceFile) => { +@fluentui/codemods: ~~~ +@fluentui/codemods: src/codeMods/types.ts:34:3 +@fluentui/codemods: 34 run: (file: T) => CodeModResult; +@fluentui/codemods: ~~~ +@fluentui/codemods: The expected type comes from property 'run' which is declared here on type 'CodeMod' +@fluentui/codemods: src/codeMods/mods/configMod/configMod.mod.ts:70:3 - error TS2322: Type '(mod: RenamePropModType) => (file: SourceFile) => Ok<{ logs: string[]; }, NoOp | ModError> | Err, { ...; }>' is not assignable to type '(mod: any) => (file: SourceFile) => CodeModResult'. +@fluentui/codemods: Call signature return types '(file: SourceFile) => Ok<{ logs: string[]; }, NoOp | ModError> | Err, { ...; }>' and '(file: SourceFile) => CodeModResult' are incompatible. +@fluentui/codemods: Type 'Ok<{ logs: string[]; }, NoOp | ModError> | Err, { logs: string[]; }>' is not assignable to type 'CodeModResult'. +@fluentui/codemods: Type 'Err, { logs: string[]; }>' is not assignable to type 'CodeModResult'. +@fluentui/codemods: Type 'Err, { logs: string[]; }>' is not assignable to type 'Err'. +@fluentui/codemods: Type 'ModResult | Result' is not assignable to type 'ModResult'. +@fluentui/codemods: Type 'Err' is not assignable to type 'ModResult'. +@fluentui/codemods: 70 renameProp: (mod: RenamePropModType) => { +@fluentui/codemods: ~~~~~~~~~~ +@fluentui/codemods: src/codeMods/types.ts:85:3 +@fluentui/codemods: 85 [key: string]: (mod: any) => (file: SourceFile) => CodeModResult; +@fluentui/codemods: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/codemods: The expected type comes from this index signature. +@fluentui/codemods: src/codeMods/mods/configMod/configMod.mod.ts:109:41 - error TS2343: This syntax requires an imported helper named '__spreadArray' which does not exist in 'tslib'. Consider upgrading your version of 'tslib'. +@fluentui/codemods: 109 return Ok({ logs: v.logs.concat(...r.logs) }); +@fluentui/codemods: ~~~~~~~~~ +@fluentui/codemods: src/codeMods/mods/configMod/configMod.mod.ts:128:3 - error TS2322: Type '(file: SourceFile) => CodeModResult | Err, { logs: string[]; }>' is not assignable to type '(file: SourceFile) => CodeModResult'. +@fluentui/codemods: Type 'CodeModResult | Err, { logs: string[]; }>' is not assignable to type 'CodeModResult'. +@fluentui/codemods: Type 'Err, { logs: string[]; }>' is not assignable to type 'CodeModResult'. +@fluentui/codemods: Type 'Err, { logs: string[]; }>' is not assignable to type 'Err'. +@fluentui/codemods: Type 'ModResult | Result' is not assignable to type 'ModResult'. +@fluentui/codemods: Type 'Err' is not assignable to type 'ModResult'. +@fluentui/codemods: 128 run: (file: SourceFile) => { +@fluentui/codemods: ~~~ +@fluentui/codemods: src/codeMods/types.ts:34:3 +@fluentui/codemods: 34 run: (file: T) => CodeModResult; +@fluentui/codemods: ~~~ +@fluentui/codemods: The expected type comes from property 'run' which is declared here on type 'CodeMod' +@fluentui/codemods: src/codeMods/mods/configMod/configMod.mod.ts:147:27 - error TS2345: Argument of type '(result: CodeModResult, result2: CodeModResult) => Result<{ logs: string[]; } | Result<{ logs: string[]; }, NoOp | ModError>, NoOp | ModError>' is not assignable to parameter of type '(previousValue: CodeModResult, currentValue: CodeModResult, currentIndex: number, array: CodeModResult[]) => CodeModResult'. +@fluentui/codemods: Type 'Result<{ logs: string[]; } | Result<{ logs: string[]; }, NoOp | ModError>, NoOp | ModError>' is not assignable to type 'CodeModResult'. +@fluentui/codemods: Type 'Err<{ logs: string[]; } | Result<{ logs: string[]; }, NoOp | ModError>, NoOp | ModError>' is not assignable to type 'CodeModResult'. +@fluentui/codemods: Type 'Err<{ logs: string[]; } | Result<{ logs: string[]; }, NoOp | ModError>, NoOp | ModError>' is not assignable to type 'Err'. +@fluentui/codemods: Type '{ logs: string[]; } | Result<{ logs: string[]; }, NoOp | ModError>' is not assignable to type 'ModResult'. +@fluentui/codemods: Property 'logs' is missing in type 'Ok<{ logs: string[]; }, NoOp | ModError>' but required in type 'ModResult'. +@fluentui/codemods: 147 return results.reduce(combineResults); +@fluentui/codemods: ~~~~~~~~~~~~~~ +@fluentui/codemods: src/codeMods/types.ts:5:3 +@fluentui/codemods: 5 logs: string[]; +@fluentui/codemods: ~~~~ +@fluentui/codemods: 'logs' is declared here. +@fluentui/codemods: src/codeMods/mods/officeToFluentImport/officeToFluentImport.mod.ts:26:3 - error TS2322: Type '(file: SourceFile) => Result, NoOp | ModError>' is not assignable to type '(file: SourceFile) => CodeModResult'. +@fluentui/codemods: Type 'Result, NoOp | ModError>' is not assignable to type 'CodeModResult'. +@fluentui/codemods: Type 'Err, NoOp | ModError>' is not assignable to type 'CodeModResult'. +@fluentui/codemods: Type 'Err, NoOp | ModError>' is not assignable to type 'Err'. +@fluentui/codemods: Type 'ModResult | Result' is not assignable to type 'ModResult'. +@fluentui/codemods: Type 'Err' is not assignable to type 'ModResult'. +@fluentui/codemods: 26 run: (file: SourceFile) => { +@fluentui/codemods: ~~~ +@fluentui/codemods: src/codeMods/types.ts:34:3 +@fluentui/codemods: 34 run: (file: T) => CodeModResult; +@fluentui/codemods: ~~~ +@fluentui/codemods: The expected type comes from property 'run' which is declared here on type 'CodeMod' +@fluentui/codemods: src/codeMods/mods/officeToFluentImport/officeToFluentImport.mod.ts:37:27 - error TS2345: Argument of type '(result: CodeModResult, result2: CodeModResult) => Result<{ logs: string[]; } | Result<{ logs: string[]; }, NoOp | ModError>, NoOp | ModError>' is not assignable to parameter of type '(previousValue: Result<{ logs: string[]; }, NoOp | ModError>, currentValue: Result<{ logs: string[]; }, NoOp | ModError>, currentIndex: number, array: Result<...>[]) => Result<...>'. +@fluentui/codemods: Type 'Result<{ logs: string[]; } | Result<{ logs: string[]; }, NoOp | ModError>, NoOp | ModError>' is not assignable to type 'Result<{ logs: string[]; }, NoOp | ModError>'. +@fluentui/codemods: Type 'Err<{ logs: string[]; } | Result<{ logs: string[]; }, NoOp | ModError>, NoOp | ModError>' is not assignable to type 'Result<{ logs: string[]; }, NoOp | ModError>'. +@fluentui/codemods: Type 'Err<{ logs: string[]; } | Result<{ logs: string[]; }, NoOp | ModError>, NoOp | ModError>' is not assignable to type 'Err<{ logs: string[]; }, NoOp | ModError>'. +@fluentui/codemods: Type '{ logs: string[]; } | Result<{ logs: string[]; }, NoOp | ModError>' is not assignable to type '{ logs: string[]; }'. +@fluentui/codemods: Property 'logs' is missing in type 'Ok<{ logs: string[]; }, NoOp | ModError>' but required in type '{ logs: string[]; }'. +@fluentui/codemods: 37 return v.reduce(combineResults); +@fluentui/codemods: ~~~~~~~~~~~~~~ +@fluentui/codemods: src/codeMods/mods/officeToFluentImport/officeToFluentImport.mod.ts:31:13 +@fluentui/codemods: 31 logs: [i.getModuleSpecifierValue()], +@fluentui/codemods: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/codemods: 'logs' is declared here. +@fluentui/codemods: src/codeMods/mods/oldToNewButton/oldToNewButton.mod.ts:7:3 - error TS2322: Type '(file: SourceFile) => Result<{ logs: string[]; }, NoOp> | Err, { error: any; }>' is not assignable to type '(file: SourceFile) => CodeModResult'. +@fluentui/codemods: Type 'Result<{ logs: string[]; }, NoOp> | Err, { error: any; }>' is not assignable to type 'CodeModResult'. +@fluentui/codemods: Type 'Err, { error: any; }>' is not assignable to type 'CodeModResult'. +@fluentui/codemods: Type 'Err, { error: any; }>' is not assignable to type 'Err'. +@fluentui/codemods: Type 'ModResult | Result' is not assignable to type 'ModResult'. +@fluentui/codemods: Type 'Err' is not assignable to type 'ModResult'. +@fluentui/codemods: 7 run: (file: SourceFile) => { +@fluentui/codemods: ~~~ +@fluentui/codemods: src/codeMods/types.ts:34:3 +@fluentui/codemods: 34 run: (file: T) => CodeModResult; +@fluentui/codemods: ~~~ +@fluentui/codemods: The expected type comes from property 'run' which is declared here on type 'CodeMod' +@fluentui/codemods: src/codeMods/mods/personaToAvatar/personaToAvatar.mod.ts:165:3 - error TS2322: Type '(file: SourceFile) => Err, { error: any; }> | Ok<{ logs: string[]; }, NoOp | ModError>' is not assignable to type '(file: SourceFile) => CodeModResult'. +@fluentui/codemods: Type 'Err, { error: any; }> | Ok<{ logs: string[]; }, NoOp | ModError>' is not assignable to type 'CodeModResult'. +@fluentui/codemods: Type 'Err, { error: any; }>' is not assignable to type 'CodeModResult'. +@fluentui/codemods: Type 'Err, { error: any; }>' is not assignable to type 'Err'. +@fluentui/codemods: Type 'ModResult | Result' is not assignable to type 'ModResult'. +@fluentui/codemods: Type 'Err' is not assignable to type 'ModResult'. +@fluentui/codemods: 165 run: (file: SourceFile) => { +@fluentui/codemods: ~~~ +@fluentui/codemods: src/codeMods/types.ts:34:3 +@fluentui/codemods: 34 run: (file: T) => CodeModResult; +@fluentui/codemods: ~~~ +@fluentui/codemods: The expected type comes from property 'run' which is declared here on type 'CodeMod' +@fluentui/codemods: src/codeMods/utilities/imports.ts:12:5 - error TS2322: Type 'Err, { logs: string[]; }>' is not assignable to type 'Result'. +@fluentui/codemods: Type 'Err, { logs: string[]; }>' is not assignable to type 'Err'. +@fluentui/codemods: Type 'ModResult | Result' is not assignable to type 'ModResult'. +@fluentui/codemods: Property 'logs' is missing in type 'Err' but required in type 'ModResult'. +@fluentui/codemods: 12 return Err({ logs: ['No matching imports could be found.'] }); +@fluentui/codemods: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/codemods: src/codeMods/types.ts:5:3 +@fluentui/codemods: 5 logs: string[]; +@fluentui/codemods: ~~~~ +@fluentui/codemods: 'logs' is declared here. +@fluentui/codemods: src/codeMods/utilities/imports.ts:73:3 - error TS2322: Type 'Err, { logs: string[]; }>' is not assignable to type 'ModFunctionResult'. +@fluentui/codemods: Type 'Err, { logs: string[]; }>' is not assignable to type 'Err'. +@fluentui/codemods: Type 'ImportDeclaration | Result' is not assignable to type 'ImportDeclaration'. +@fluentui/codemods: Type 'Err' is missing the following properties from type 'ImportDeclaration': setModuleSpecifier, getModuleSpecifier, getModuleSpecifierValue, getModuleSpecifierSourceFileOrThrow, and 133 more. +@fluentui/codemods: 73 return Err({ logs: ['Named import is not present in module'] }); +@fluentui/codemods: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/codemods: src/codeMods/utilities/transforms.ts:42:3 - error TS2322: Type '(element: JsxExpression | JsxOpeningElement | JsxSelfClosingElement, toRename: string, replacementName: string) => Ok | Err, { logs: string[]; }>' is not assignable to type 'PropTransform'. +@fluentui/codemods: Type 'Ok | Err, { logs: string[]; }>' is not assignable to type 'Result'. +@fluentui/codemods: Type 'Err, { logs: string[]; }>' is not assignable to type 'Result'. +@fluentui/codemods: Type 'Err, { logs: string[]; }>' is not assignable to type 'Err'. +@fluentui/codemods: Type 'string | Result' is not assignable to type 'string'. +@fluentui/codemods: Type 'Err' is not assignable to type 'string'. +@fluentui/codemods: 42 return ( +@fluentui/codemods: ~~~~~~~~ +@fluentui/codemods: 43 element: JsxExpression | JsxOpeningElement | JsxSelfClosingElement, +@fluentui/codemods: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/codemods: ... +@fluentui/codemods: 66 return Ok('No transform args applied, no changes made.'); +@fluentui/codemods: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/codemods: 67 }; +@fluentui/codemods: ~~~~ +@fluentui/codemods: src/codeMods/utilities/transforms.ts:73:3 - error TS2322: Type '(element: JsxExpression | JsxOpeningElement | JsxSelfClosingElement, toRename: string, replacementName: string) => Ok | Err, { logs: string[]; }>' is not assignable to type 'PropTransform'. +@fluentui/codemods: Type 'Ok | Err, { logs: string[]; }>' is not assignable to type 'Result'. +@fluentui/codemods: Type 'Err, { logs: string[]; }>' is not assignable to type 'Result'. +@fluentui/codemods: Type 'Err, { logs: string[]; }>' is not assignable to type 'Err'. +@fluentui/codemods: Type 'string | Result' is not assignable to type 'string'. +@fluentui/codemods: Type 'Err' is not assignable to type 'string'. +@fluentui/codemods: 73 return ( +@fluentui/codemods: ~~~~~~~~ +@fluentui/codemods: 74 element: JsxExpression | JsxOpeningElement | JsxSelfClosingElement, +@fluentui/codemods: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/codemods: ... +@fluentui/codemods: 97 return Ok('No transform args applied, no changes made.'); +@fluentui/codemods: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/codemods: 98 }; +@fluentui/codemods: ~~~~ +@fluentui/codemods: src/codeMods/utilities/transforms.ts:104:3 - error TS2322: Type '(element: JsxExpression | JsxOpeningElement | JsxSelfClosingElement, toRename: string, replacementName: string) => Ok | Err, { logs: string[]; }>' is not assignable to type 'PropTransform'. +@fluentui/codemods: Type 'Ok | Err, { logs: string[]; }>' is not assignable to type 'Result'. +@fluentui/codemods: Type 'Err, { logs: string[]; }>' is not assignable to type 'Result'. +@fluentui/codemods: Type 'Err, { logs: string[]; }>' is not assignable to type 'Err'. +@fluentui/codemods: Type 'string | Result' is not assignable to type 'string'. +@fluentui/codemods: Type 'Err' is not assignable to type 'string'. +@fluentui/codemods: 104 return ( +@fluentui/codemods: ~~~~~~~~ +@fluentui/codemods: 105 element: JsxExpression | JsxOpeningElement | JsxSelfClosingElement, +@fluentui/codemods: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/codemods: ... +@fluentui/codemods: 128 return Ok('No transform args applied, no changes made.'); +@fluentui/codemods: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/codemods: 129 }; +@fluentui/codemods: ~~~~ +@fluentui/codemods: src/codeMods/utilities/transforms.ts:136:3 - error TS2322: Type '(element: JsxExpression | JsxOpeningElement | JsxSelfClosingElement, toRename: string, replacementName: string) => Ok | Err, { logs: string[]; }>' is not assignable to type 'PropTransform'. +@fluentui/codemods: Type 'Ok | Err, { logs: string[]; }>' is not assignable to type 'Result'. +@fluentui/codemods: Type 'Err, { logs: string[]; }>' is not assignable to type 'Result'. +@fluentui/codemods: Type 'Err, { logs: string[]; }>' is not assignable to type 'Err'. +@fluentui/codemods: Type 'string | Result' is not assignable to type 'string'. +@fluentui/codemods: Type 'Err' is not assignable to type 'string'. +@fluentui/codemods: 136 return ( +@fluentui/codemods: ~~~~~~~~ +@fluentui/codemods: 137 element: JsxExpression | JsxOpeningElement | JsxSelfClosingElement, +@fluentui/codemods: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/codemods: ... +@fluentui/codemods: 154 } +@fluentui/codemods: ~~~~~ +@fluentui/codemods: 155 }; +@fluentui/codemods: ~~~~ +@fluentui/codemods: src/command.ts:120:5 - error TS2322: Type 'Err, { error: Error; }>' is not assignable to type 'Result'. +@fluentui/codemods: Type 'Err, { error: Error; }>' is not assignable to type 'Err'. +@fluentui/codemods: Type 'ModRunnerConfigType | Result' is not assignable to type 'ModRunnerConfigType'. +@fluentui/codemods: Type 'Err' is missing the following properties from type 'ModRunnerConfigType': stringFilters, regexFilters, includeMods +@fluentui/codemods: 120 return Err({ error: new Error('Error, could not locate correct config file.') }); +@fluentui/codemods: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/codemods: src/helpers/tests/result.test.ts:23:24 - error TS2322: Type 'Err, number>' is not assignable to type 'Result'. +@fluentui/codemods: Type 'Err, number>' is not assignable to type 'Err'. +@fluentui/codemods: Type 'number | Result' is not assignable to type 'number'. +@fluentui/codemods: Type 'Err' is not assignable to type 'number'. +@fluentui/codemods: 23 .errChain(v => Err(7)) +@fluentui/codemods: ~~~~~~ +@fluentui/codemods: src/helpers/result.ts:44:46 +@fluentui/codemods: 44 public errChain(this: Result, fn: (v: E) => Result): Result { +@fluentui/codemods: ~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/codemods: The expected type comes from the return type of this signature. +@fluentui/codemods: src/modRunner/runnerUtilities.ts:28:9 - error TS2345: Argument of type '(err: NoOp | ModError) => Err, { modName: string; error: string | Error; }> | Ok<...>' is not assignable to parameter of type '(v: NoOp | ModError) => Result'. +@fluentui/codemods: Type 'Err, { modName: string; error: string | Error; }> | Ok<{ logs: string[]; modName: string; }, ErrorResult>' is not assignable to type 'Result'. +@fluentui/codemods: Type 'Err, { modName: string; error: string | Error; }>' is not assignable to type 'Result'. +@fluentui/codemods: Type 'Err, { modName: string; error: string | Error; }>' is not assignable to type 'Err'. +@fluentui/codemods: Type 'RunResult | Result' is not assignable to type 'RunResult'. +@fluentui/codemods: Type 'Err' is missing the following properties from type 'RunResult': modName, logs +@fluentui/codemods: 28 err => { +@fluentui/codemods: ~~~~~~~~ +@fluentui/codemods: src/modRunner/runnerUtilities.ts:52:5 - error TS2322: Type 'Err, { error: any; }>' is not assignable to type 'CodeModResult'. +@fluentui/codemods: Type 'Err, { error: any; }>' is not assignable to type 'Err'. +@fluentui/codemods: Type 'ModResult | Result' is not assignable to type 'ModResult'. +@fluentui/codemods: Property 'logs' is missing in type 'Err' but required in type 'ModResult'. +@fluentui/codemods: 52 result = Err({ error: e }); +@fluentui/codemods: ~~~~~~ +@fluentui/codemods: src/codeMods/types.ts:5:3 +@fluentui/codemods: 5 logs: string[]; +@fluentui/codemods: ~~~~ +@fluentui/codemods: 'logs' is declared here. +@fluentui/codemods: src/modRunner/tests/mocks/MockMods/CodeMod.mock.ts:4:3 - error TS2322: Type '() => Err, { reason: number; logs: never[]; }>' is not assignable to type '(file: string) => CodeModResult'. +@fluentui/codemods: Type 'Err, { reason: number; logs: never[]; }>' is not assignable to type 'CodeModResult'. +@fluentui/codemods: Type 'Err, { reason: number; logs: never[]; }>' is not assignable to type 'Err'. +@fluentui/codemods: Type 'ModResult | Result' is not assignable to type 'ModResult'. +@fluentui/codemods: Type 'Err' is not assignable to type 'ModResult'. +@fluentui/codemods: 4 run: () => { +@fluentui/codemods: ~~~ +@fluentui/codemods: src/codeMods/types.ts:34:3 +@fluentui/codemods: 34 run: (file: T) => CodeModResult; +@fluentui/codemods: ~~~ +@fluentui/codemods: The expected type comes from property 'run' which is declared here on type 'CodeMod' +@fluentui/codemods: Found 20 errors. +@fluentui/codemods: [XX:XX:XX XM] x ------------------------------------ +@fluentui/codemods: [XX:XX:XX XM] x Error previously detected. See above for error messages. +@fluentui/codemods: [XX:XX:XX XM] x Other tasks that did not complete: [ts:esm] +@fluentui/codemods: error Command failed with exit code 1. +@fluentui/example-data: [XX:XX:XX XM] x Error detected while running '_wrapFunction' +@fluentui/example-data: [XX:XX:XX XM] x ------------------------------------ +@fluentui/example-data: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/example-data/tsconfig.json" +@fluentui/example-data: at ChildProcess.exithandler (child_process.js:308:12) +@fluentui/example-data: at ChildProcess.emit (events.js:314:20) +@fluentui/example-data: at ChildProcess.EventEmitter.emit (domain.js:506:15) +@fluentui/example-data: at maybeClose (internal/child_process.js:1022:16) +@fluentui/example-data: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) +@fluentui/example-data: at Process.callbackTrampoline (internal/async_hooks.js:126:14) +@fluentui/example-data: [XX:XX:XX XM] x stdout: +@fluentui/example-data: [XX:XX:XX XM] x src/lorem.ts:11:11 - error TS2343: This syntax requires an imported helper named '__spreadArray' which does not exist in 'tslib'. Consider upgrading your version of 'tslib'. +@fluentui/example-data: 11 return [...Array(wordCount)] +@fluentui/example-data: ~~~~~~~~~~~~~~~~~~~ +@fluentui/example-data: Found 1 error. +@fluentui/example-data: [XX:XX:XX XM] x ------------------------------------ +@fluentui/example-data: [XX:XX:XX XM] x Error previously detected. See above for error messages. +@fluentui/example-data: [XX:XX:XX XM] x Other tasks that did not complete: [ts:esm] +@fluentui/example-data: error Command failed with exit code 1. +@fluentui/react-conformance: [XX:XX:XX XM] x Error detected while running '_wrapFunction' +@fluentui/react-conformance: [XX:XX:XX XM] x ------------------------------------ +@fluentui/react-conformance: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/react-conformance/tsconfig.json" +@fluentui/react-conformance: at ChildProcess.exithandler (child_process.js:308:12) +@fluentui/react-conformance: at ChildProcess.emit (events.js:314:20) +@fluentui/react-conformance: at ChildProcess.EventEmitter.emit (domain.js:506:15) +@fluentui/react-conformance: at maybeClose (internal/child_process.js:1022:16) +@fluentui/react-conformance: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) +@fluentui/react-conformance: at Process.callbackTrampoline (internal/async_hooks.js:126:14) +@fluentui/react-conformance: [XX:XX:XX XM] x stdout: +@fluentui/react-conformance: [XX:XX:XX XM] x src/utils/getComponent.ts:25:33 - error TS2343: This syntax requires an imported helper named '__spreadArray' which does not exist in 'tslib'. Consider upgrading your version of 'tslib'. +@fluentui/react-conformance: 25 const helperComponentNames = [...helperComponents, ...(wrapperComponent ? [wrapperComponent] : [])].map( +@fluentui/react-conformance: ~~~~~~~~~~~~~~~~~~~ +@fluentui/react-conformance: Found 1 error. +@fluentui/react-conformance: [XX:XX:XX XM] x ------------------------------------ +@fluentui/react-conformance: [XX:XX:XX XM] x Error previously detected. See above for error messages. +@fluentui/react-conformance: [XX:XX:XX XM] x Other tasks that did not complete: [ts:esm] +@fluentui/react-conformance: error Command failed with exit code 1. @fluentui/webpack-utilities: [XX:XX:XX XM] x Error detected while running 'ts:esm' @fluentui/webpack-utilities: [XX:XX:XX XM] x ------------------------------------ @fluentui/webpack-utilities: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/webpack-utilities/tsconfig.json" @fluentui/webpack-utilities: at ChildProcess.exithandler (child_process.js:308:12) @fluentui/webpack-utilities: at ChildProcess.emit (events.js:314:20) @fluentui/webpack-utilities: at ChildProcess.EventEmitter.emit (domain.js:506:15) -@fluentui/webpack-utilities: at maybeClose (internal/child_process.js:1021:16) -@fluentui/webpack-utilities: at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5) +@fluentui/webpack-utilities: at maybeClose (internal/child_process.js:1022:16) +@fluentui/webpack-utilities: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) @fluentui/webpack-utilities: at Process.callbackTrampoline (internal/async_hooks.js:126:14) @fluentui/webpack-utilities: [XX:XX:XX XM] x stdout: -@fluentui/webpack-utilities: [XX:XX:XX XM] x src/fabricAsyncLoaderInclude.ts:7:1 - error TS1203: Export assignment cannot be used when targeting ECMAScript modules. Consider using 'export default' or another module format instead. +@fluentui/webpack-utilities: [XX:XX:XX XM] x src/fabricAsyncLoader.ts:19:13 - error TS2769: No overload matches this call. +@fluentui/webpack-utilities: Overload 1 of 2, '(predicate: (value: `/* ${string}: ${string} */` | null, index: number, array: (`/* ${string}: ${string} */` | null)[]) => value is `/* ${string}: ${string} */` | null, thisArg?: any): (`/* ${string}: ${string} */` | null)[]', gave the following error. +@fluentui/webpack-utilities: Argument of type '(s: string) => string' is not assignable to parameter of type '(value: `/* ${string}: ${string} */` | null, index: number, array: (`/* ${string}: ${string} */` | null)[]) => value is `/* ${string}: ${string} */` | null'. +@fluentui/webpack-utilities: Types of parameters 's' and 'value' are incompatible. +@fluentui/webpack-utilities: Type '`/* ${string}: ${string} */` | null' is not assignable to type 'string'. +@fluentui/webpack-utilities: Type 'null' is not assignable to type 'string'. +@fluentui/webpack-utilities: Overload 2 of 2, '(predicate: (value: `/* ${string}: ${string} */` | null, index: number, array: (`/* ${string}: ${string} */` | null)[]) => unknown, thisArg?: any): (`/* ${string}: ${string} */` | null)[]', gave the following error. +@fluentui/webpack-utilities: Argument of type '(s: string) => string' is not assignable to parameter of type '(value: `/* ${string}: ${string} */` | null, index: number, array: (`/* ${string}: ${string} */` | null)[]) => unknown'. +@fluentui/webpack-utilities: Types of parameters 's' and 'value' are incompatible. +@fluentui/webpack-utilities: Type '`/* ${string}: ${string} */` | null' is not assignable to type 'string'. +@fluentui/webpack-utilities: Type 'null' is not assignable to type 'string'. +@fluentui/webpack-utilities: 19 .filter((s: string) => s) +@fluentui/webpack-utilities: ~~~~~~~~~~~~~~~~ +@fluentui/webpack-utilities: src/fabricAsyncLoaderInclude.ts:7:1 - error TS1203: Export assignment cannot be used when targeting ECMAScript modules. Consider using 'export default' or another module format instead. @fluentui/webpack-utilities: 7 export = (input: string) => @fluentui/webpack-utilities: ~~~~~~~~~~~~~~~~~~~~~~~~~~~ @fluentui/webpack-utilities: 8 input.match(/@fluentui[\\/]react-internal[\\/]lib[\\/]components[\\/]ContextualMenu[\\/]ContextualMenu.js/) || @fluentui/webpack-utilities: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @fluentui/webpack-utilities: 9 input.match(/@fluentui[\\/]react-internal[\\/]lib[\\/]components[\\/]Callout[\\/]Callout.js/); @fluentui/webpack-utilities: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -@fluentui/webpack-utilities: Found 1 error. +@fluentui/webpack-utilities: Found 2 errors. @fluentui/webpack-utilities: [XX:XX:XX XM] x ------------------------------------ @fluentui/webpack-utilities: [XX:XX:XX XM] x Error previously detected. See above for error messages. @fluentui/webpack-utilities: [XX:XX:XX XM] x Other tasks that did not complete: [ts:commonjs] @@ -698,26 +997,108 @@ Standard error: @fluentui/styles: [XX:XX:XX XM] x Command not defined: ts @fluentui/accessibility: [XX:XX:XX XM] x Cannot find config file "null". Please create a file called "just.config.js" in the root of the project next to "package.json". @fluentui/accessibility: [XX:XX:XX XM] x Command not defined: ts -@fluentui/merge-styles: [XX:XX:XX XM] x Error detected while running '_wrapFunction' +@fluentui/date-time-utilities: [XX:XX:XX XM] x Error detected while running '_wrapFunction' +@fluentui/date-time-utilities: [XX:XX:XX XM] x ------------------------------------ +@fluentui/date-time-utilities: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/date-time-utilities/tsconfig.json" +@fluentui/date-time-utilities: at ChildProcess.exithandler (child_process.js:308:12) +@fluentui/date-time-utilities: at ChildProcess.emit (events.js:314:20) +@fluentui/date-time-utilities: at ChildProcess.EventEmitter.emit (domain.js:506:15) +@fluentui/date-time-utilities: at maybeClose (internal/child_process.js:1022:16) +@fluentui/date-time-utilities: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) +@fluentui/date-time-utilities: at Process.callbackTrampoline (internal/async_hooks.js:126:14) +@fluentui/date-time-utilities: [XX:XX:XX XM] x stdout: +@fluentui/date-time-utilities: [XX:XX:XX XM] x src/dateGrid/getBoundedDateRange.ts:10:27 - error TS2343: This syntax requires an imported helper named '__spreadArray' which does not exist in 'tslib'. Consider upgrading your version of 'tslib'. +@fluentui/date-time-utilities: 10 let boundedDateRange = [...dateRange]; +@fluentui/date-time-utilities: ~~~~~~~~~~~~ +@fluentui/date-time-utilities: Found 1 error. +@fluentui/date-time-utilities: [XX:XX:XX XM] x ------------------------------------ +@fluentui/date-time-utilities: [XX:XX:XX XM] x Error previously detected. See above for error messages. +@fluentui/date-time-utilities: [XX:XX:XX XM] x Other tasks that did not complete: [ts:esm] +@fluentui/date-time-utilities: error Command failed with exit code 1. +@fluentui/dom-utilities: [XX:XX:XX XM] x Error detected while running 'ts:esm' +@fluentui/dom-utilities: [XX:XX:XX XM] x ------------------------------------ +@fluentui/dom-utilities: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/dom-utilities/tsconfig.json" +@fluentui/dom-utilities: at ChildProcess.exithandler (child_process.js:308:12) +@fluentui/dom-utilities: at ChildProcess.emit (events.js:314:20) +@fluentui/dom-utilities: at ChildProcess.EventEmitter.emit (domain.js:506:15) +@fluentui/dom-utilities: at maybeClose (internal/child_process.js:1022:16) +@fluentui/dom-utilities: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) +@fluentui/dom-utilities: at Process.callbackTrampoline (internal/async_hooks.js:126:14) +@fluentui/dom-utilities: [XX:XX:XX XM] x stdout: +@fluentui/dom-utilities: [XX:XX:XX XM] x src/getChildren.ts:16:21 - error TS2343: This syntax requires an imported helper named '__spreadArray' which does not exist in 'tslib'. Consider upgrading your version of 'tslib'. +@fluentui/dom-utilities: 16 children.push(...parent._virtual.children); +@fluentui/dom-utilities: ~~~~~~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/dom-utilities: Found 1 error. +@fluentui/dom-utilities: [XX:XX:XX XM] x ------------------------------------ +@fluentui/dom-utilities: [XX:XX:XX XM] x Error previously detected. See above for error messages. +@fluentui/dom-utilities: [XX:XX:XX XM] x Other tasks that did not complete: [ts:commonjs] +@fluentui/dom-utilities: error Command failed with exit code 1. +@fluentui/make-styles: [XX:XX:XX XM] x Error detected while running '_wrapFunction' +@fluentui/make-styles: [XX:XX:XX XM] x ------------------------------------ +@fluentui/make-styles: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/make-styles/tsconfig.json" +@fluentui/make-styles: at ChildProcess.exithandler (child_process.js:308:12) +@fluentui/make-styles: at ChildProcess.emit (events.js:314:20) +@fluentui/make-styles: at ChildProcess.EventEmitter.emit (domain.js:506:15) +@fluentui/make-styles: at maybeClose (internal/child_process.js:1022:16) +@fluentui/make-styles: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) +@fluentui/make-styles: at Process.callbackTrampoline (internal/async_hooks.js:126:14) +@fluentui/make-styles: [XX:XX:XX XM] x stdout: +@fluentui/make-styles: [XX:XX:XX XM] x src/runtime/compileCSS.ts:44:7 - error TS2322: Type '`@media ${string} { ${string}${string} { ${string}: ${string}; } }` | `@media ${string} { ${string}${string} { ${string}: ${number}; } }`' is not assignable to type '`${string}${string} { ${string}: ${string}; }` | `${string}${string} { ${string}: ${number}; }`'. +@fluentui/make-styles: Type '`@media ${string} { ${string}${string} { ${string}: ${string}; } }`' is not assignable to type '`${string}${string} { ${string}: ${string}; }` | `${string}${string} { ${string}: ${number}; }`'. +@fluentui/make-styles: Type 'string' is not assignable to type '`${string}${string} { ${string}: ${string}; }` | `${string}${string} { ${string}: ${number}; }`'. +@fluentui/make-styles: Type '`@media ${string} { ${string}${string} { ${string}: ${string}; } }`' is not assignable to type '`${string}${string} { ${string}: ${number}; }`'. +@fluentui/make-styles: 44 cssRule = `@media ${media} { ${cssRule} }`; +@fluentui/make-styles: ~~~~~~~ +@fluentui/make-styles: src/runtime/compileCSS.ts:48:7 - error TS2322: Type '`@supports ${string} { ${string}${string} { ${string}: ${string}; } }` | `@supports ${string} { ${string}${string} { ${string}: ${number}; } }`' is not assignable to type '`${string}${string} { ${string}: ${string}; }` | `${string}${string} { ${string}: ${number}; }`'. +@fluentui/make-styles: Type '`@supports ${string} { ${string}${string} { ${string}: ${string}; } }`' is not assignable to type '`${string}${string} { ${string}: ${string}; }` | `${string}${string} { ${string}: ${number}; }`'. +@fluentui/make-styles: Type 'string' is not assignable to type '`${string}${string} { ${string}: ${string}; }` | `${string}${string} { ${string}: ${number}; }`'. +@fluentui/make-styles: Type '`@supports ${string} { ${string}${string} { ${string}: ${string}; } }`' is not assignable to type '`${string}${string} { ${string}: ${number}; }`'. +@fluentui/make-styles: 48 cssRule = `@supports ${support} { ${cssRule} }`; +@fluentui/make-styles: ~~~~~~~ +@fluentui/make-styles: Found 2 errors. +@fluentui/make-styles: [XX:XX:XX XM] x ------------------------------------ +@fluentui/make-styles: [XX:XX:XX XM] x Error previously detected. See above for error messages. +@fluentui/make-styles: [XX:XX:XX XM] x Other tasks that did not complete: [ts:esm] +@fluentui/make-styles: error Command failed with exit code 1. +@fluentui/merge-styles: [XX:XX:XX XM] x Error detected while running 'ts:esm' @fluentui/merge-styles: [XX:XX:XX XM] x ------------------------------------ -@fluentui/merge-styles: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/merge-styles/tsconfig.json" +@fluentui/merge-styles: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/merge-styles/tsconfig.json" @fluentui/merge-styles: at ChildProcess.exithandler (child_process.js:308:12) @fluentui/merge-styles: at ChildProcess.emit (events.js:314:20) @fluentui/merge-styles: at ChildProcess.EventEmitter.emit (domain.js:506:15) -@fluentui/merge-styles: at maybeClose (internal/child_process.js:1021:16) -@fluentui/merge-styles: at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5) +@fluentui/merge-styles: at maybeClose (internal/child_process.js:1022:16) +@fluentui/merge-styles: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) @fluentui/merge-styles: at Process.callbackTrampoline (internal/async_hooks.js:126:14) @fluentui/merge-styles: [XX:XX:XX XM] x stdout: -@fluentui/merge-styles: [XX:XX:XX XM] x src/mergeStyleSets.test.ts:168:15 - error TS2310: Type 'ISubComponentStyles' recursively references itself as a base type. +@fluentui/merge-styles: [XX:XX:XX XM] x src/concatStyleSets.ts:167:9 - error TS2322: Type '(styleProps: any) => IConcatenatedStyleSet' is not assignable to type 'IStyleFunction'. +@fluentui/merge-styles: Type 'IConcatenatedStyleSet' is not assignable to type 'DeepPartial'. +@fluentui/merge-styles: Property 'subComponentStyles' is incompatible with index signature. +@fluentui/merge-styles: Type '{ [x: string]: IStyleFunction; }' is missing the following properties from type 'DeepPartial[]': length, pop, push, concat, and 16 more. +@fluentui/merge-styles: 167 mergedSubStyles[subCompProp] = (styleProps: any) => { +@fluentui/merge-styles: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/merge-styles: src/mergeStyleSets.test.ts:168:15 - error TS2310: Type 'ISubComponentStyles' recursively references itself as a base type. @fluentui/merge-styles: 168 interface ISubComponentStyles extends IStyleSet { @fluentui/merge-styles: ~~~~~~~~~~~~~~~~~~~ @fluentui/merge-styles: src/mergeStyleSets.test.ts:176:15 - error TS2310: Type 'IStyles' recursively references itself as a base type. @fluentui/merge-styles: 176 interface IStyles extends IStyleSet { @fluentui/merge-styles: ~~~~~~~ -@fluentui/merge-styles: Found 2 errors. +@fluentui/merge-styles: src/mergeStyleSets.test.ts:183:15 - error TS2430: Interface 'IStylesWithStyleObjectAsSubCommponent' incorrectly extends interface 'IStyleSet'. +@fluentui/merge-styles: Type 'IStylesWithStyleObjectAsSubCommponent' is not assignable to type '{ subComponentStyles?: { button: IStyleFunctionOrObject; } | undefined; }'. +@fluentui/merge-styles: The types of 'subComponentStyles.button' are incompatible between these types. +@fluentui/merge-styles: Type 'Partial>' is not assignable to type 'IStyleFunctionOrObject'. +@fluentui/merge-styles: Type 'Partial>' is not assignable to type 'DeepPartial'. +@fluentui/merge-styles: Property 'root' is incompatible with index signature. +@fluentui/merge-styles: Type 'string | false | IRawStyle | IStyleBaseArray | null' is not assignable to type 'DeepPartial[] | undefined'. +@fluentui/merge-styles: Type 'null' is not assignable to type 'DeepPartial[] | undefined'. +@fluentui/merge-styles: 183 interface IStylesWithStyleObjectAsSubCommponent extends IStyleSet { +@fluentui/merge-styles: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/merge-styles: src/styleToClassName.ts:302:53 - error TS2343: This syntax requires an imported helper named '__spreadArray' which does not exist in 'tslib'. Consider upgrading your version of 'tslib'. +@fluentui/merge-styles: 302 const registration = styleToRegistration(options, ...args); +@fluentui/merge-styles: ~~~~~~~ +@fluentui/merge-styles: Found 5 errors. @fluentui/merge-styles: [XX:XX:XX XM] x ------------------------------------ @fluentui/merge-styles: [XX:XX:XX XM] x Error previously detected. See above for error messages. -@fluentui/merge-styles: [XX:XX:XX XM] x Other tasks that did not complete: [ts:esm] +@fluentui/merge-styles: [XX:XX:XX XM] x Other tasks that did not complete: [ts:commonjs] @fluentui/merge-styles: error Command failed with exit code 1. @fluentui/react-northstar-styles-renderer: [XX:XX:XX XM] x Cannot find config file "null". Please create a file called "just.config.js" in the root of the project next to "package.json". @fluentui/react-northstar-styles-renderer: [XX:XX:XX XM] x Command not defined: ts @@ -725,6 +1106,24 @@ Standard error: @fluentui/react-northstar-emotion-renderer: [XX:XX:XX XM] x Command not defined: ts @fluentui/react-northstar-fela-renderer: [XX:XX:XX XM] x Cannot find config file "null". Please create a file called "just.config.js" in the root of the project next to "package.json". @fluentui/react-northstar-fela-renderer: [XX:XX:XX XM] x Command not defined: ts +@fluentui/react-stylesheets: [XX:XX:XX XM] x Error detected while running 'ts:esm' +@fluentui/react-stylesheets: [XX:XX:XX XM] x ------------------------------------ +@fluentui/react-stylesheets: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/react-stylesheets/tsconfig.json" +@fluentui/react-stylesheets: at ChildProcess.exithandler (child_process.js:308:12) +@fluentui/react-stylesheets: at ChildProcess.emit (events.js:314:20) +@fluentui/react-stylesheets: at ChildProcess.EventEmitter.emit (domain.js:506:15) +@fluentui/react-stylesheets: at maybeClose (internal/child_process.js:1022:16) +@fluentui/react-stylesheets: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) +@fluentui/react-stylesheets: at Process.callbackTrampoline (internal/async_hooks.js:126:14) +@fluentui/react-stylesheets: [XX:XX:XX XM] x stdout: +@fluentui/react-stylesheets: [XX:XX:XX XM] x src/StylesheetProvider.test.tsx:43:21 - error TS2343: This syntax requires an imported helper named '__spreadArray' which does not exist in 'tslib'. Consider upgrading your version of 'tslib'. +@fluentui/react-stylesheets: 43 result.push(...sheets); +@fluentui/react-stylesheets: ~~~~~~~~~ +@fluentui/react-stylesheets: Found 1 error. +@fluentui/react-stylesheets: [XX:XX:XX XM] x ------------------------------------ +@fluentui/react-stylesheets: [XX:XX:XX XM] x Error previously detected. See above for error messages. +@fluentui/react-stylesheets: [XX:XX:XX XM] x Other tasks that did not complete: [ts:commonjs] +@fluentui/react-stylesheets: error Command failed with exit code 1. @fluentui/react-bindings: [XX:XX:XX XM] x Cannot find config file "null". Please create a file called "just.config.js" in the root of the project next to "package.json". @fluentui/react-bindings: [XX:XX:XX XM] x Command not defined: ts @fluentui/utilities: [XX:XX:XX XM] x Error detected while running 'ts:esm' @@ -733,16 +1132,16 @@ Standard error: @fluentui/utilities: at ChildProcess.exithandler (child_process.js:308:12) @fluentui/utilities: at ChildProcess.emit (events.js:314:20) @fluentui/utilities: at ChildProcess.EventEmitter.emit (domain.js:506:15) -@fluentui/utilities: at maybeClose (internal/child_process.js:1021:16) -@fluentui/utilities: at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5) +@fluentui/utilities: at maybeClose (internal/child_process.js:1022:16) +@fluentui/utilities: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) @fluentui/utilities: at Process.callbackTrampoline (internal/async_hooks.js:126:14) @fluentui/utilities: [XX:XX:XX XM] x stdout: @fluentui/utilities: [XX:XX:XX XM] x src/AutoScroll.ts:143:14 - error TS2790: The operand of a 'delete' operator must be optional. @fluentui/utilities: 143 delete this._timeoutId; @fluentui/utilities: ~~~~~~~~~~~~~~~ -@fluentui/utilities: src/appendFunction.ts:13:42 - error TS2774: This condition will always return true since the function is always defined. Did you mean to call it instead? -@fluentui/utilities: 13 functions.forEach((f: () => void) => f && f.apply(parent, args)); -@fluentui/utilities: ~ +@fluentui/utilities: src/aria.test.ts:105:51 - error TS2343: This syntax requires an imported helper named '__spreadArray' which does not exist in 'tslib'. Consider upgrading your version of 'tslib'. +@fluentui/utilities: 105 const merged = mergeAriaAttributeValues(...testCase.args); +@fluentui/utilities: ~~~~~~~~~~~~~~~~ @fluentui/utilities: src/dom/getRect.ts:19:16 - error TS2774: This condition will always return true since the function is always defined. Did you mean to call it instead? @fluentui/utilities: 19 } else if ((element as HTMLElement).getBoundingClientRect) { @fluentui/utilities: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -773,32 +1172,50 @@ Standard error: @fluentui/react-icons-northstar: [XX:XX:XX XM] x Command not defined: ts @fluentui/react-telemetry: [XX:XX:XX XM] x Cannot find config file "null". Please create a file called "just.config.js" in the root of the project next to "package.json". @fluentui/react-telemetry: [XX:XX:XX XM] x Command not defined: ts -@fluentui/react-focus: [XX:XX:XX XM] x Error detected while running 'ts:esm' -@fluentui/react-focus: [XX:XX:XX XM] x ------------------------------------ -@fluentui/react-focus: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/react-focus/tsconfig.json" -@fluentui/react-focus: at ChildProcess.exithandler (child_process.js:308:12) -@fluentui/react-focus: at ChildProcess.emit (events.js:314:20) -@fluentui/react-focus: at ChildProcess.EventEmitter.emit (domain.js:506:15) -@fluentui/react-focus: at maybeClose (internal/child_process.js:1021:16) -@fluentui/react-focus: at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5) -@fluentui/react-focus: at Process.callbackTrampoline (internal/async_hooks.js:126:14) -@fluentui/react-focus: [XX:XX:XX XM] x stdout: -@fluentui/react-focus: [XX:XX:XX XM] x src/components/FocusZone/FocusZone.tsx:1255:13 - error TS2774: This condition will always return true since the function is always defined. Did you mean to call it instead? -@fluentui/react-focus: 1255 if (child.getAttribute && child.getAttribute(IS_FOCUSABLE_ATTRIBUTE) === 'false') { -@fluentui/react-focus: ~~~~~~~~~~~~~~~~~~ -@fluentui/react-focus: Found 1 error. -@fluentui/react-focus: [XX:XX:XX XM] x ------------------------------------ -@fluentui/react-focus: [XX:XX:XX XM] x Error previously detected. See above for error messages. -@fluentui/react-focus: [XX:XX:XX XM] x Other tasks that did not complete: [ts:commonjs] -@fluentui/react-focus: error Command failed with exit code 1. +@fluentui/react-compose: [XX:XX:XX XM] x Error detected while running '_wrapFunction' +@fluentui/react-compose: [XX:XX:XX XM] x ------------------------------------ +@fluentui/react-compose: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/react-compose/tsconfig.json" +@fluentui/react-compose: at ChildProcess.exithandler (child_process.js:308:12) +@fluentui/react-compose: at ChildProcess.emit (events.js:314:20) +@fluentui/react-compose: at ChildProcess.EventEmitter.emit (domain.js:506:15) +@fluentui/react-compose: at maybeClose (internal/child_process.js:1022:16) +@fluentui/react-compose: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) +@fluentui/react-compose: at Process.callbackTrampoline (internal/async_hooks.js:126:14) +@fluentui/react-compose: [XX:XX:XX XM] x stdout: +@fluentui/react-compose: [XX:XX:XX XM] x src/mergeComposeOptions.ts:11:8 - error TS2343: This syntax requires an imported helper named '__spreadArray' which does not exist in 'tslib'. Consider upgrading your version of 'tslib'. +@fluentui/react-compose: 11 ? [...parentOptions.slotProps, inputOptions.slotProps] +@fluentui/react-compose: ~~~~~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/react-compose: Found 1 error. +@fluentui/react-compose: [XX:XX:XX XM] x ------------------------------------ +@fluentui/react-compose: [XX:XX:XX XM] x Error previously detected. See above for error messages. +@fluentui/react-compose: [XX:XX:XX XM] x Other tasks that did not complete: [ts:esm] +@fluentui/react-compose: error Command failed with exit code 1. +@fluentui/react-hooks: [XX:XX:XX XM] x Error detected while running 'ts:esm' +@fluentui/react-hooks: [XX:XX:XX XM] x ------------------------------------ +@fluentui/react-hooks: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/react-hooks/tsconfig.json" +@fluentui/react-hooks: at ChildProcess.exithandler (child_process.js:308:12) +@fluentui/react-hooks: at ChildProcess.emit (events.js:314:20) +@fluentui/react-hooks: at ChildProcess.EventEmitter.emit (domain.js:506:15) +@fluentui/react-hooks: at maybeClose (internal/child_process.js:1022:16) +@fluentui/react-hooks: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) +@fluentui/react-hooks: at Process.callbackTrampoline (internal/async_hooks.js:126:14) +@fluentui/react-hooks: [XX:XX:XX XM] x stdout: +@fluentui/react-hooks: [XX:XX:XX XM] x src/useMergedRefs.ts:31:6 - error TS2343: This syntax requires an imported helper named '__spreadArray' which does not exist in 'tslib'. Consider upgrading your version of 'tslib'. +@fluentui/react-hooks: 31 [...refs], +@fluentui/react-hooks: ~~~~~~~ +@fluentui/react-hooks: Found 1 error. +@fluentui/react-hooks: [XX:XX:XX XM] x ------------------------------------ +@fluentui/react-hooks: [XX:XX:XX XM] x Error previously detected. See above for error messages. +@fluentui/react-hooks: [XX:XX:XX XM] x Other tasks that did not complete: [ts:commonjs] +@fluentui/react-hooks: error Command failed with exit code 1. @fluentui/react-icons-mdl2: [XX:XX:XX XM] x Error detected while running 'ts:esm' @fluentui/react-icons-mdl2: [XX:XX:XX XM] x ------------------------------------ @fluentui/react-icons-mdl2: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/react-icons-mdl2/tsconfig.json" @fluentui/react-icons-mdl2: at ChildProcess.exithandler (child_process.js:308:12) @fluentui/react-icons-mdl2: at ChildProcess.emit (events.js:314:20) @fluentui/react-icons-mdl2: at ChildProcess.EventEmitter.emit (domain.js:506:15) -@fluentui/react-icons-mdl2: at maybeClose (internal/child_process.js:1021:16) -@fluentui/react-icons-mdl2: at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5) +@fluentui/react-icons-mdl2: at maybeClose (internal/child_process.js:1022:16) +@fluentui/react-icons-mdl2: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) @fluentui/react-icons-mdl2: at Process.callbackTrampoline (internal/async_hooks.js:126:14) @fluentui/react-icons-mdl2: [XX:XX:XX XM] x stdout: @fluentui/react-icons-mdl2: [XX:XX:XX XM] x src/utils/createSvgIcon.ts:3:26 - error TS2307: Cannot find module './SvgIcon.scss' or its corresponding type declarations. @@ -825,8 +1242,8 @@ Standard error: @fluentui/foundation-legacy: at ChildProcess.exithandler (child_process.js:308:12) @fluentui/foundation-legacy: at ChildProcess.emit (events.js:314:20) @fluentui/foundation-legacy: at ChildProcess.EventEmitter.emit (domain.js:506:15) -@fluentui/foundation-legacy: at maybeClose (internal/child_process.js:1021:16) -@fluentui/foundation-legacy: at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5) +@fluentui/foundation-legacy: at maybeClose (internal/child_process.js:1022:16) +@fluentui/foundation-legacy: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) @fluentui/foundation-legacy: at Process.callbackTrampoline (internal/async_hooks.js:126:14) @fluentui/foundation-legacy: [XX:XX:XX XM] x stdout: @fluentui/foundation-legacy: [XX:XX:XX XM] x src/createComponent.tsx:81:23 - error TS2352: Conversion of type 'TComponentProps & { styles: IConcatenatedStyleSet; tokens: TTokens; _defaultStyles: IConcatenatedStyleSet; theme: ITheme; className?: string | undefined; }' to type 'TViewProps & IDefaultSlotProps' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. @@ -841,7 +1258,10 @@ Standard error: @fluentui/foundation-legacy: ~~~~~~~~~~~~ @fluentui/foundation-legacy: 87 } as TViewProps & IDefaultSlotProps; @fluentui/foundation-legacy: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -@fluentui/foundation-legacy: Found 1 error. +@fluentui/foundation-legacy: src/slots.tsx:66:45 - error TS2343: This syntax requires an imported helper named '__spreadArray' which does not exist in 'tslib'. Consider upgrading your version of 'tslib'. +@fluentui/foundation-legacy: 66 return React.createElement(type, props, ...children); +@fluentui/foundation-legacy: ~~~~~~~~~~~ +@fluentui/foundation-legacy: Found 2 errors. @fluentui/foundation-legacy: [XX:XX:XX XM] x ------------------------------------ @fluentui/foundation-legacy: [XX:XX:XX XM] x Error previously detected. See above for error messages. @fluentui/foundation-legacy: [XX:XX:XX XM] x Other tasks that did not complete: [ts:esm] @@ -852,8 +1272,8 @@ codesandbox-react-northstar-template: [XX:XX:XX XM] x Error: Command failed: /us codesandbox-react-northstar-template: at ChildProcess.exithandler (child_process.js:308:12) codesandbox-react-northstar-template: at ChildProcess.emit (events.js:314:20) codesandbox-react-northstar-template: at ChildProcess.EventEmitter.emit (domain.js:506:15) -codesandbox-react-northstar-template: at maybeClose (internal/child_process.js:1021:16) -codesandbox-react-northstar-template: at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5) +codesandbox-react-northstar-template: at maybeClose (internal/child_process.js:1022:16) +codesandbox-react-northstar-template: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) codesandbox-react-northstar-template: at Process.callbackTrampoline (internal/async_hooks.js:126:14) codesandbox-react-northstar-template: [XX:XX:XX XM] x stdout: codesandbox-react-northstar-template: [XX:XX:XX XM] x src/index.tsx:15:8 - error TS2307: Cannot find module '@fluentui/react-northstar' or its corresponding type declarations. @@ -869,80 +1289,87 @@ codesandbox-react-northstar-template: [XX:XX:XX XM] x Other tasks that did not c codesandbox-react-northstar-template: error Command failed with exit code 1. @fluentui/react-builder: [XX:XX:XX XM] x Cannot find config file "null". Please create a file called "just.config.js" in the root of the project next to "package.json". @fluentui/react-builder: [XX:XX:XX XM] x Command not defined: ts -@fluentui/react-avatar: [XX:XX:XX XM] x Error detected while running '_wrapFunction' +@fluentui/react-northstar-prototypes: [XX:XX:XX XM] x Cannot find config file "null". Please create a file called "just.config.js" in the root of the project next to "package.json". +@fluentui/react-northstar-prototypes: [XX:XX:XX XM] x Command not defined: ts +@fluentui/react-avatar: [XX:XX:XX XM] x Error detected while running 'ts:esm' @fluentui/react-avatar: [XX:XX:XX XM] x ------------------------------------ -@fluentui/react-avatar: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/react-avatar/tsconfig.json" +@fluentui/react-avatar: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/react-avatar/tsconfig.json" @fluentui/react-avatar: at ChildProcess.exithandler (child_process.js:308:12) @fluentui/react-avatar: at ChildProcess.emit (events.js:314:20) @fluentui/react-avatar: at ChildProcess.EventEmitter.emit (domain.js:506:15) -@fluentui/react-avatar: at maybeClose (internal/child_process.js:1021:16) -@fluentui/react-avatar: at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5) +@fluentui/react-avatar: at maybeClose (internal/child_process.js:1022:16) +@fluentui/react-avatar: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) @fluentui/react-avatar: at Process.callbackTrampoline (internal/async_hooks.js:126:14) @fluentui/react-avatar: [XX:XX:XX XM] x stdout: -@fluentui/react-avatar: [XX:XX:XX XM] x src/components/Avatar/Avatar.tsx:10:38 - error TS2345: Argument of type 'typeof import("*.scss")' is not assignable to parameter of type 'Record'. -@fluentui/react-avatar: 10 const useAvatarClasses = makeClasses(classes); +@fluentui/react-avatar: [XX:XX:XX XM] x src/components/Avatar/Avatar.tsx:11:38 - error TS2345: Argument of type 'typeof import("*.scss")' is not assignable to parameter of type 'ClassDictionary'. +@fluentui/react-avatar: 11 const useAvatarClasses = makeClasses(classes); @fluentui/react-avatar: ~~~~~~~ -@fluentui/react-avatar: src/components/Badge/Badge.tsx:9:44 - error TS2345: Argument of type 'typeof import("*.scss")' is not assignable to parameter of type 'Record'. +@fluentui/react-avatar: src/components/Badge/Badge.tsx:10:44 - error TS2345: Argument of type 'typeof import("*.scss")' is not assignable to parameter of type 'ClassDictionary'. @fluentui/react-avatar: Property 'styles' is incompatible with index signature. @fluentui/react-avatar: Type '{ [className: string]: string; }' is not assignable to type 'string'. -@fluentui/react-avatar: 9 export const useBadgeClasses = makeClasses(classes); -@fluentui/react-avatar: ~~~~~~~ +@fluentui/react-avatar: 10 export const useBadgeClasses = makeClasses(classes); +@fluentui/react-avatar: ~~~~~~~ @fluentui/react-avatar: Found 2 errors. @fluentui/react-avatar: [XX:XX:XX XM] x ------------------------------------ @fluentui/react-avatar: [XX:XX:XX XM] x Error previously detected. See above for error messages. -@fluentui/react-avatar: [XX:XX:XX XM] x Other tasks that did not complete: [ts:esm] +@fluentui/react-avatar: [XX:XX:XX XM] x Other tasks that did not complete: [ts:commonjs] @fluentui/react-avatar: error Command failed with exit code 1. -@fluentui/react-flex: [XX:XX:XX XM] x Error detected while running 'ts:esm' +@fluentui/react-flex: [XX:XX:XX XM] x Error detected while running '_wrapFunction' @fluentui/react-flex: [XX:XX:XX XM] x ------------------------------------ -@fluentui/react-flex: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/react-flex/tsconfig.json" +@fluentui/react-flex: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/react-flex/tsconfig.json" @fluentui/react-flex: at ChildProcess.exithandler (child_process.js:308:12) @fluentui/react-flex: at ChildProcess.emit (events.js:314:20) @fluentui/react-flex: at ChildProcess.EventEmitter.emit (domain.js:506:15) -@fluentui/react-flex: at maybeClose (internal/child_process.js:1021:16) -@fluentui/react-flex: at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5) +@fluentui/react-flex: at maybeClose (internal/child_process.js:1022:16) +@fluentui/react-flex: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) @fluentui/react-flex: at Process.callbackTrampoline (internal/async_hooks.js:126:14) @fluentui/react-flex: [XX:XX:XX XM] x stdout: -@fluentui/react-flex: [XX:XX:XX XM] x src/components/Flex/Flex.tsx:22:34 - error TS2345: Argument of type 'typeof import("*.scss")' is not assignable to parameter of type 'Record'. +@fluentui/react-flex: [XX:XX:XX XM] x src/components/Flex/Flex.tsx:22:34 - error TS2345: Argument of type 'typeof import("*.scss")' is not assignable to parameter of type 'ClassDictionary'. @fluentui/react-flex: Property 'styles' is incompatible with index signature. @fluentui/react-flex: Type '{ [className: string]: string; }' is not assignable to type 'string'. @fluentui/react-flex: 22 classes: createClassResolver(classes), @fluentui/react-flex: ~~~~~~~ -@fluentui/react-flex: src/components/FlexItem/FlexItem.tsx:20:34 - error TS2345: Argument of type 'typeof import("*.scss")' is not assignable to parameter of type 'Record'. +@fluentui/react-flex: src/components/FlexItem/FlexItem.tsx:20:34 - error TS2345: Argument of type 'typeof import("*.scss")' is not assignable to parameter of type 'ClassDictionary'. @fluentui/react-flex: 20 classes: createClassResolver(classes), @fluentui/react-flex: ~~~~~~~ @fluentui/react-flex: Found 2 errors. @fluentui/react-flex: [XX:XX:XX XM] x ------------------------------------ @fluentui/react-flex: [XX:XX:XX XM] x Error previously detected. See above for error messages. -@fluentui/react-flex: [XX:XX:XX XM] x Other tasks that did not complete: [ts:commonjs] +@fluentui/react-flex: [XX:XX:XX XM] x Other tasks that did not complete: [ts:esm] @fluentui/react-flex: error Command failed with exit code 1. -@fluentui/react-image: [XX:XX:XX XM] x Error detected while running 'ts:esm' +@fluentui/react-image: [XX:XX:XX XM] x Error detected while running '_wrapFunction' @fluentui/react-image: [XX:XX:XX XM] x ------------------------------------ -@fluentui/react-image: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/react-image/tsconfig.json" +@fluentui/react-image: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/react-image/tsconfig.json" @fluentui/react-image: at ChildProcess.exithandler (child_process.js:308:12) @fluentui/react-image: at ChildProcess.emit (events.js:314:20) @fluentui/react-image: at ChildProcess.EventEmitter.emit (domain.js:506:15) -@fluentui/react-image: at maybeClose (internal/child_process.js:1021:16) -@fluentui/react-image: at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5) +@fluentui/react-image: at maybeClose (internal/child_process.js:1022:16) +@fluentui/react-image: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) @fluentui/react-image: at Process.callbackTrampoline (internal/async_hooks.js:126:14) @fluentui/react-image: [XX:XX:XX XM] x stdout: -@fluentui/react-image: [XX:XX:XX XM] x src/components/Image/Image.tsx:9:44 - error TS2345: Argument of type 'typeof import("*.scss")' is not assignable to parameter of type 'Record'. +@fluentui/react-image: [XX:XX:XX XM] x src/components/Image/Image.tsx:9:44 - error TS2345: Argument of type 'typeof import("*.scss")' is not assignable to parameter of type 'ClassDictionary'. @fluentui/react-image: Property 'styles' is incompatible with index signature. @fluentui/react-image: Type '{ [className: string]: string; }' is not assignable to type 'string'. @fluentui/react-image: 9 export const useImageClasses = makeClasses(classes); @fluentui/react-image: ~~~~~~~ -@fluentui/react-image: Found 1 error. +@fluentui/react-image: src/components/Image/useImage.tsx:23:46 - error TS2343: This syntax requires an imported helper named '__spreadArray' which does not exist in 'tslib'. Consider upgrading your version of 'tslib'. +@fluentui/react-image: 23 return ; +@fluentui/react-image: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/react-image: Found 2 errors. @fluentui/react-image: [XX:XX:XX XM] x ------------------------------------ @fluentui/react-image: [XX:XX:XX XM] x Error previously detected. See above for error messages. -@fluentui/react-image: [XX:XX:XX XM] x Other tasks that did not complete: [ts:commonjs] +@fluentui/react-image: [XX:XX:XX XM] x Other tasks that did not complete: [ts:esm] @fluentui/react-image: error Command failed with exit code 1. -@fluentui/react-internal: [XX:XX:XX XM] x Error detected while running '_wrapFunction' +@fluentui/docs: [XX:XX:XX XM] x Cannot find config file "null". Please create a file called "just.config.js" in the root of the project next to "package.json". +@fluentui/docs: [XX:XX:XX XM] x Command not defined: ts +@fluentui/react-internal: [XX:XX:XX XM] x Error detected while running 'ts:esm' @fluentui/react-internal: [XX:XX:XX XM] x ------------------------------------ -@fluentui/react-internal: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/react-internal/tsconfig.json" +@fluentui/react-internal: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/react-internal/tsconfig.json" @fluentui/react-internal: at ChildProcess.exithandler (child_process.js:308:12) @fluentui/react-internal: at ChildProcess.emit (events.js:314:20) @fluentui/react-internal: at ChildProcess.EventEmitter.emit (domain.js:506:15) -@fluentui/react-internal: at maybeClose (internal/child_process.js:1021:16) -@fluentui/react-internal: at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5) +@fluentui/react-internal: at maybeClose (internal/child_process.js:1022:16) +@fluentui/react-internal: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) @fluentui/react-internal: at Process.callbackTrampoline (internal/async_hooks.js:126:14) @fluentui/react-internal: [XX:XX:XX XM] x stdout: @fluentui/react-internal: [XX:XX:XX XM] x src/components/ChoiceGroup/ChoiceGroup.base.tsx:129:17 - error TS2783: 'key' is specified more than once, so this usage will be overwritten. @@ -952,6 +1379,10 @@ codesandbox-react-northstar-template: error Command failed with exit code 1. @fluentui/react-internal: 131 {...option} @fluentui/react-internal: ~~~~~~~~~~~ @fluentui/react-internal: This spread always overwrites this property. +@fluentui/react-internal: src/components/ContextualMenu/ContextualMenu.styles.ts:79:11 - error TS2322: Type '{ boxShadow: string; }' is not assignable to type 'DeepPartial[]'. +@fluentui/react-internal: Object literal may only specify known properties, and 'boxShadow' does not exist in type 'DeepPartial[]'. +@fluentui/react-internal: 79 boxShadow: effects.elevation8, +@fluentui/react-internal: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @fluentui/react-internal: src/components/FloatingPicker/BaseFloatingPicker.tsx:218:42 - error TS2774: This condition will always return true since the function is always defined. Did you mean to call it instead? @fluentui/react-internal: 218 } else if (suggestionsPromiseLike && suggestionsPromiseLike.then) { @fluentui/react-internal: ~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -970,37 +1401,85 @@ codesandbox-react-northstar-template: error Command failed with exit code 1. @fluentui/react-internal: src/components/MarqueeSelection/MarqueeSelection.base.tsx:89:12 - error TS2790: The operand of a 'delete' operator must be optional. @fluentui/react-internal: 89 delete this._scrollableSurface; @fluentui/react-internal: ~~~~~~~~~~~~~~~~~~~~~~~ -@fluentui/react-internal: src/components/Persona/Persona.test.tsx:194:13 - error TS2322: Type 'ReactWrapper>' is not assignable to type 'ReactWrapper, unknown, Component<{}, {}, any>>'. -@fluentui/react-internal: Type 'HTMLAttributes' is not assignable to type 'ImgHTMLAttributes'. -@fluentui/react-internal: Types of property 'crossOrigin' are incompatible. -@fluentui/react-internal: Type 'string | undefined' is not assignable to type '"" | "anonymous" | "use-credentials" | undefined'. -@fluentui/react-internal: Type 'string' is not assignable to type '"" | "anonymous" | "use-credentials" | undefined'. -@fluentui/react-internal: 194 const image: ReactWrapper, unknown> = wrapper.find('ImageBase'); -@fluentui/react-internal: ~~~~~ -@fluentui/react-internal: src/components/Persona/Persona.test.tsx:201:13 - error TS2322: Type 'ReactWrapper>' is not assignable to type 'ReactWrapper, unknown, Component<{}, {}, any>>'. -@fluentui/react-internal: 201 const image: ReactWrapper, unknown> = wrapper.find('ImageBase'); -@fluentui/react-internal: ~~~~~ -@fluentui/react-internal: src/components/pickers/BasePicker.tsx:460:42 - error TS2774: This condition will always return true since the function is always defined. Did you mean to call it instead? -@fluentui/react-internal: 460 } else if (suggestionsPromiseLike && suggestionsPromiseLike.then) { +@fluentui/react-internal: src/components/Panel/Panel.base.tsx:25:60 - error TS2344: Type 'IPanelStyles' does not satisfy the constraint 'IStyleSet'. +@fluentui/react-internal: Type 'IPanelStyles' is not assignable to type '{ subComponentStyles?: { closeButton: IStyleFunctionOrObject; } | undefined; }'. +@fluentui/react-internal: The types of 'subComponentStyles.closeButton' are incompatible between these types. +@fluentui/react-internal: Type 'Partial' is not assignable to type 'IStyleFunctionOrObject'. +@fluentui/react-internal: Type 'Partial' is not assignable to type 'DeepPartial'. +@fluentui/react-internal: Property 'root' is incompatible with index signature. +@fluentui/react-internal: Type 'string | false | IRawStyle | IStyleBaseArray | null' is not assignable to type 'DeepPartial[] | undefined'. +@fluentui/react-internal: Type 'null' is not assignable to type 'DeepPartial[] | undefined'. +@fluentui/react-internal: 25 const getClassNames = classNamesFunction(); +@fluentui/react-internal: ~~~~~~~~~~~~ +@fluentui/react-internal: src/components/Panel/Panel.base.tsx:53:43 - error TS2344: Type 'IPanelStyles' does not satisfy the constraint 'IStyleSet'. +@fluentui/react-internal: Type 'IPanelStyles' is not assignable to type '{ subComponentStyles?: { closeButton: IStyleFunctionOrObject; } | undefined; }'. +@fluentui/react-internal: 53 private _classNames: IProcessedStyleSet; +@fluentui/react-internal: ~~~~~~~~~~~~ +@fluentui/react-internal: src/components/Panel/Panel.ts:10:98 - error TS2344: Type 'IPanelStyles' does not satisfy the constraint 'IStyleSet'. +@fluentui/react-internal: Type 'IPanelStyles' is not assignable to type '{ subComponentStyles?: { closeButton: IStyleFunctionOrObject; } | undefined; }'. +@fluentui/react-internal: 10 export const Panel: React.FunctionComponent = styled( +@fluentui/react-internal: ~~~~~~~~~~~~ +@fluentui/react-internal: src/components/Panel/Panel.types.ts:112:53 - error TS2344: Type 'IPanelStyles' does not satisfy the constraint 'IStyleSet'. +@fluentui/react-internal: Type 'IPanelStyles' is not assignable to type '{ subComponentStyles?: { closeButton: IStyleFunctionOrObject; } | undefined; }'. +@fluentui/react-internal: 112 styles?: IStyleFunctionOrObject; +@fluentui/react-internal: ~~~~~~~~~~~~ +@fluentui/react-internal: src/components/TeachingBubble/TeachingBubble.styles.ts:278:16 - error TS2322: Type 'IStyle' is not assignable to type 'DeepPartial'. +@fluentui/react-internal: Type 'undefined' is not assignable to type 'DeepPartial'. +@fluentui/react-internal: 278 root: [...rootStyle(isWide, calloutProps), fonts.medium], +@fluentui/react-internal: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/react-internal: src/components/TeachingBubble/TeachingBubble.styles.ts:278:52 - error TS2322: Type 'IStyle' is not assignable to type 'DeepPartial'. +@fluentui/react-internal: 278 root: [...rootStyle(isWide, calloutProps), fonts.medium], +@fluentui/react-internal: ~~~~~~~~~~~~ +@fluentui/react-internal: src/components/TextField/TextField.test.tsx:110:11 - error TS2322: Type 'string' is not assignable to type 'DeepPartial[] | undefined'. +@fluentui/react-internal: 110 root: 'label-testClassName', +@fluentui/react-internal: ~~~~ +@fluentui/react-internal: src/components/pickers/BasePicker.tsx:468:42 - error TS2774: This condition will always return true since the function is always defined. Did you mean to call it instead? +@fluentui/react-internal: 468 } else if (suggestionsPromiseLike && suggestionsPromiseLike.then) { @fluentui/react-internal: ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -@fluentui/react-internal: Found 10 errors. +@fluentui/react-internal: src/components/pickers/PeoplePicker/PeoplePickerItems/PeoplePickerItem.styles.ts:175:9 - error TS2322: Type 'IStyleBaseArray' is not assignable to type 'DeepPartial[]'. +@fluentui/react-internal: The types returned by 'pop()' are incompatible between these types. +@fluentui/react-internal: Type 'IStyle' is not assignable to type 'DeepPartial | undefined'. +@fluentui/react-internal: Type 'null' is not assignable to type 'DeepPartial | undefined'. +@fluentui/react-internal: 175 primaryText: personaPrimaryTextStyles, +@fluentui/react-internal: ~~~~~~~~~~~ +@fluentui/react-internal: src/components/pickers/PeoplePicker/PeoplePickerItems/PeoplePickerItem.styles.ts:178:9 - error TS2322: Type 'IStyleBaseArray' is not assignable to type 'DeepPartial[]'. +@fluentui/react-internal: 178 initials: personaCoinInitialsStyles, +@fluentui/react-internal: ~~~~~~~~ +@fluentui/react-internal: src/components/pickers/PeoplePicker/PeoplePickerItems/PeoplePickerItemSuggestion.styles.ts:49:9 - error TS2740: Type 'IRawStyle' is missing the following properties from type 'DeepPartial[]': length, pop, push, concat, and 24 more. +@fluentui/react-internal: 49 primaryText: textSelectorsStyles, +@fluentui/react-internal: ~~~~~~~~~~~ +@fluentui/react-internal: src/components/pickers/PeoplePicker/PeoplePickerItems/PeoplePickerItemSuggestion.styles.ts:50:9 - error TS2322: Type 'IRawStyle' is not assignable to type 'DeepPartial[]'. +@fluentui/react-internal: 50 secondaryText: textSelectorsStyles, +@fluentui/react-internal: ~~~~~~~~~~~~~ +@fluentui/react-internal: src/components/pickers/Suggestions/Suggestions.styles.ts:119:11 - error TS2322: Type '{ display: string; verticalAlign: string; }' is not assignable to type 'DeepPartial[]'. +@fluentui/react-internal: Object literal may only specify known properties, and 'display' does not exist in type 'DeepPartial[]'. +@fluentui/react-internal: 119 display: 'inline-block', +@fluentui/react-internal: ~~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/react-internal: src/components/pickers/Suggestions/Suggestions.styles.ts:123:11 - error TS2322: Type '{ display: string; verticalAlign: string; margin: string; }' is not assignable to type 'DeepPartial[]'. +@fluentui/react-internal: Object literal may only specify known properties, and 'display' does not exist in type 'DeepPartial[]'. +@fluentui/react-internal: 123 display: 'inline-block', +@fluentui/react-internal: ~~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/react-internal: src/utilities/keytips/KeytipUtils.ts:26:29 - error TS2343: This syntax requires an imported helper named '__spreadArray' which does not exist in 'tslib'. Consider upgrading your version of 'tslib'. +@fluentui/react-internal: 26 const overflowSequence = [...overflowKeySequences].pop(); +@fluentui/react-internal: ~~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/react-internal: Found 23 errors. @fluentui/react-internal: [XX:XX:XX XM] x ------------------------------------ @fluentui/react-internal: [XX:XX:XX XM] x Error previously detected. See above for error messages. -@fluentui/react-internal: [XX:XX:XX XM] x Other tasks that did not complete: [ts:esm] +@fluentui/react-internal: [XX:XX:XX XM] x Other tasks that did not complete: [ts:commonjs] @fluentui/react-internal: error Command failed with exit code 1. -@fluentui/docs: [XX:XX:XX XM] x Cannot find config file "null". Please create a file called "just.config.js" in the root of the project next to "package.json". -@fluentui/docs: [XX:XX:XX XM] x Command not defined: ts -@fluentui/react-checkbox: [XX:XX:XX XM] x Error detected while running '_wrapFunction' +@fluentui/perf: [XX:XX:XX XM] x Cannot find config file "null". Please create a file called "just.config.js" in the root of the project next to "package.json". +@fluentui/perf: [XX:XX:XX XM] x Command not defined: ts +@fluentui/react-checkbox: [XX:XX:XX XM] x Error detected while running 'ts:esm' @fluentui/react-checkbox: [XX:XX:XX XM] x ------------------------------------ -@fluentui/react-checkbox: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/react-checkbox/tsconfig.json" +@fluentui/react-checkbox: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/react-checkbox/tsconfig.json" @fluentui/react-checkbox: at ChildProcess.exithandler (child_process.js:308:12) @fluentui/react-checkbox: at ChildProcess.emit (events.js:314:20) @fluentui/react-checkbox: at ChildProcess.EventEmitter.emit (domain.js:506:15) -@fluentui/react-checkbox: at maybeClose (internal/child_process.js:1021:16) -@fluentui/react-checkbox: at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5) +@fluentui/react-checkbox: at maybeClose (internal/child_process.js:1022:16) +@fluentui/react-checkbox: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) @fluentui/react-checkbox: at Process.callbackTrampoline (internal/async_hooks.js:126:14) @fluentui/react-checkbox: [XX:XX:XX XM] x stdout: -@fluentui/react-checkbox: [XX:XX:XX XM] x src/next/useCheckboxClasses.tsx:14:50 - error TS2345: Argument of type 'typeof import("*.scss")' is not assignable to parameter of type 'Record'. +@fluentui/react-checkbox: [XX:XX:XX XM] x src/next/useCheckboxClasses.tsx:14:50 - error TS2345: Argument of type 'typeof import("*.scss")' is not assignable to parameter of type 'ClassDictionary'. @fluentui/react-checkbox: Property 'styles' is incompatible with index signature. @fluentui/react-checkbox: Type '{ [className: string]: string; }' is not assignable to type 'string'. @fluentui/react-checkbox: 14 const defaultClassResolver = createClassResolver(classes); @@ -1008,16 +1487,34 @@ codesandbox-react-northstar-template: error Command failed with exit code 1. @fluentui/react-checkbox: Found 1 error. @fluentui/react-checkbox: [XX:XX:XX XM] x ------------------------------------ @fluentui/react-checkbox: [XX:XX:XX XM] x Error previously detected. See above for error messages. -@fluentui/react-checkbox: [XX:XX:XX XM] x Other tasks that did not complete: [ts:esm] +@fluentui/react-checkbox: [XX:XX:XX XM] x Other tasks that did not complete: [ts:commonjs] @fluentui/react-checkbox: error Command failed with exit code 1. -@fluentui/react-link: [XX:XX:XX XM] x Error detected while running 'ts:esm' +@fluentui/react-date-time: [XX:XX:XX XM] x Error detected while running '_wrapFunction' +@fluentui/react-date-time: [XX:XX:XX XM] x ------------------------------------ +@fluentui/react-date-time: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/react-date-time/tsconfig.json" +@fluentui/react-date-time: at ChildProcess.exithandler (child_process.js:308:12) +@fluentui/react-date-time: at ChildProcess.emit (events.js:314:20) +@fluentui/react-date-time: at ChildProcess.EventEmitter.emit (domain.js:506:15) +@fluentui/react-date-time: at maybeClose (internal/child_process.js:1022:16) +@fluentui/react-date-time: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) +@fluentui/react-date-time: at Process.callbackTrampoline (internal/async_hooks.js:126:14) +@fluentui/react-date-time: [XX:XX:XX XM] x stdout: +@fluentui/react-date-time: [XX:XX:XX XM] x src/components/CalendarDayGrid/CalendarGridDayCell.tsx:142:34 - error TS2343: This syntax requires an imported helper named '__spreadArray' which does not exist in 'tslib'. Consider upgrading your version of 'tslib'. +@fluentui/react-date-time: 142 dayRef.classList.add(...classNamesToAdd.split(' ')); +@fluentui/react-date-time: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/react-date-time: Found 1 error. +@fluentui/react-date-time: [XX:XX:XX XM] x ------------------------------------ +@fluentui/react-date-time: [XX:XX:XX XM] x Error previously detected. See above for error messages. +@fluentui/react-date-time: [XX:XX:XX XM] x Other tasks that did not complete: [ts:esm] +@fluentui/react-date-time: error Command failed with exit code 1. +@fluentui/react-link: [XX:XX:XX XM] x Error detected while running '_wrapFunction' @fluentui/react-link: [XX:XX:XX XM] x ------------------------------------ -@fluentui/react-link: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/react-link/tsconfig.json" +@fluentui/react-link: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/react-link/tsconfig.json" @fluentui/react-link: at ChildProcess.exithandler (child_process.js:308:12) @fluentui/react-link: at ChildProcess.emit (events.js:314:20) @fluentui/react-link: at ChildProcess.EventEmitter.emit (domain.js:506:15) -@fluentui/react-link: at maybeClose (internal/child_process.js:1021:16) -@fluentui/react-link: at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5) +@fluentui/react-link: at maybeClose (internal/child_process.js:1022:16) +@fluentui/react-link: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) @fluentui/react-link: at Process.callbackTrampoline (internal/async_hooks.js:126:14) @fluentui/react-link: [XX:XX:XX XM] x stdout: @fluentui/react-link: [XX:XX:XX XM] x src/next/Link.tsx:16:56 - error TS2339: Property 'button' does not exist on type 'typeof import("*.scss")'. @@ -1029,22 +1526,28 @@ codesandbox-react-northstar-template: error Command failed with exit code 1. @fluentui/react-link: src/next/Link.tsx:21:36 - error TS2339: Property 'root' does not exist on type 'typeof import("*.scss")'. @fluentui/react-link: 21 root: css(className, classes.root, globalClassNames.root, ...rootStaticClasses, ...propControlledClasses), @fluentui/react-link: ~~~~ -@fluentui/react-link: Found 3 errors. +@fluentui/react-link: src/next/Link.tsx:21:65 - error TS2343: This syntax requires an imported helper named '__spreadArray' which does not exist in 'tslib'. Consider upgrading your version of 'tslib'. +@fluentui/react-link: 21 root: css(className, classes.root, globalClassNames.root, ...rootStaticClasses, ...propControlledClasses), +@fluentui/react-link: ~~~~~~~~~~~~~~~~~~~~ +@fluentui/react-link: Found 4 errors. @fluentui/react-link: [XX:XX:XX XM] x ------------------------------------ @fluentui/react-link: [XX:XX:XX XM] x Error previously detected. See above for error messages. -@fluentui/react-link: [XX:XX:XX XM] x Other tasks that did not complete: [ts:commonjs] +@fluentui/react-link: [XX:XX:XX XM] x Other tasks that did not complete: [ts:esm] @fluentui/react-link: error Command failed with exit code 1. -@fluentui/react-slider: [XX:XX:XX XM] x Error detected while running 'ts:esm' +@fluentui/react-slider: [XX:XX:XX XM] x Error detected while running '_wrapFunction' @fluentui/react-slider: [XX:XX:XX XM] x ------------------------------------ -@fluentui/react-slider: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/react-slider/tsconfig.json" +@fluentui/react-slider: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/react-slider/tsconfig.json" @fluentui/react-slider: at ChildProcess.exithandler (child_process.js:308:12) @fluentui/react-slider: at ChildProcess.emit (events.js:314:20) @fluentui/react-slider: at ChildProcess.EventEmitter.emit (domain.js:506:15) -@fluentui/react-slider: at maybeClose (internal/child_process.js:1021:16) -@fluentui/react-slider: at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5) +@fluentui/react-slider: at maybeClose (internal/child_process.js:1022:16) +@fluentui/react-slider: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) @fluentui/react-slider: at Process.callbackTrampoline (internal/async_hooks.js:126:14) @fluentui/react-slider: [XX:XX:XX XM] x stdout: -@fluentui/react-slider: [XX:XX:XX XM] x src/next/Slider.tsx:38:27 - error TS2339: Property 'disabled' does not exist on type 'typeof import("*.scss")'. +@fluentui/react-slider: [XX:XX:XX XM] x src/components/Slider/Slider.styles.ts:105:7 - error TS2343: This syntax requires an imported helper named '__spreadArray' which does not exist in 'tslib'. Consider upgrading your version of 'tslib'. +@fluentui/react-slider: 105 ...[!disabled ? classNames.enabled : undefined], +@fluentui/react-slider: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/react-slider: src/next/Slider.tsx:38:27 - error TS2339: Property 'disabled' does not exist on type 'typeof import("*.scss")'. @fluentui/react-slider: 38 disabled && classes.disabled, @fluentui/react-slider: ~~~~~~~~ @fluentui/react-slider: src/next/Slider.tsx:39:27 - error TS2339: Property 'vertical' does not exist on type 'typeof import("*.scss")'. @@ -1083,19 +1586,47 @@ codesandbox-react-northstar-template: error Command failed with exit code 1. @fluentui/react-slider: src/next/Slider.tsx:57:29 - error TS2339: Property 'zeroTick' does not exist on type 'typeof import("*.scss")'. @fluentui/react-slider: 57 zeroTick: css(classes.zeroTick, globalClassNames.zeroTick, ...propClasses), @fluentui/react-slider: ~~~~~~~~ -@fluentui/react-slider: Found 13 errors. +@fluentui/react-slider: Found 14 errors. @fluentui/react-slider: [XX:XX:XX XM] x ------------------------------------ @fluentui/react-slider: [XX:XX:XX XM] x Error previously detected. See above for error messages. -@fluentui/react-slider: [XX:XX:XX XM] x Other tasks that did not complete: [ts:commonjs] +@fluentui/react-slider: [XX:XX:XX XM] x Other tasks that did not complete: [ts:esm] @fluentui/react-slider: error Command failed with exit code 1. -@fluentui/react-toggle: [XX:XX:XX XM] x Error detected while running '_wrapFunction' +@fluentui/react-tabs: [XX:XX:XX XM] x Error detected while running '_wrapFunction' +@fluentui/react-tabs: [XX:XX:XX XM] x ------------------------------------ +@fluentui/react-tabs: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/react-tabs/tsconfig.json" +@fluentui/react-tabs: at ChildProcess.exithandler (child_process.js:308:12) +@fluentui/react-tabs: at ChildProcess.emit (events.js:314:20) +@fluentui/react-tabs: at ChildProcess.EventEmitter.emit (domain.js:506:15) +@fluentui/react-tabs: at maybeClose (internal/child_process.js:1022:16) +@fluentui/react-tabs: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) +@fluentui/react-tabs: at Process.callbackTrampoline (internal/async_hooks.js:126:14) +@fluentui/react-tabs: [XX:XX:XX XM] x stdout: +@fluentui/react-tabs: [XX:XX:XX XM] x ../react-internal/lib/components/Panel/Panel.types.d.ts:96:55 - error TS2344: Type 'IPanelStyles' does not satisfy the constraint 'IStyleSet'. +@fluentui/react-tabs: Type 'IPanelStyles' is not assignable to type '{ subComponentStyles?: { closeButton: IStyleFunctionOrObject; } | undefined; }'. +@fluentui/react-tabs: The types of 'subComponentStyles.closeButton' are incompatible between these types. +@fluentui/react-tabs: Type 'Partial' is not assignable to type 'IStyleFunctionOrObject'. +@fluentui/react-tabs: Type 'Partial' is not assignable to type 'DeepPartial'. +@fluentui/react-tabs: Property 'root' is incompatible with index signature. +@fluentui/react-tabs: Type 'string | false | IRawStyle | IStyleBaseArray | null' is not assignable to type 'DeepPartial[] | undefined'. +@fluentui/react-tabs: Type 'null' is not assignable to type 'DeepPartial[] | undefined'. +@fluentui/react-tabs: 96 styles?: IStyleFunctionOrObject; +@fluentui/react-tabs: ~~~~~~~~~~~~ +@fluentui/react-tabs: src/components/Pivot/Pivot.styles.ts:197:7 - error TS2343: This syntax requires an imported helper named '__spreadArray' which does not exist in 'tslib'. Consider upgrading your version of 'tslib'. +@fluentui/react-tabs: 197 ...getLinkStyles(props, classNames), +@fluentui/react-tabs: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/react-tabs: Found 2 errors. +@fluentui/react-tabs: [XX:XX:XX XM] x ------------------------------------ +@fluentui/react-tabs: [XX:XX:XX XM] x Error previously detected. See above for error messages. +@fluentui/react-tabs: [XX:XX:XX XM] x Other tasks that did not complete: [ts:esm] +@fluentui/react-tabs: error Command failed with exit code 1. +@fluentui/react-toggle: [XX:XX:XX XM] x Error detected while running 'ts:esm' @fluentui/react-toggle: [XX:XX:XX XM] x ------------------------------------ -@fluentui/react-toggle: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/react-toggle/tsconfig.json" +@fluentui/react-toggle: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/react-toggle/tsconfig.json" @fluentui/react-toggle: at ChildProcess.exithandler (child_process.js:308:12) @fluentui/react-toggle: at ChildProcess.emit (events.js:314:20) @fluentui/react-toggle: at ChildProcess.EventEmitter.emit (domain.js:506:15) -@fluentui/react-toggle: at maybeClose (internal/child_process.js:1021:16) -@fluentui/react-toggle: at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5) +@fluentui/react-toggle: at maybeClose (internal/child_process.js:1022:16) +@fluentui/react-toggle: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) @fluentui/react-toggle: at Process.callbackTrampoline (internal/async_hooks.js:126:14) @fluentui/react-toggle: [XX:XX:XX XM] x stdout: @fluentui/react-toggle: [XX:XX:XX XM] x src/next/Toggle.tsx:31:26 - error TS2339: Property 'checked' does not exist on type 'typeof import("*.scss")'. @@ -1113,6 +1644,9 @@ codesandbox-react-northstar-template: error Command failed with exit code 1. @fluentui/react-toggle: src/next/Toggle.tsx:40:36 - error TS2339: Property 'root' does not exist on type 'typeof import("*.scss")'. @fluentui/react-toggle: 40 root: css(className, classes.root, globalClassNames.root, ...rootStaticClasses, ...propControlledClasses), @fluentui/react-toggle: ~~~~ +@fluentui/react-toggle: src/next/Toggle.tsx:40:65 - error TS2343: This syntax requires an imported helper named '__spreadArray' which does not exist in 'tslib'. Consider upgrading your version of 'tslib'. +@fluentui/react-toggle: 40 root: css(className, classes.root, globalClassNames.root, ...rootStaticClasses, ...propControlledClasses), +@fluentui/react-toggle: ~~~~~~~~~~~~~~~~~~~~ @fluentui/react-toggle: src/next/Toggle.tsx:41:26 - error TS2339: Property 'label' does not exist on type 'typeof import("*.scss")'. @fluentui/react-toggle: 41 label: css(classes.label, globalClassNames.label, ...propControlledClasses), @fluentui/react-toggle: ~~~~~ @@ -1128,24 +1662,25 @@ codesandbox-react-northstar-template: error Command failed with exit code 1. @fluentui/react-toggle: src/next/Toggle.tsx:45:25 - error TS2339: Property 'text' does not exist on type 'typeof import("*.scss")'. @fluentui/react-toggle: 45 text: css(classes.text, globalClassNames.text, ...propControlledClasses), @fluentui/react-toggle: ~~~~ -@fluentui/react-toggle: Found 10 errors. +@fluentui/react-toggle: Found 11 errors. @fluentui/react-toggle: [XX:XX:XX XM] x ------------------------------------ @fluentui/react-toggle: [XX:XX:XX XM] x Error previously detected. See above for error messages. -@fluentui/react-toggle: [XX:XX:XX XM] x Other tasks that did not complete: [ts:esm] +@fluentui/react-toggle: [XX:XX:XX XM] x Other tasks that did not complete: [ts:commonjs] @fluentui/react-toggle: error Command failed with exit code 1. -@fluentui/perf: [XX:XX:XX XM] x Cannot find config file "null". Please create a file called "just.config.js" in the root of the project next to "package.json". -@fluentui/perf: [XX:XX:XX XM] x Command not defined: ts @fluentui/react: [XX:XX:XX XM] x Error detected while running 'ts:esm' @fluentui/react: [XX:XX:XX XM] x ------------------------------------ @fluentui/react: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/react/tsconfig.json" @fluentui/react: at ChildProcess.exithandler (child_process.js:308:12) @fluentui/react: at ChildProcess.emit (events.js:314:20) @fluentui/react: at ChildProcess.EventEmitter.emit (domain.js:506:15) -@fluentui/react: at maybeClose (internal/child_process.js:1021:16) -@fluentui/react: at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5) +@fluentui/react: at maybeClose (internal/child_process.js:1022:16) +@fluentui/react: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) @fluentui/react: at Process.callbackTrampoline (internal/async_hooks.js:126:14) @fluentui/react: [XX:XX:XX XM] x stdout: -@fluentui/react: [XX:XX:XX XM] x src/components/ComboBox/ComboBox.tsx:451:13 - error TS2554: Expected 1 arguments, but got 2. +@fluentui/react: [XX:XX:XX XM] x src/components/Breadcrumb/Breadcrumb.base.tsx:92:28 - error TS2343: This syntax requires an imported helper named '__spreadArray' which does not exist in 'tslib'. Consider upgrading your version of 'tslib'. +@fluentui/react: 92 const renderedItems = [...items]; +@fluentui/react: ~~~~~~~~ +@fluentui/react: src/components/ComboBox/ComboBox.tsx:451:13 - error TS2554: Expected 1 arguments, but got 2. @fluentui/react: 451 this._onRenderContainer, @fluentui/react: ~~~~~~~~~~~~~~~~~~~~~~~ @fluentui/react: src/components/ComboBox/ComboBox.tsx:1097:32 - error TS2774: This condition will always return true since the function is always defined. Did you mean to call it instead? @@ -1169,22 +1704,146 @@ codesandbox-react-northstar-template: error Command failed with exit code 1. @fluentui/react: src/components/DetailsList/DetailsRow.base.tsx:156:14 - error TS2790: The operand of a 'delete' operator must be optional. @fluentui/react: 156 delete this._dragDropSubscription; @fluentui/react: ~~~~~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/react: src/components/Dropdown/Dropdown.base.tsx:597:96 - error TS2344: Type 'IPanelStyles' does not satisfy the constraint 'IStyleSet'. +@fluentui/react: Type 'IPanelStyles' is not assignable to type '{ subComponentStyles?: { closeButton: IStyleFunctionOrObject; } | undefined; }'. +@fluentui/react: 597 ? (this._classNames.subComponentStyles.panel as IStyleFunctionOrObject) +@fluentui/react: ~~~~~~~~~~~~ +@fluentui/react: src/components/Dropdown/Dropdown.types.ts:273:51 - error TS2344: Type 'IPanelStyles' does not satisfy the constraint 'IStyleSet'. +@fluentui/react: Type 'IPanelStyles' is not assignable to type '{ subComponentStyles?: { closeButton: IStyleFunctionOrObject; } | undefined; }'. +@fluentui/react: The types of 'subComponentStyles.closeButton' are incompatible between these types. +@fluentui/react: Type 'Partial' is not assignable to type 'IStyleFunctionOrObject'. +@fluentui/react: Type 'Partial' is not assignable to type 'DeepPartial'. +@fluentui/react: Property 'root' is incompatible with index signature. +@fluentui/react: Type 'string | false | IRawStyle | IStyleBaseArray | null' is not assignable to type 'DeepPartial[] | undefined'. +@fluentui/react: Type 'null' is not assignable to type 'DeepPartial[] | undefined'. +@fluentui/react: 273 panel: IStyleFunctionOrObject; +@fluentui/react: ~~~~~~~~~~~~ @fluentui/react: src/components/GroupedList/GroupedListSection.tsx:172:16 - error TS2790: The operand of a 'delete' operator must be optional. @fluentui/react: 172 delete this._dragDropSubscription; @fluentui/react: ~~~~~~~~~~~~~~~~~~~~~~~~~~ -@fluentui/react: Found 9 errors. +@fluentui/react: Found 12 errors. @fluentui/react: [XX:XX:XX XM] x ------------------------------------ @fluentui/react: [XX:XX:XX XM] x Error previously detected. See above for error messages. @fluentui/react: [XX:XX:XX XM] x Other tasks that did not complete: [ts:commonjs] @fluentui/react: error Command failed with exit code 1. -@fluentui/react-experiments: [XX:XX:XX XM] x Error detected while running 'ts:esm' +a11y-tests: [XX:XX:XX XM] x Error detected while running '_wrapFunction' +a11y-tests: [XX:XX:XX XM] x ------------------------------------ +a11y-tests: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/apps/a11y-tests/tsconfig.json" +a11y-tests: at ChildProcess.exithandler (child_process.js:308:12) +a11y-tests: at ChildProcess.emit (events.js:314:20) +a11y-tests: at ChildProcess.EventEmitter.emit (domain.js:506:15) +a11y-tests: at maybeClose (internal/child_process.js:1022:16) +a11y-tests: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) +a11y-tests: at Process.callbackTrampoline (internal/async_hooks.js:126:14) +a11y-tests: [XX:XX:XX XM] x stdout: +a11y-tests: [XX:XX:XX XM] x src/tests/ComponentExamples.test.tsx:75:14 - error TS2343: This syntax requires an imported helper named '__spreadArray' which does not exist in 'tslib'. Consider upgrading your version of 'tslib'. +a11y-tests: 75 files.push(...exampleFiles); +a11y-tests: ~~~~~~~~~~~~~~~ +a11y-tests: ../../packages/react-internal/lib/components/Panel/Panel.types.d.ts:96:55 - error TS2344: Type 'IPanelStyles' does not satisfy the constraint 'IStyleSet'. +a11y-tests: Type 'IPanelStyles' is not assignable to type '{ subComponentStyles?: { closeButton: IStyleFunctionOrObject; } | undefined; }'. +a11y-tests: The types of 'subComponentStyles.closeButton' are incompatible between these types. +a11y-tests: Type 'Partial' is not assignable to type 'IStyleFunctionOrObject'. +a11y-tests: Type 'Partial' is not assignable to type 'DeepPartial'. +a11y-tests: Property 'root' is incompatible with index signature. +a11y-tests: Type 'string | false | IRawStyle | IStyleBaseArray | null' is not assignable to type 'DeepPartial[] | undefined'. +a11y-tests: Type 'null' is not assignable to type 'DeepPartial[] | undefined'. +a11y-tests: 96 styles?: IStyleFunctionOrObject; +a11y-tests: ~~~~~~~~~~~~ +a11y-tests: ../../packages/react/lib/components/Dropdown/Dropdown.types.d.ts:220:53 - error TS2344: Type 'IPanelStyles' does not satisfy the constraint 'IStyleSet'. +a11y-tests: Type 'IPanelStyles' is not assignable to type '{ subComponentStyles?: { closeButton: IStyleFunctionOrObject; } | undefined; }'. +a11y-tests: 220 panel: IStyleFunctionOrObject; +a11y-tests: ~~~~~~~~~~~~ +a11y-tests: Found 3 errors. +a11y-tests: [XX:XX:XX XM] x ------------------------------------ +a11y-tests: [XX:XX:XX XM] x Error previously detected. See above for error messages. +a11y-tests: [XX:XX:XX XM] x Other tasks that did not complete: [ts:esm] +a11y-tests: error Command failed with exit code 1. +server-rendered-app: [XX:XX:XX XM] x Error detected while running 'ts:esm' +server-rendered-app: [XX:XX:XX XM] x ------------------------------------ +server-rendered-app: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/apps/server-rendered-app/tsconfig.json" +server-rendered-app: at ChildProcess.exithandler (child_process.js:308:12) +server-rendered-app: at ChildProcess.emit (events.js:314:20) +server-rendered-app: at ChildProcess.EventEmitter.emit (domain.js:506:15) +server-rendered-app: at maybeClose (internal/child_process.js:1022:16) +server-rendered-app: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) +server-rendered-app: at Process.callbackTrampoline (internal/async_hooks.js:126:14) +server-rendered-app: [XX:XX:XX XM] x stdout: +server-rendered-app: [XX:XX:XX XM] x ../../packages/react-internal/lib/components/Panel/Panel.types.d.ts:96:55 - error TS2344: Type 'IPanelStyles' does not satisfy the constraint 'IStyleSet'. +server-rendered-app: Type 'IPanelStyles' is not assignable to type '{ subComponentStyles?: { closeButton: IStyleFunctionOrObject; }; }'. +server-rendered-app: The types of 'subComponentStyles.closeButton' are incompatible between these types. +server-rendered-app: Type 'Partial' is not assignable to type 'IStyleFunctionOrObject'. +server-rendered-app: Type 'Partial' is not assignable to type 'DeepPartial'. +server-rendered-app: Property 'root' is incompatible with index signature. +server-rendered-app: Type 'IStyle' is not assignable to type 'DeepPartial[]'. +server-rendered-app: Type 'string' is not assignable to type 'DeepPartial[]'. +server-rendered-app: 96 styles?: IStyleFunctionOrObject; +server-rendered-app: ~~~~~~~~~~~~ +server-rendered-app: ../../packages/react/lib/components/Dropdown/Dropdown.types.d.ts:220:53 - error TS2344: Type 'IPanelStyles' does not satisfy the constraint 'IStyleSet'. +server-rendered-app: Type 'IPanelStyles' is not assignable to type '{ subComponentStyles?: { closeButton: IStyleFunctionOrObject; }; }'. +server-rendered-app: 220 panel: IStyleFunctionOrObject; +server-rendered-app: ~~~~~~~~~~~~ +server-rendered-app: Found 2 errors. +server-rendered-app: [XX:XX:XX XM] x ------------------------------------ +server-rendered-app: [XX:XX:XX XM] x Error previously detected. See above for error messages. +server-rendered-app: [XX:XX:XX XM] x Other tasks that did not complete: [ts:commonjs] +server-rendered-app: error Command failed with exit code 1. +@fluentui/azure-themes: [XX:XX:XX XM] x Error detected while running 'ts:esm' +@fluentui/azure-themes: [XX:XX:XX XM] x ------------------------------------ +@fluentui/azure-themes: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/azure-themes/tsconfig.json" +@fluentui/azure-themes: at ChildProcess.exithandler (child_process.js:308:12) +@fluentui/azure-themes: at ChildProcess.emit (events.js:314:20) +@fluentui/azure-themes: at ChildProcess.EventEmitter.emit (domain.js:506:15) +@fluentui/azure-themes: at maybeClose (internal/child_process.js:1022:16) +@fluentui/azure-themes: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) +@fluentui/azure-themes: at Process.callbackTrampoline (internal/async_hooks.js:126:14) +@fluentui/azure-themes: [XX:XX:XX XM] x stdout: +@fluentui/azure-themes: [XX:XX:XX XM] x src/azure/styles/ContextualMenu.styles.ts:20:11 - error TS2322: Type '{ backgroundColor: string; borderColor: string; borderStyle: string; borderWidth: string; boxShadow: string; selectors: { '.ms-Callout-beak': { backgroundColor: string; }; }; }' is not assignable to type 'DeepPartial[]'. +@fluentui/azure-themes: Object literal may only specify known properties, and 'backgroundColor' does not exist in type 'DeepPartial[]'. +@fluentui/azure-themes: 20 backgroundColor: semanticColors.inputBackground, +@fluentui/azure-themes: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/azure-themes: src/azure/styles/ContextualMenu.styles.ts:32:7 - error TS2322: Type '(itemStyleProps: IContextualMenuItemStyleProps) => Partial' is not assignable to type 'IStyleFunctionOrObject'. +@fluentui/azure-themes: Type '(itemStyleProps: IContextualMenuItemStyleProps) => Partial' is not assignable to type 'IStyleFunction'. +@fluentui/azure-themes: Type 'Partial' is not assignable to type 'DeepPartial'. +@fluentui/azure-themes: Property 'root' is incompatible with index signature. +@fluentui/azure-themes: Type 'string | false | IRawStyle | IStyleBaseArray | null' is not assignable to type 'DeepPartial[] | undefined'. +@fluentui/azure-themes: Type 'null' is not assignable to type 'DeepPartial[] | undefined'. +@fluentui/azure-themes: 32 menuItem: (itemStyleProps: IContextualMenuItemStyleProps): Partial => { +@fluentui/azure-themes: ~~~~~~~~ +@fluentui/azure-themes: src/azure/styles/TeachingBubble.styles.ts:54:11 - error TS2322: Type '{ borderColor: string; borderStyle: string; borderWidth: string; boxShadow: string; selectors: { '.ms-Callout-beak': { backgroundColor: string; }; }; }' is not assignable to type 'DeepPartial[]'. +@fluentui/azure-themes: Object literal may only specify known properties, and 'borderColor' does not exist in type 'DeepPartial[]'. +@fluentui/azure-themes: 54 borderColor: semanticColors.inputBorder, +@fluentui/azure-themes: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/azure-themes: Found 3 errors. +@fluentui/azure-themes: [XX:XX:XX XM] x ------------------------------------ +@fluentui/azure-themes: [XX:XX:XX XM] x Error previously detected. See above for error messages. +@fluentui/azure-themes: [XX:XX:XX XM] x Other tasks that did not complete: [ts:commonjs] +@fluentui/azure-themes: error Command failed with exit code 1. +@fluentui/react-charting: [XX:XX:XX XM] x Error detected while running '_wrapFunction' +@fluentui/react-charting: [XX:XX:XX XM] x ------------------------------------ +@fluentui/react-charting: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/react-charting/tsconfig.json" +@fluentui/react-charting: at ChildProcess.exithandler (child_process.js:308:12) +@fluentui/react-charting: at ChildProcess.emit (events.js:314:20) +@fluentui/react-charting: at ChildProcess.EventEmitter.emit (domain.js:506:15) +@fluentui/react-charting: at maybeClose (internal/child_process.js:1022:16) +@fluentui/react-charting: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) +@fluentui/react-charting: at Process.callbackTrampoline (internal/async_hooks.js:126:14) +@fluentui/react-charting: [XX:XX:XX XM] x stdout: +@fluentui/react-charting: [XX:XX:XX XM] x src/utilities/utilities.ts:367:13 - error TS2343: This syntax requires an imported helper named '__spreadArray' which does not exist in 'tslib'. Consider upgrading your version of 'tslib'. +@fluentui/react-charting: 367 return [...array, value]; +@fluentui/react-charting: ~~~~~~~~ +@fluentui/react-charting: Found 1 error. +@fluentui/react-charting: [XX:XX:XX XM] x ------------------------------------ +@fluentui/react-charting: [XX:XX:XX XM] x Error previously detected. See above for error messages. +@fluentui/react-charting: [XX:XX:XX XM] x Other tasks that did not complete: [ts:esm] +@fluentui/react-charting: error Command failed with exit code 1. +@fluentui/react-experiments: [XX:XX:XX XM] x Error detected while running '_wrapFunction' @fluentui/react-experiments: [XX:XX:XX XM] x ------------------------------------ -@fluentui/react-experiments: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/react-experiments/tsconfig.json" +@fluentui/react-experiments: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/react-experiments/tsconfig.json" @fluentui/react-experiments: at ChildProcess.exithandler (child_process.js:308:12) @fluentui/react-experiments: at ChildProcess.emit (events.js:314:20) @fluentui/react-experiments: at ChildProcess.EventEmitter.emit (domain.js:506:15) -@fluentui/react-experiments: at maybeClose (internal/child_process.js:1021:16) -@fluentui/react-experiments: at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5) +@fluentui/react-experiments: at maybeClose (internal/child_process.js:1022:16) +@fluentui/react-experiments: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) @fluentui/react-experiments: at Process.callbackTrampoline (internal/async_hooks.js:126:14) @fluentui/react-experiments: [XX:XX:XX XM] x stdout: @fluentui/react-experiments: [XX:XX:XX XM] x src/components/FloatingSuggestions/FloatingPeopleSuggestions/defaults/DefaultPeopleSuggestionsItem.tsx:12:72 - error TS2339: Property 'peoplePickerPersonaContent' does not exist on type 'typeof import("*.scss")'. @@ -1199,30 +1858,67 @@ codesandbox-react-northstar-template: error Command failed with exit code 1. @fluentui/react-experiments: src/components/FloatingSuggestions/FloatingSuggestions.tsx:202:27 - error TS2339: Property 'callout' does not exist on type 'typeof import("*.scss")'. @fluentui/react-experiments: 202 className={styles.callout} @fluentui/react-experiments: ~~~~~~~ -@fluentui/react-experiments: src/components/SelectedItemsList/Items/subcomponents/DefaultEditingItem.tsx:75:102 - error TS2339: Property 'editingContainer' does not exist on type 'typeof import("*.scss")'. -@fluentui/react-experiments: 75 -@fluentui/react-experiments: ~~~~~~~~~~~~~~~~ -@fluentui/react-experiments: src/components/SelectedItemsList/Items/subcomponents/DefaultEditingItem.tsx:86:29 - error TS2339: Property 'editingInput' does not exist on type 'typeof import("*.scss")'. -@fluentui/react-experiments: 86 className={styles.editingInput} -@fluentui/react-experiments: ~~~~~~~~~~~~ -@fluentui/react-experiments: src/components/SelectedItemsList/SelectedPeopleList/Items/SelectedPersona.tsx:113:13 - error TS2774: This condition will always return true since the function is always defined. Did you mean to call it instead? -@fluentui/react-experiments: 113 if (onItemChange && getExpandedItems) { -@fluentui/react-experiments: ~~~~~~~~~~~~ -@fluentui/react-experiments: src/components/SelectedItemsList/SelectedPeopleList/SelectedPeopleList.test.tsx:94:9 - error TS2322: Type 'ComponentType>' is not assignable to type 'ComponentClass, any> | FunctionComponent> | undefined'. -@fluentui/react-experiments: Type 'ComponentClass, any>' is not assignable to type 'ComponentClass, any> | FunctionComponent> | undefined'. +@fluentui/react-experiments: src/components/Pagination/Pagination.base.tsx:210:7 - error TS2322: Type 'string' is not assignable to type '"" | `${string} ${number} undefined ${number}` | `${string} ${number} ${string} ${number}` | undefined'. +@fluentui/react-experiments: 210 ariaLabel = ariaLabel + ' ' + selectedAriaLabel; +@fluentui/react-experiments: ~~~~~~~~~ +@fluentui/react-experiments: src/components/SelectedItemsList/Items/subcomponents/DefaultEditingItem.tsx:241:100 - error TS2339: Property 'editingContainer' does not exist on type 'typeof import("*.scss")'. +@fluentui/react-experiments: 241 +@fluentui/react-experiments: ~~~~~~~~~~~~~~~~ +@fluentui/react-experiments: src/components/SelectedItemsList/Items/subcomponents/DefaultEditingItem.tsx:251:27 - error TS2339: Property 'editingInput' does not exist on type 'typeof import("*.scss")'. +@fluentui/react-experiments: 251 className={styles.editingInput} +@fluentui/react-experiments: ~~~~~~~~~~~~ +@fluentui/react-experiments: src/components/SelectedItemsList/SelectedItemsList.tsx:27:36 - error TS2343: This syntax requires an imported helper named '__spreadArray' which does not exist in 'tslib'. Consider upgrading your version of 'tslib'. +@fluentui/react-experiments: 27 const updatedItems: TItem[] = [...items]; +@fluentui/react-experiments: ~~~~~~~~ +@fluentui/react-experiments: src/components/SelectedItemsList/SelectedPeopleList/Items/SelectedPersona.styles.ts:103:11 - error TS2322: Type '{ color: string; }' is not assignable to type 'DeepPartial[]'. +@fluentui/react-experiments: Object literal may only specify known properties, and 'color' does not exist in type 'DeepPartial[]'. +@fluentui/react-experiments: 103 color: 'inherit', +@fluentui/react-experiments: ~~~~~~~~~~~~~~~~ +@fluentui/react-experiments: src/components/SelectedItemsList/SelectedPeopleList/Items/SelectedPersona.styles.ts:134:11 - error TS2322: Type '{ padding: string; }' is not assignable to type 'DeepPartial[]'. +@fluentui/react-experiments: Object literal may only specify known properties, and 'padding' does not exist in type 'DeepPartial[]'. +@fluentui/react-experiments: 134 padding: '0 8px', +@fluentui/react-experiments: ~~~~~~~~~~~~~~~~ +@fluentui/react-experiments: src/components/SelectedItemsList/SelectedPeopleList/Items/SelectedPersona.styles.ts:138:9 - error TS2322: Type '{} | { fontSize: number; }' is not assignable to type 'DeepPartial[] | undefined'. +@fluentui/react-experiments: Type '{}' is missing the following properties from type 'DeepPartial[]': length, pop, push, concat, and 26 more. +@fluentui/react-experiments: 138 initials: isValid +@fluentui/react-experiments: ~~~~~~~~ +@fluentui/react-experiments: src/components/SelectedItemsList/SelectedPeopleList/Items/SelectedPersona.tsx:12:70 - error TS2344: Type 'ISelectedPersonaStyles' does not satisfy the constraint 'IStyleSet'. +@fluentui/react-experiments: Type 'ISelectedPersonaStyles' is not assignable to type '{ subComponentStyles?: { personaStyles: IStyleFunctionOrObject; personaCoinStyles: IStyleFunctionOrObject; actionButtonStyles: IStyleFunctionOrObject<...>; } | undefined; }'. +@fluentui/react-experiments: The types of 'subComponentStyles.actionButtonStyles' are incompatible between these types. +@fluentui/react-experiments: Type 'Partial' is not assignable to type 'IStyleFunctionOrObject'. +@fluentui/react-experiments: Type 'Partial' is not assignable to type 'DeepPartial'. +@fluentui/react-experiments: Property 'root' is incompatible with index signature. +@fluentui/react-experiments: Type 'string | false | IRawStyle | IStyleBaseArray | null' is not assignable to type 'DeepPartial[] | undefined'. +@fluentui/react-experiments: Type 'null' is not assignable to type 'DeepPartial[] | undefined'. +@fluentui/react-experiments: 12 const getClassNames = classNamesFunction(); +@fluentui/react-experiments: ~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/react-experiments: src/components/SelectedItemsList/SelectedPeopleList/Items/SelectedPersona.tsx:22:63 - error TS2344: Type 'ISelectedPersonaStyles' does not satisfy the constraint 'IStyleSet'. +@fluentui/react-experiments: Type 'ISelectedPersonaStyles' is not assignable to type '{ subComponentStyles?: { personaStyles: IStyleFunctionOrObject; personaCoinStyles: IStyleFunctionOrObject; actionButtonStyles: IStyleFunctionOrObject<...>; } | undefined; }'. +@fluentui/react-experiments: 22 styles?: IStyleFunctionOrObject; +@fluentui/react-experiments: ~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/react-experiments: src/components/SelectedItemsList/SelectedPeopleList/Items/SelectedPersona.tsx:135:42 - error TS2344: Type 'ISelectedPersonaStyles' does not satisfy the constraint 'IStyleSet'. +@fluentui/react-experiments: Type 'ISelectedPersonaStyles' is not assignable to type '{ subComponentStyles?: { personaStyles: IStyleFunctionOrObject; personaCoinStyles: IStyleFunctionOrObject; actionButtonStyles: IStyleFunctionOrObject<...>; } | undefined; }'. +@fluentui/react-experiments: 135 const classNames: IProcessedStyleSet = React.useMemo( +@fluentui/react-experiments: ~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/react-experiments: src/components/SelectedItemsList/SelectedPeopleList/Items/SelectedPersona.tsx:203:95 - error TS2344: Type 'ISelectedPersonaStyles' does not satisfy the constraint 'IStyleSet'. +@fluentui/react-experiments: Type 'ISelectedPersonaStyles' is not assignable to type '{ subComponentStyles?: { personaStyles: IStyleFunctionOrObject; personaCoinStyles: IStyleFunctionOrObject; actionButtonStyles: IStyleFunctionOrObject<...>; } | undefined; }'. +@fluentui/react-experiments: 203 export const SelectedPersona = styled, ISelectedPersonaStyleProps, ISelectedPersonaStyles>( +@fluentui/react-experiments: ~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/react-experiments: src/components/SelectedItemsList/SelectedPeopleList/SelectedPeopleList.test.tsx:94:9 - error TS2322: Type 'ItemCanDispatchTrigger' is not assignable to type 'ComponentType> | undefined'. +@fluentui/react-experiments: Type 'ComponentClass, any>' is not assignable to type 'ComponentType> | undefined'. @fluentui/react-experiments: Type 'ComponentClass, any>' is not assignable to type 'ComponentClass, any>'. @fluentui/react-experiments: Types of property 'propTypes' are incompatible. @fluentui/react-experiments: Type 'WeakValidationMap> | undefined' is not assignable to type 'WeakValidationMap> | undefined'. @fluentui/react-experiments: Type 'WeakValidationMap>' is not assignable to type 'WeakValidationMap>'. -@fluentui/react-experiments: Types of property 'item' are incompatible. -@fluentui/react-experiments: Type 'Validator | undefined' is not assignable to type 'Validator | undefined'. -@fluentui/react-experiments: Type 'Validator' is not assignable to type 'Validator'. -@fluentui/react-experiments: Type 'unknown' is not assignable to type 'IPersonaProps & BaseSelectedItem'. -@fluentui/react-experiments: Type 'unknown' is not assignable to type 'IPersonaProps'. +@fluentui/react-experiments: Types of property 'createGenericItem' are incompatible. +@fluentui/react-experiments: Type 'Validator<((input: string) => unknown) | null | undefined> | undefined' is not assignable to type 'Validator<((input: string) => IPersonaProps & BaseSelectedItem) | null | undefined> | undefined'. +@fluentui/react-experiments: Type 'Validator<((input: string) => unknown) | null | undefined>' is not assignable to type 'Validator<((input: string) => IPersonaProps & BaseSelectedItem) | null | undefined>'. +@fluentui/react-experiments: Type '((input: string) => unknown) | null | undefined' is not assignable to type '((input: string) => IPersonaProps & BaseSelectedItem) | null | undefined'. +@fluentui/react-experiments: Type '(input: string) => unknown' is not assignable to type '(input: string) => IPersonaProps & BaseSelectedItem'. @fluentui/react-experiments: 94 onRenderItem={SelectedItem} @fluentui/react-experiments: ~~~~~~~~~~~~ -@fluentui/react-experiments: src/components/SelectedItemsList/SelectedItemsList.types.ts:75:3 -@fluentui/react-experiments: 75 onRenderItem?: React.ComponentType>; +@fluentui/react-experiments: src/components/SelectedItemsList/SelectedItemsList.types.ts:80:3 +@fluentui/react-experiments: 80 onRenderItem?: React.ComponentType>; @fluentui/react-experiments: ~~~~~~~~~~~~ @fluentui/react-experiments: The expected type comes from property 'onRenderItem' which is declared here on type 'IntrinsicAttributes & Pick, "onChange" | ... 17 more ... | "itemsAreEqual"> & RefAttributes<...>' @fluentui/react-experiments: src/components/StaticList/StaticList.tsx:14:37 - error TS2339: Property 'root' does not exist on type 'typeof import("*.scss")'. @@ -1345,24 +2041,34 @@ codesandbox-react-northstar-template: error Command failed with exit code 1. @fluentui/react-experiments: src/utilities/scrolling/ScrollContainer.tsx:76:68 - error TS2339: Property 'root' does not exist on type 'typeof import("*.scss")'. @fluentui/react-experiments: 76 className={css('ms-ScrollContainer', ScrollContainerStyles.root, className)} @fluentui/react-experiments: ~~~~ -@fluentui/react-experiments: Found 48 errors. +@fluentui/react-experiments: Found 56 errors. @fluentui/react-experiments: [XX:XX:XX XM] x ------------------------------------ @fluentui/react-experiments: [XX:XX:XX XM] x Error previously detected. See above for error messages. -@fluentui/react-experiments: [XX:XX:XX XM] x Other tasks that did not complete: [ts:commonjs] +@fluentui/react-experiments: [XX:XX:XX XM] x Other tasks that did not complete: [ts:esm] @fluentui/react-experiments: error Command failed with exit code 1. -@fluentui/react-monaco-editor: [XX:XX:XX XM] x Error detected while running 'ts:esm' +@fluentui/react-monaco-editor: [XX:XX:XX XM] x Error detected while running '_wrapFunction' @fluentui/react-monaco-editor: [XX:XX:XX XM] x ------------------------------------ -@fluentui/react-monaco-editor: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/react-monaco-editor/tsconfig.json" +@fluentui/react-monaco-editor: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/react-monaco-editor/tsconfig.json" @fluentui/react-monaco-editor: at ChildProcess.exithandler (child_process.js:308:12) @fluentui/react-monaco-editor: at ChildProcess.emit (events.js:314:20) @fluentui/react-monaco-editor: at ChildProcess.EventEmitter.emit (domain.js:506:15) -@fluentui/react-monaco-editor: at maybeClose (internal/child_process.js:1021:16) -@fluentui/react-monaco-editor: at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5) +@fluentui/react-monaco-editor: at maybeClose (internal/child_process.js:1022:16) +@fluentui/react-monaco-editor: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) @fluentui/react-monaco-editor: at Process.callbackTrampoline (internal/async_hooks.js:126:14) @fluentui/react-monaco-editor: [XX:XX:XX XM] x stdout: @fluentui/react-monaco-editor: [XX:XX:XX XM] x ../monaco-editor/monaco-typescript.d.ts:9:25 - error TS2307: Cannot find module '@fluentui/monaco-editor' or its corresponding type declarations. @fluentui/react-monaco-editor: 9 import * as monaco from '@fluentui/monaco-editor'; @fluentui/react-monaco-editor: ~~~~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/react-monaco-editor: ../react-internal/lib/components/Panel/Panel.types.d.ts:96:55 - error TS2344: Type 'IPanelStyles' does not satisfy the constraint 'IStyleSet'. +@fluentui/react-monaco-editor: Type 'IPanelStyles' is not assignable to type '{ subComponentStyles?: { closeButton: IStyleFunctionOrObject; } | undefined; }'. +@fluentui/react-monaco-editor: The types of 'subComponentStyles.closeButton' are incompatible between these types. +@fluentui/react-monaco-editor: Type 'Partial' is not assignable to type 'IStyleFunctionOrObject'. +@fluentui/react-monaco-editor: Type 'Partial' is not assignable to type 'DeepPartial'. +@fluentui/react-monaco-editor: Property 'root' is incompatible with index signature. +@fluentui/react-monaco-editor: Type 'string | false | IRawStyle | IStyleBaseArray | null' is not assignable to type 'DeepPartial[] | undefined'. +@fluentui/react-monaco-editor: Type 'null' is not assignable to type 'DeepPartial[] | undefined'. +@fluentui/react-monaco-editor: 96 styles?: IStyleFunctionOrObject; +@fluentui/react-monaco-editor: ~~~~~~~~~~~~ @fluentui/react-monaco-editor: src/components/Editor.tsx:1:25 - error TS2307: Cannot find module '@fluentui/monaco-editor' or its corresponding type declarations. @fluentui/react-monaco-editor: 1 import * as monaco from '@fluentui/monaco-editor'; @fluentui/react-monaco-editor: ~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -1372,6 +2078,20 @@ codesandbox-react-northstar-template: error Command failed with exit code 1. @fluentui/react-monaco-editor: src/interfaces/monaco.ts:5:25 - error TS2307: Cannot find module '@fluentui/monaco-editor/esm/vs/editor/editor.api' or its corresponding type declarations. @fluentui/react-monaco-editor: 5 import * as monaco from '@fluentui/monaco-editor/esm/vs/editor/editor.api'; @fluentui/react-monaco-editor: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/react-monaco-editor: src/transpiler/exampleTransform.ts:83:7 - error TS2343: This syntax requires an imported helper named '__spreadArray' which does not exist in 'tslib'. Consider upgrading your version of 'tslib'. +@fluentui/react-monaco-editor: 83 ...imprt.identifiers.map(item => (item.as ? `${item.name}: ${item.as}` : item.name)), +@fluentui/react-monaco-editor: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/react-monaco-editor: src/transpiler/exampleTransform.ts:116:13 - error TS2769: No overload matches this call. +@fluentui/react-monaco-editor: Overload 1 of 2, '(...items: ConcatArray<`const { ${string} } = window.${string};`>[]): `const { ${string} } = window.${string};`[]', gave the following error. +@fluentui/react-monaco-editor: Argument of type 'string[]' is not assignable to parameter of type 'ConcatArray<`const { ${string} } = window.${string};`>'. +@fluentui/react-monaco-editor: The types returned by 'slice(...)' are incompatible between these types. +@fluentui/react-monaco-editor: Type 'string[]' is not assignable to type '`const { ${string} } = window.${string};`[]'. +@fluentui/react-monaco-editor: Type 'string' is not assignable to type '`const { ${string} } = window.${string};`'. +@fluentui/react-monaco-editor: Overload 2 of 2, '(...items: (`const { ${string} } = window.${string};` | ConcatArray<`const { ${string} } = window.${string};`>)[]): `const { ${string} } = window.${string};`[]', gave the following error. +@fluentui/react-monaco-editor: Argument of type 'string[]' is not assignable to parameter of type '`const { ${string} } = window.${string};` | ConcatArray<`const { ${string} } = window.${string};`>'. +@fluentui/react-monaco-editor: Type 'string[]' is not assignable to type '`const { ${string} } = window.${string};`'. +@fluentui/react-monaco-editor: 116 .concat(lines); +@fluentui/react-monaco-editor: ~~~~~ @fluentui/react-monaco-editor: src/transpiler/transpile.ts:2:25 - error TS2307: Cannot find module '@fluentui/monaco-editor' or its corresponding type declarations. @fluentui/react-monaco-editor: 2 import * as monaco from '@fluentui/monaco-editor'; @fluentui/react-monaco-editor: ~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -1390,31 +2110,80 @@ codesandbox-react-northstar-template: error Command failed with exit code 1. @fluentui/react-monaco-editor: src/utilities/getQueryParam.test.ts:7:12 - error TS2790: The operand of a 'delete' operator must be optional. @fluentui/react-monaco-editor: 7 delete window.location; @fluentui/react-monaco-editor: ~~~~~~~~~~~~~~~ -@fluentui/react-monaco-editor: Found 10 errors. +@fluentui/react-monaco-editor: ../react/lib/components/Dropdown/Dropdown.types.d.ts:220:53 - error TS2344: Type 'IPanelStyles' does not satisfy the constraint 'IStyleSet'. +@fluentui/react-monaco-editor: Type 'IPanelStyles' is not assignable to type '{ subComponentStyles?: { closeButton: IStyleFunctionOrObject; } | undefined; }'. +@fluentui/react-monaco-editor: 220 panel: IStyleFunctionOrObject; +@fluentui/react-monaco-editor: ~~~~~~~~~~~~ +@fluentui/react-monaco-editor: Found 14 errors. @fluentui/react-monaco-editor: [XX:XX:XX XM] x ------------------------------------ @fluentui/react-monaco-editor: [XX:XX:XX XM] x Error previously detected. See above for error messages. -@fluentui/react-monaco-editor: [XX:XX:XX XM] x Other tasks that did not complete: [ts:commonjs] +@fluentui/react-monaco-editor: [XX:XX:XX XM] x Other tasks that did not complete: [ts:esm] @fluentui/react-monaco-editor: error Command failed with exit code 1. +@fluentui/theme-samples: [XX:XX:XX XM] x Error detected while running '_wrapFunction' +@fluentui/theme-samples: [XX:XX:XX XM] x ------------------------------------ +@fluentui/theme-samples: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/theme-samples/tsconfig.json" +@fluentui/theme-samples: at ChildProcess.exithandler (child_process.js:308:12) +@fluentui/theme-samples: at ChildProcess.emit (events.js:314:20) +@fluentui/theme-samples: at ChildProcess.EventEmitter.emit (domain.js:506:15) +@fluentui/theme-samples: at maybeClose (internal/child_process.js:1022:16) +@fluentui/theme-samples: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) +@fluentui/theme-samples: at Process.callbackTrampoline (internal/async_hooks.js:126:14) +@fluentui/theme-samples: [XX:XX:XX XM] x stdout: +@fluentui/theme-samples: [XX:XX:XX XM] x src/DarkCustomizations/DarkCustomizations.ts:207:1 - error TS2322: Type '{ Card: { styles: { root: { background: string; }; }; }; DatePicker: { styles: (props: IDatePickerStyleProps) => Partial; }; ... 12 more ...; SpinButton: { ...; }; }' is not assignable to type 'ComponentsStyles'. +@fluentui/theme-samples: Property 'Card' is incompatible with index signature. +@fluentui/theme-samples: Type '{ styles: { root: { background: string; }; }; }' is not assignable to type 'ComponentStyles'. +@fluentui/theme-samples: Types of property 'styles' are incompatible. +@fluentui/theme-samples: Type '{ root: { background: string; }; }' is not assignable to type 'IStyleFunctionOrObject | undefined'. +@fluentui/theme-samples: Type '{ root: { background: string; }; }' is not assignable to type 'DeepPartial'. +@fluentui/theme-samples: Property 'root' is incompatible with index signature. +@fluentui/theme-samples: Type '{ background: string; }' is missing the following properties from type 'DeepPartial[]': length, pop, push, concat, and 26 more. +@fluentui/theme-samples: 207 DarkTheme.components = componentStyles; +@fluentui/theme-samples: ~~~~~~~~~~~~~~~~~~~~ +@fluentui/theme-samples: src/DarkCustomizations/styles/PeoplePickerStyles.ts:57:11 - error TS2322: Type 'false | { color: string; selectors: { ':hover': { color: string; }; }; } | undefined' is not assignable to type 'DeepPartial'. +@fluentui/theme-samples: Type 'undefined' is not assignable to type 'DeepPartial'. +@fluentui/theme-samples: 57 selected && { +@fluentui/theme-samples: ~~~~~~~~~~~~~ +@fluentui/theme-samples: 58 color: DarkTheme.palette.black, +@fluentui/theme-samples: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/theme-samples: ... +@fluentui/theme-samples: 63 }, +@fluentui/theme-samples: ~~~~~~~~~~~~~~ +@fluentui/theme-samples: 64 }, +@fluentui/theme-samples: ~~~~~~~~~~~ +@fluentui/theme-samples: Found 2 errors. +@fluentui/theme-samples: [XX:XX:XX XM] x ------------------------------------ +@fluentui/theme-samples: [XX:XX:XX XM] x Error previously detected. See above for error messages. +@fluentui/theme-samples: [XX:XX:XX XM] x Other tasks that did not complete: [ts:esm] +@fluentui/theme-samples: error Command failed with exit code 1. @fluentui/e2e: [XX:XX:XX XM] x Cannot find config file "null". Please create a file called "just.config.js" in the root of the project next to "package.json". @fluentui/e2e: [XX:XX:XX XM] x Command not defined: ts -@fluentui/api-docs: [XX:XX:XX XM] x Error detected while running 'ts:esm' +@fluentui/api-docs: [XX:XX:XX XM] x Error detected while running '_wrapFunction' @fluentui/api-docs: [XX:XX:XX XM] x ------------------------------------ -@fluentui/api-docs: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/api-docs/tsconfig.json" +@fluentui/api-docs: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/api-docs/tsconfig.json" @fluentui/api-docs: at ChildProcess.exithandler (child_process.js:308:12) @fluentui/api-docs: at ChildProcess.emit (events.js:314:20) @fluentui/api-docs: at ChildProcess.EventEmitter.emit (domain.js:506:15) -@fluentui/api-docs: at maybeClose (internal/child_process.js:1021:16) -@fluentui/api-docs: at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5) +@fluentui/api-docs: at maybeClose (internal/child_process.js:1022:16) +@fluentui/api-docs: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) @fluentui/api-docs: at Process.callbackTrampoline (internal/async_hooks.js:126:14) @fluentui/api-docs: [XX:XX:XX XM] x stdout: -@fluentui/api-docs: [XX:XX:XX XM] x src/tableJson.ts:52:9 - error TS2322: Type 'readonly HeritageType[] | undefined' is not assignable to type 'HeritageType[] | undefined'. -@fluentui/api-docs: The type 'readonly HeritageType[]' is 'readonly' and cannot be assigned to the mutable type 'HeritageType[]'. +@fluentui/api-docs: [XX:XX:XX XM] x src/tableJson.ts:52:9 - error TS2322: Type '((HeritageType | readonly HeritageType[]) & any[]) | (HeritageType | readonly HeritageType[])[] | undefined' is not assignable to type 'HeritageType[] | undefined'. +@fluentui/api-docs: Type '(HeritageType | readonly HeritageType[])[]' is not assignable to type 'HeritageType[]'. +@fluentui/api-docs: Type 'HeritageType | readonly HeritageType[]' is not assignable to type 'HeritageType'. +@fluentui/api-docs: Property 'excerpt' is missing in type 'readonly HeritageType[]' but required in type 'HeritageType'. @fluentui/api-docs: 52 const extendsArr: HeritageType[] | undefined = @fluentui/api-docs: ~~~~~~~~~~ -@fluentui/api-docs: Found 1 error. +@fluentui/api-docs: ../../node_modules/@microsoft/api-extractor-model/dist/rollup.d.ts:1629:14 +@fluentui/api-docs: 1629 readonly excerpt: Excerpt; +@fluentui/api-docs: ~~~~~~~ +@fluentui/api-docs: 'excerpt' is declared here. +@fluentui/api-docs: src/tableJson.ts:62:9 - error TS2343: This syntax requires an imported helper named '__spreadArray' which does not exist in 'tslib'. Consider upgrading your version of 'tslib'. +@fluentui/api-docs: 62 ...getTokenHyperlinks(collectedData, extendsType.excerpt.tokens, extendsType.excerpt.tokenRange), +@fluentui/api-docs: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/api-docs: Found 2 errors. @fluentui/api-docs: [XX:XX:XX XM] x ------------------------------------ @fluentui/api-docs: [XX:XX:XX XM] x Error previously detected. See above for error messages. -@fluentui/api-docs: [XX:XX:XX XM] x Other tasks that did not complete: [ts:commonjs] +@fluentui/api-docs: [XX:XX:XX XM] x Other tasks that did not complete: [ts:esm] @fluentui/api-docs: error Command failed with exit code 1. @fluentui/react-docsite-components: [XX:XX:XX XM] x Error detected while running 'ts:esm' @fluentui/react-docsite-components: [XX:XX:XX XM] x ------------------------------------ @@ -1422,13 +2191,16 @@ codesandbox-react-northstar-template: error Command failed with exit code 1. @fluentui/react-docsite-components: at ChildProcess.exithandler (child_process.js:308:12) @fluentui/react-docsite-components: at ChildProcess.emit (events.js:314:20) @fluentui/react-docsite-components: at ChildProcess.EventEmitter.emit (domain.js:506:15) -@fluentui/react-docsite-components: at maybeClose (internal/child_process.js:1021:16) -@fluentui/react-docsite-components: at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5) +@fluentui/react-docsite-components: at maybeClose (internal/child_process.js:1022:16) +@fluentui/react-docsite-components: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) @fluentui/react-docsite-components: at Process.callbackTrampoline (internal/async_hooks.js:126:14) @fluentui/react-docsite-components: [XX:XX:XX XM] x stdout: @fluentui/react-docsite-components: [XX:XX:XX XM] x src/components/Page/Page.tsx:21:25 - error TS2307: Cannot find module './Page.module.scss' or its corresponding type declarations. @fluentui/react-docsite-components: 21 import * as styles from './Page.module.scss'; @fluentui/react-docsite-components: ~~~~~~~~~~~~~~~~~~~~ +@fluentui/react-docsite-components: src/components/Page/Page.tsx:288:26 - error TS2343: This syntax requires an imported helper named '__spreadArray' which does not exist in 'tslib'. Consider upgrading your version of 'tslib'. +@fluentui/react-docsite-components: 288 jumpLinks.push(...(section.jumpLinks || [])); +@fluentui/react-docsite-components: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @fluentui/react-docsite-components: src/components/Page/sections/BestPracticesSection.tsx:7:25 - error TS2307: Cannot find module '../Page.module.scss' or its corresponding type declarations. @fluentui/react-docsite-components: 7 import * as styles from '../Page.module.scss'; @fluentui/react-docsite-components: ~~~~~~~~~~~~~~~~~~~~~ @@ -1469,37 +2241,116 @@ codesandbox-react-northstar-template: error Command failed with exit code 1. @fluentui/react-docsite-components: 52 const App: React.FunctionComponent = props => ; @fluentui/react-docsite-components: ~~~~~~~~~~ @fluentui/react-docsite-components: This spread always overwrites this property. -@fluentui/react-docsite-components: Found 13 errors. +@fluentui/react-docsite-components: Found 14 errors. @fluentui/react-docsite-components: [XX:XX:XX XM] x ------------------------------------ @fluentui/react-docsite-components: [XX:XX:XX XM] x Error previously detected. See above for error messages. @fluentui/react-docsite-components: [XX:XX:XX XM] x Other tasks that did not complete: [ts:commonjs] @fluentui/react-docsite-components: error Command failed with exit code 1. +@fluentui/storybook: [XX:XX:XX XM] x Error detected while running '_wrapFunction' +@fluentui/storybook: [XX:XX:XX XM] x ------------------------------------ +@fluentui/storybook: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/packages/storybook/tsconfig.json" +@fluentui/storybook: at ChildProcess.exithandler (child_process.js:308:12) +@fluentui/storybook: at ChildProcess.emit (events.js:314:20) +@fluentui/storybook: at ChildProcess.EventEmitter.emit (domain.js:506:15) +@fluentui/storybook: at maybeClose (internal/child_process.js:1022:16) +@fluentui/storybook: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) +@fluentui/storybook: at Process.callbackTrampoline (internal/async_hooks.js:126:14) +@fluentui/storybook: [XX:XX:XX XM] x stdout: +@fluentui/storybook: [XX:XX:XX XM] x ../react-internal/lib/components/Panel/Panel.types.d.ts:96:55 - error TS2344: Type 'IPanelStyles' does not satisfy the constraint 'IStyleSet'. +@fluentui/storybook: Type 'IPanelStyles' is not assignable to type '{ subComponentStyles?: { closeButton: IStyleFunctionOrObject; } | undefined; }'. +@fluentui/storybook: The types of 'subComponentStyles.closeButton' are incompatible between these types. +@fluentui/storybook: Type 'Partial' is not assignable to type 'IStyleFunctionOrObject'. +@fluentui/storybook: Type 'Partial' is not assignable to type 'DeepPartial'. +@fluentui/storybook: Property 'root' is incompatible with index signature. +@fluentui/storybook: Type 'string | false | IRawStyle | IStyleBaseArray | null' is not assignable to type 'DeepPartial[] | undefined'. +@fluentui/storybook: Type 'null' is not assignable to type 'DeepPartial[] | undefined'. +@fluentui/storybook: 96 styles?: IStyleFunctionOrObject; +@fluentui/storybook: ~~~~~~~~~~~~ +@fluentui/storybook: ../react/lib/components/Dropdown/Dropdown.types.d.ts:220:53 - error TS2344: Type 'IPanelStyles' does not satisfy the constraint 'IStyleSet'. +@fluentui/storybook: Type 'IPanelStyles' is not assignable to type '{ subComponentStyles?: { closeButton: IStyleFunctionOrObject; } | undefined; }'. +@fluentui/storybook: 220 panel: IStyleFunctionOrObject; +@fluentui/storybook: ~~~~~~~~~~~~ +@fluentui/storybook: src/knobs/useTheme.ts:21:43 - error TS2343: This syntax requires an imported helper named '__spreadArray' which does not exist in 'tslib'. Consider upgrading your version of 'tslib'. +@fluentui/storybook: 21 const themeOptions = [defaultThemeOption, ...v8ThemeOptions, ...v7ThemeOptions]; +@fluentui/storybook: ~~~~~~~~~~~~~~~~~ +@fluentui/storybook: Found 3 errors. +@fluentui/storybook: [XX:XX:XX XM] x ------------------------------------ +@fluentui/storybook: [XX:XX:XX XM] x Error previously detected. See above for error messages. +@fluentui/storybook: [XX:XX:XX XM] x Other tasks that did not complete: [ts:esm] +@fluentui/storybook: error Command failed with exit code 1. theming-designer: [XX:XX:XX XM] x Error detected while running 'ts:esm' theming-designer: [XX:XX:XX XM] x ------------------------------------ theming-designer: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/apps/theming-designer/tsconfig.json" theming-designer: at ChildProcess.exithandler (child_process.js:308:12) theming-designer: at ChildProcess.emit (events.js:314:20) theming-designer: at ChildProcess.EventEmitter.emit (domain.js:506:15) -theming-designer: at maybeClose (internal/child_process.js:1021:16) -theming-designer: at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5) +theming-designer: at maybeClose (internal/child_process.js:1022:16) +theming-designer: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) theming-designer: at Process.callbackTrampoline (internal/async_hooks.js:126:14) theming-designer: [XX:XX:XX XM] x stdout: -theming-designer: [XX:XX:XX XM] x ../../packages/react-monaco-editor/lib/interfaces/monaco.d.ts:1:25 - error TS2307: Cannot find module '@fluentui/monaco-editor/esm/vs/editor/editor.api' or its corresponding type declarations. +theming-designer: [XX:XX:XX XM] x ../../packages/react-internal/lib/components/Panel/Panel.types.d.ts:96:55 - error TS2344: Type 'IPanelStyles' does not satisfy the constraint 'IStyleSet'. +theming-designer: Type 'IPanelStyles' is not assignable to type '{ subComponentStyles?: { closeButton: IStyleFunctionOrObject; }; }'. +theming-designer: The types of 'subComponentStyles.closeButton' are incompatible between these types. +theming-designer: Type 'Partial' is not assignable to type 'IStyleFunctionOrObject'. +theming-designer: Type 'Partial' is not assignable to type 'DeepPartial'. +theming-designer: Property 'root' is incompatible with index signature. +theming-designer: Type 'IStyle' is not assignable to type 'DeepPartial[]'. +theming-designer: Type 'string' is not assignable to type 'DeepPartial[]'. +theming-designer: 96 styles?: IStyleFunctionOrObject; +theming-designer: ~~~~~~~~~~~~ +theming-designer: ../../packages/react-monaco-editor/lib/interfaces/monaco.d.ts:1:25 - error TS2307: Cannot find module '@fluentui/monaco-editor/esm/vs/editor/editor.api' or its corresponding type declarations. theming-designer: 1 import * as monaco from '@fluentui/monaco-editor/esm/vs/editor/editor.api'; theming-designer: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -theming-designer: Found 1 error. +theming-designer: ../../packages/react/lib/components/Dropdown/Dropdown.types.d.ts:220:53 - error TS2344: Type 'IPanelStyles' does not satisfy the constraint 'IStyleSet'. +theming-designer: Type 'IPanelStyles' is not assignable to type '{ subComponentStyles?: { closeButton: IStyleFunctionOrObject; }; }'. +theming-designer: 220 panel: IStyleFunctionOrObject; +theming-designer: ~~~~~~~~~~~~ +theming-designer: Found 3 errors. theming-designer: [XX:XX:XX XM] x ------------------------------------ theming-designer: [XX:XX:XX XM] x Error previously detected. See above for error messages. theming-designer: [XX:XX:XX XM] x Other tasks that did not complete: [ts:commonjs] theming-designer: error Command failed with exit code 1. +vr-tests: [XX:XX:XX XM] x Error detected while running 'ts:esm' +vr-tests: [XX:XX:XX XM] x ------------------------------------ +vr-tests: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/apps/vr-tests/tsconfig.json" +vr-tests: at ChildProcess.exithandler (child_process.js:308:12) +vr-tests: at ChildProcess.emit (events.js:314:20) +vr-tests: at ChildProcess.EventEmitter.emit (domain.js:506:15) +vr-tests: at maybeClose (internal/child_process.js:1022:16) +vr-tests: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) +vr-tests: at Process.callbackTrampoline (internal/async_hooks.js:126:14) +vr-tests: [XX:XX:XX XM] x stdout: +vr-tests: [XX:XX:XX XM] x src/stories/ThemeProvider.stories.tsx:54:65 - error TS2322: Type '{ background: string; }' is not assignable to type 'DeepPartial[]'. +vr-tests: Object literal may only specify known properties, and 'background' does not exist in type 'DeepPartial[]'. +vr-tests: 54 theme={{ components: { PrimaryButton: { styles: { root: { background: '#000' } } } } }} +vr-tests: ~~~~~~~~~~~~~~~~~~ +vr-tests: ../../packages/react-internal/lib/components/Panel/Panel.types.d.ts:96:55 - error TS2344: Type 'IPanelStyles' does not satisfy the constraint 'IStyleSet'. +vr-tests: Type 'IPanelStyles' is not assignable to type '{ subComponentStyles?: { closeButton: IStyleFunctionOrObject; } | undefined; }'. +vr-tests: The types of 'subComponentStyles.closeButton' are incompatible between these types. +vr-tests: Type 'Partial' is not assignable to type 'IStyleFunctionOrObject'. +vr-tests: Type 'Partial' is not assignable to type 'DeepPartial'. +vr-tests: Property 'root' is incompatible with index signature. +vr-tests: Type 'string | false | IRawStyle | IStyleBaseArray | null' is not assignable to type 'DeepPartial[] | undefined'. +vr-tests: Type 'null' is not assignable to type 'DeepPartial[] | undefined'. +vr-tests: 96 styles?: IStyleFunctionOrObject; +vr-tests: ~~~~~~~~~~~~ +vr-tests: ../../packages/react/lib/components/Dropdown/Dropdown.types.d.ts:220:53 - error TS2344: Type 'IPanelStyles' does not satisfy the constraint 'IStyleSet'. +vr-tests: Type 'IPanelStyles' is not assignable to type '{ subComponentStyles?: { closeButton: IStyleFunctionOrObject; } | undefined; }'. +vr-tests: 220 panel: IStyleFunctionOrObject; +vr-tests: ~~~~~~~~~~~~ +vr-tests: Found 3 errors. +vr-tests: [XX:XX:XX XM] x ------------------------------------ +vr-tests: [XX:XX:XX XM] x Error previously detected. See above for error messages. +vr-tests: [XX:XX:XX XM] x Other tasks that did not complete: [ts:commonjs] +vr-tests: error Command failed with exit code 1. @fluentui/react-examples: [XX:XX:XX XM] x Error detected while running 'ts:esm' @fluentui/react-examples: [XX:XX:XX XM] x ------------------------------------ @fluentui/react-examples: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/packages/react-examples/tsconfig.json" @fluentui/react-examples: at ChildProcess.exithandler (child_process.js:308:12) @fluentui/react-examples: at ChildProcess.emit (events.js:314:20) @fluentui/react-examples: at ChildProcess.EventEmitter.emit (domain.js:506:15) -@fluentui/react-examples: at maybeClose (internal/child_process.js:1021:16) -@fluentui/react-examples: at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5) +@fluentui/react-examples: at maybeClose (internal/child_process.js:1022:16) +@fluentui/react-examples: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) @fluentui/react-examples: at Process.callbackTrampoline (internal/async_hooks.js:126:14) @fluentui/react-examples: [XX:XX:XX XM] x stdout: @fluentui/react-examples: [XX:XX:XX XM] x src/react-avatar/utils/StoryExample.tsx:5:27 - error TS2339: Property 'root' does not exist on type 'typeof import("*.scss")'. @@ -1529,47 +2380,56 @@ theming-designer: error Command failed with exit code 1. @fluentui/react-examples: src/react-button/MenuButton/MenuButton.stories.tsx:21:27 - error TS2339: Property 'hStack' does not exist on type 'typeof import("*.scss")'. @fluentui/react-examples: 21
@fluentui/react-examples: ~~~~~~ -@fluentui/react-examples: src/react-button/MenuButton/MenuButton.stories.tsx:59:31 - error TS2339: Property 'vStack' does not exist on type 'typeof import("*.scss")'. -@fluentui/react-examples: 59
+@fluentui/react-examples: src/react-button/MenuButton/MenuButton.stories.tsx:56:31 - error TS2339: Property 'hStack' does not exist on type 'typeof import("*.scss")'. +@fluentui/react-examples: 56
@fluentui/react-examples: ~~~~~~ -@fluentui/react-examples: src/react-button/MenuButton/MenuButton.stories.tsx:73:31 - error TS2339: Property 'vStack' does not exist on type 'typeof import("*.scss")'. -@fluentui/react-examples: 73
+@fluentui/react-examples: src/react-button/MenuButton/MenuButton.stories.tsx:69:31 - error TS2339: Property 'vStack' does not exist on type 'typeof import("*.scss")'. +@fluentui/react-examples: 69
@fluentui/react-examples: ~~~~~~ -@fluentui/react-examples: src/react-button/MenuButton/MenuButton.stories.tsx:97:31 - error TS2339: Property 'vStack' does not exist on type 'typeof import("*.scss")'. -@fluentui/react-examples: 97
+@fluentui/react-examples: src/react-button/MenuButton/MenuButton.stories.tsx:83:31 - error TS2339: Property 'vStack' does not exist on type 'typeof import("*.scss")'. +@fluentui/react-examples: 83
@fluentui/react-examples: ~~~~~~ -@fluentui/react-examples: src/react-button/MenuButton/MenuButton.stories.tsx:111:31 - error TS2339: Property 'vStack' does not exist on type 'typeof import("*.scss")'. -@fluentui/react-examples: 111
+@fluentui/react-examples: src/react-button/MenuButton/MenuButton.stories.tsx:107:31 - error TS2339: Property 'vStack' does not exist on type 'typeof import("*.scss")'. +@fluentui/react-examples: 107
+@fluentui/react-examples: ~~~~~~ +@fluentui/react-examples: src/react-button/MenuButton/MenuButton.stories.tsx:121:31 - error TS2339: Property 'vStack' does not exist on type 'typeof import("*.scss")'. +@fluentui/react-examples: 121
@fluentui/react-examples: ~~~~~~ -@fluentui/react-examples: src/react-button/MenuButton/MenuButton.stories.tsx:137:29 - error TS2339: Property 'vStack' does not exist on type 'typeof import("*.scss")'. -@fluentui/react-examples: 137
+@fluentui/react-examples: src/react-button/MenuButton/MenuButton.stories.tsx:147:29 - error TS2339: Property 'vStack' does not exist on type 'typeof import("*.scss")'. +@fluentui/react-examples: 147
@fluentui/react-examples: ~~~~~~ -@fluentui/react-examples: src/react-button/MenuButton/MenuButton.stories.tsx:151:29 - error TS2339: Property 'vStack' does not exist on type 'typeof import("*.scss")'. -@fluentui/react-examples: 151
+@fluentui/react-examples: src/react-button/MenuButton/MenuButton.stories.tsx:161:29 - error TS2339: Property 'vStack' does not exist on type 'typeof import("*.scss")'. +@fluentui/react-examples: 161
@fluentui/react-examples: ~~~~~~ -@fluentui/react-examples: src/react-button/MenuButton/MenuButton.stories.tsx:176:29 - error TS2339: Property 'vStack' does not exist on type 'typeof import("*.scss")'. -@fluentui/react-examples: 176
+@fluentui/react-examples: src/react-button/MenuButton/MenuButton.stories.tsx:186:29 - error TS2339: Property 'vStack' does not exist on type 'typeof import("*.scss")'. +@fluentui/react-examples: 186
@fluentui/react-examples: ~~~~~~ -@fluentui/react-examples: src/react-button/MenuButton/MenuButton.stories.tsx:190:29 - error TS2339: Property 'vStack' does not exist on type 'typeof import("*.scss")'. -@fluentui/react-examples: 190
+@fluentui/react-examples: src/react-button/MenuButton/MenuButton.stories.tsx:200:29 - error TS2339: Property 'vStack' does not exist on type 'typeof import("*.scss")'. +@fluentui/react-examples: 200
@fluentui/react-examples: ~~~~~~ @fluentui/react-examples: src/react-button/SplitButton/SplitButton.stories.tsx:21:27 - error TS2339: Property 'hStack' does not exist on type 'typeof import("*.scss")'. @fluentui/react-examples: 21
@fluentui/react-examples: ~~~~~~ -@fluentui/react-examples: src/react-button/SplitButton/SplitButton.stories.tsx:70:29 - error TS2339: Property 'vStack' does not exist on type 'typeof import("*.scss")'. -@fluentui/react-examples: 70
+@fluentui/react-examples: src/react-button/SplitButton/SplitButton.stories.tsx:55:29 - error TS2339: Property 'hStack' does not exist on type 'typeof import("*.scss")'. +@fluentui/react-examples: 55
+@fluentui/react-examples: ~~~~~~ +@fluentui/react-examples: src/react-button/SplitButton/SplitButton.stories.tsx:80:29 - error TS2339: Property 'vStack' does not exist on type 'typeof import("*.scss")'. +@fluentui/react-examples: 80
@fluentui/react-examples: ~~~~~~ @fluentui/react-examples: src/react-button/ToggleButton/ToggleButton.stories.tsx:7:27 - error TS2339: Property 'hStack' does not exist on type 'typeof import("*.scss")'. @fluentui/react-examples: 7
@fluentui/react-examples: ~~~~~~ -@fluentui/react-examples: src/react-button/ToggleButton/ToggleButton.stories.tsx:44:29 - error TS2339: Property 'vStack' does not exist on type 'typeof import("*.scss")'. -@fluentui/react-examples: 44
+@fluentui/react-examples: src/react-button/ToggleButton/ToggleButton.stories.tsx:41:29 - error TS2339: Property 'hStack' does not exist on type 'typeof import("*.scss")'. +@fluentui/react-examples: 41
+@fluentui/react-examples: ~~~~~~ +@fluentui/react-examples: src/react-button/ToggleButton/ToggleButton.stories.tsx:54:29 - error TS2339: Property 'vStack' does not exist on type 'typeof import("*.scss")'. +@fluentui/react-examples: 54
@fluentui/react-examples: ~~~~~~ -@fluentui/react-examples: src/react-button/ToggleButton/ToggleButton.stories.tsx:55:29 - error TS2339: Property 'vStack' does not exist on type 'typeof import("*.scss")'. -@fluentui/react-examples: 55
+@fluentui/react-examples: src/react-button/ToggleButton/ToggleButton.stories.tsx:65:29 - error TS2339: Property 'vStack' does not exist on type 'typeof import("*.scss")'. +@fluentui/react-examples: 65
@fluentui/react-examples: ~~~~~~ -@fluentui/react-examples: src/react-button/ToggleButton/ToggleButton.stories.tsx:64:29 - error TS2339: Property 'vStack' does not exist on type 'typeof import("*.scss")'. -@fluentui/react-examples: 64
+@fluentui/react-examples: src/react-button/ToggleButton/ToggleButton.stories.tsx:74:29 - error TS2339: Property 'vStack' does not exist on type 'typeof import("*.scss")'. +@fluentui/react-examples: 74
@fluentui/react-examples: ~~~~~~ @fluentui/react-examples: src/react-cards/next/Card/Card.stories.tsx:15:57 - error TS2339: Property 'hStack' does not exist on type 'typeof import("*.scss")'. @fluentui/react-examples: 15 return
; @@ -1625,22 +2485,71 @@ theming-designer: error Command failed with exit code 1. @fluentui/react-examples: src/react-image/Image/Image.stories.tsx:11:74 - error TS2339: Property 'vStack' does not exist on type 'typeof import("*.scss")'. @fluentui/react-examples: 11 return
; @fluentui/react-examples: ~~~~~~ -@fluentui/react-examples: Found 41 errors. +@fluentui/react-examples: src/react/Announced/Announced.QuickActions.Example.tsx:40:33 - error TS2343: This syntax requires an imported helper named '__spreadArray' which does not exist in 'tslib'. Consider upgrading your version of 'tslib'. +@fluentui/react-examples: 40 const renamedItems = [...prevItems]; +@fluentui/react-examples: ~~~~~~~~~~~~ +@fluentui/react-examples: src/react/CommandBar/CommandBar.ButtonAs.Example.tsx:24:25 - error TS2322: Type 'Partial' is not assignable to type 'IStyleFunctionOrObject'. +@fluentui/react-examples: Type 'Partial' is not assignable to type 'DeepPartial'. +@fluentui/react-examples: Property 'root' is incompatible with index signature. +@fluentui/react-examples: Type 'string | false | IRawStyle | IStyleBaseArray | null' is not assignable to type 'DeepPartial[] | undefined'. +@fluentui/react-examples: Type 'null' is not assignable to type 'DeepPartial[] | undefined'. +@fluentui/react-examples: 24 subComponentStyles: { menuItem: itemStyles, callout: {} }, +@fluentui/react-examples: ~~~~~~~~ +@fluentui/react-examples: src/react/ContextualMenu/ContextualMenu.Submenu.Example.tsx:8:22 - error TS2322: Type '{ display: string; marginRight: string; }' is not assignable to type 'DeepPartial[]'. +@fluentui/react-examples: Object literal may only specify known properties, and 'display' does not exist in type 'DeepPartial[]'. +@fluentui/react-examples: 8 label: { root: { display: 'inline-block', marginRight: '10px' } }, +@fluentui/react-examples: ~~~~~~~~~~~~~~~~~~~~~~~ +@fluentui/react-examples: src/react/TextField/TextField.Styled.Example.tsx:33:7 - error TS2322: Type '(props: ILabelStyleProps) => ILabelStyles' is not assignable to type 'IStyleFunctionOrObject'. +@fluentui/react-examples: Type '(props: ILabelStyleProps) => ILabelStyles' is not assignable to type 'IStyleFunction'. +@fluentui/react-examples: Type 'ILabelStyles' is not assignable to type 'DeepPartial'. +@fluentui/react-examples: Index signature is missing in type 'ILabelStyles'. +@fluentui/react-examples: 33 label: getLabelStyles, +@fluentui/react-examples: ~~~~~ +@fluentui/react-examples: Found 48 errors. @fluentui/react-examples: [XX:XX:XX XM] x ------------------------------------ @fluentui/react-examples: [XX:XX:XX XM] x Error previously detected. See above for error messages. @fluentui/react-examples: [XX:XX:XX XM] x Other tasks that did not complete: [ts:commonjs] @fluentui/react-examples: error Command failed with exit code 1. -@fluentui/public-docsite: [XX:XX:XX XM] x Error detected while running '_wrapFunction' +@fluentui/public-docsite-resources: [XX:XX:XX XM] x Error detected while running 'ts:esm' +@fluentui/public-docsite-resources: [XX:XX:XX XM] x ------------------------------------ +@fluentui/public-docsite-resources: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/apps/public-docsite-resources/tsconfig.json" +@fluentui/public-docsite-resources: at ChildProcess.exithandler (child_process.js:308:12) +@fluentui/public-docsite-resources: at ChildProcess.emit (events.js:314:20) +@fluentui/public-docsite-resources: at ChildProcess.EventEmitter.emit (domain.js:506:15) +@fluentui/public-docsite-resources: at maybeClose (internal/child_process.js:1022:16) +@fluentui/public-docsite-resources: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) +@fluentui/public-docsite-resources: at Process.callbackTrampoline (internal/async_hooks.js:126:14) +@fluentui/public-docsite-resources: [XX:XX:XX XM] x stdout: +@fluentui/public-docsite-resources: [XX:XX:XX XM] x src/components/pages/ThemePage.tsx:68:22 - error TS2343: This syntax requires an imported helper named '__spreadArray' which does not exist in 'tslib'. Consider upgrading your version of 'tslib'. +@fluentui/public-docsite-resources: 68 const palette = [...this.state.palette]; +@fluentui/public-docsite-resources: ~~~~~~~~~~~~~~~~~~~~~ +@fluentui/public-docsite-resources: Found 1 error. +@fluentui/public-docsite-resources: [XX:XX:XX XM] x ------------------------------------ +@fluentui/public-docsite-resources: [XX:XX:XX XM] x Error previously detected. See above for error messages. +@fluentui/public-docsite-resources: [XX:XX:XX XM] x Other tasks that did not complete: [ts:commonjs] +@fluentui/public-docsite-resources: error Command failed with exit code 1. +@fluentui/public-docsite: [XX:XX:XX XM] x Error detected while running 'ts:esm' @fluentui/public-docsite: [XX:XX:XX XM] x ------------------------------------ -@fluentui/public-docsite: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib-commonjs --module commonjs --project "/office-ui-fabric-react/apps/public-docsite/tsconfig.json" +@fluentui/public-docsite: [XX:XX:XX XM] x Error: Command failed: /usr/local/bin/node "/office-ui-fabric-react/node_modules/typescript/lib/tsc.js" --pretty --target es5 --outDir lib --module esnext --project "/office-ui-fabric-react/apps/public-docsite/tsconfig.json" @fluentui/public-docsite: at ChildProcess.exithandler (child_process.js:308:12) @fluentui/public-docsite: at ChildProcess.emit (events.js:314:20) @fluentui/public-docsite: at ChildProcess.EventEmitter.emit (domain.js:506:15) -@fluentui/public-docsite: at maybeClose (internal/child_process.js:1021:16) -@fluentui/public-docsite: at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5) +@fluentui/public-docsite: at maybeClose (internal/child_process.js:1022:16) +@fluentui/public-docsite: at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5) @fluentui/public-docsite: at Process.callbackTrampoline (internal/async_hooks.js:126:14) @fluentui/public-docsite: [XX:XX:XX XM] x stdout: -@fluentui/public-docsite: [XX:XX:XX XM] x src/components/Nav/Nav.tsx:70:35 - error TS2339: Property 'navWrapper' does not exist on type 'typeof import("*.scss")'. +@fluentui/public-docsite: [XX:XX:XX XM] x src/components/ComponentPage/ComponentPage.tsx:33:22 - error TS2322: Type 'IStyleSet>' is not assignable to type 'IStyleFunctionOrObject'. +@fluentui/public-docsite: Type 'IStyleSet>' is not assignable to type 'DeepPartial'. +@fluentui/public-docsite: Property 'body' is incompatible with index signature. +@fluentui/public-docsite: Type 'IStyle' is not assignable to type 'DeepPartial[]'. +@fluentui/public-docsite: Type 'string' is not assignable to type 'DeepPartial[]'. +@fluentui/public-docsite: 33 ComponentPage: { styles: componentPageStyles }, +@fluentui/public-docsite: ~~~~~~ +@fluentui/public-docsite: ../../packages/theme/lib/types/Theme.d.ts:98:5 +@fluentui/public-docsite: 98 styles?: IStyleFunctionOrObject; +@fluentui/public-docsite: ~~~~~~ +@fluentui/public-docsite: The expected type comes from property 'styles' which is declared here on type 'ComponentStyles' +@fluentui/public-docsite: src/components/Nav/Nav.tsx:70:35 - error TS2339: Property 'navWrapper' does not exist on type 'typeof import("*.scss")'. @fluentui/public-docsite: 70 return
{this._renderPageNav(pages)}
; @fluentui/public-docsite: ~~~~~~~~~~ @fluentui/public-docsite: src/components/Nav/Nav.tsx:87:34 - error TS2339: Property 'nav' does not exist on type 'typeof import("*.scss")'. @@ -1697,6 +2606,9 @@ theming-designer: error Command failed with exit code 1. @fluentui/public-docsite: src/components/Site/Site.tsx:163:31 - error TS2339: Property 'siteContent' does not exist on type 'typeof import("*.scss")'. @fluentui/public-docsite: 163 className={styles.siteContent} @fluentui/public-docsite: ~~~~~~~~~~~ +@fluentui/public-docsite: src/components/Site/Site.tsx:224:30 - error TS2343: This syntax requires an imported helper named '__spreadArray' which does not exist in 'tslib'. Consider upgrading your version of 'tslib'. +@fluentui/public-docsite: 224 activePages.push(...platforms); +@fluentui/public-docsite: ~~~~~~~~~~~~ @fluentui/public-docsite: src/components/Site/Site.tsx:280:32 - error TS2339: Property 'siteNavScrollWrapper' does not exist on type 'typeof import("*.scss")'. @fluentui/public-docsite: 280
@fluentui/public-docsite: ~~~~~~~~~~~~~~~~~~~~ @@ -1838,11 +2750,11 @@ theming-designer: error Command failed with exit code 1. @fluentui/public-docsite: src/pages/Styles/ElevationPage/ElevationPage.tsx:123:41 - error TS2339: Property 'caption' does not exist on type 'typeof import("*.scss")'. @fluentui/public-docsite: 123 Depth {row.level} @fluentui/public-docsite: ~~~~~~~ -@fluentui/public-docsite: src/pages/Styles/FabricIconsPage/FabricIconsPage.tsx:48:73 - error TS2339: Property 'iconGrid' does not exist on type 'typeof import("*.scss")'. -@fluentui/public-docsite: 48 -@fluentui/public-docsite: ~~~~~~~~ -@fluentui/public-docsite: src/pages/Styles/FabricIconsPage/FabricIconsPage.tsx:51:69 - error TS2339: Property 'iconGrid' does not exist on type 'typeof import("*.scss")'. -@fluentui/public-docsite: 51 +@fluentui/public-docsite: src/pages/Styles/FabricIconsPage/FabricIconsPage.tsx:49:86 - error TS2339: Property 'iconGrid' does not exist on type 'typeof import("*.scss")'. +@fluentui/public-docsite: 49 +@fluentui/public-docsite: ~~~~~~~~ +@fluentui/public-docsite: src/pages/Styles/FabricIconsPage/FabricIconsPage.tsx:52:69 - error TS2339: Property 'iconGrid' does not exist on type 'typeof import("*.scss")'. +@fluentui/public-docsite: 52 @fluentui/public-docsite: ~~~~~~~~ @fluentui/public-docsite: src/pages/Styles/FileTypeIconsPage/FileTypeIconsPage.tsx:60:43 - error TS2339: Property 'exampleIcons' does not exist on type 'typeof import("*.scss")'. @fluentui/public-docsite: 60
    @@ -2135,9 +3047,9 @@ theming-designer: error Command failed with exit code 1. @fluentui/public-docsite: src/utilities/svgIconsColor.tsx:348:30 - error TS2339: Property 'icon' does not exist on type 'typeof import("*.scss")'. @fluentui/public-docsite: 348 const { className = styles.icon, iconColor, iconWidth, iconHeight, iconSize } = props; @fluentui/public-docsite: ~~~~ -@fluentui/public-docsite: Found 165 errors. +@fluentui/public-docsite: Found 167 errors. @fluentui/public-docsite: [XX:XX:XX XM] x ------------------------------------ @fluentui/public-docsite: [XX:XX:XX XM] x Error previously detected. See above for error messages. -@fluentui/public-docsite: [XX:XX:XX XM] x Other tasks that did not complete: [ts:esm] +@fluentui/public-docsite: [XX:XX:XX XM] x Other tasks that did not complete: [ts:commonjs] @fluentui/public-docsite: error Command failed with exit code 1. lerna ERR! Received non-zero exit code 1 during execution diff --git a/tests/baselines/reference/docker/prettier.log b/tests/baselines/reference/docker/prettier.log new file mode 100644 index 0000000000000..efa20afd8aa53 --- /dev/null +++ b/tests/baselines/reference/docker/prettier.log @@ -0,0 +1,28 @@ +Exit Code: 0 +Standard output: +yarn run vX.X.X +$ node --max-old-space-size=3072 ./scripts/build/build.js + Building packages +index.js....................... DONE +doc.js......................... DONE +standalone.js.................. DONE +bin-prettier.js................ DONE +third-party.js................. DONE +parser-babel.js................ DONE +parser-flow.js................. DONE +parser-typescript.js........... DONE +parser-espree.js............... DONE +parser-meriyah.js.............. DONE +parser-angular.js.............. DONE +parser-postcss.js.............. DONE +esm/parser-postcss.mjs......... DONE +parser-graphql.js.............. DONE +parser-markdown.js............. DONE +parser-glimmer.js.............. DONE +parser-html.js................. DONE +parser-yaml.js................. DONE +Done in ?s. + + + +Standard error: diff --git a/tests/baselines/reference/docker/pyright.log b/tests/baselines/reference/docker/pyright.log index 72a0cf2c4f4ed..aa5412d777c7a 100644 --- a/tests/baselines/reference/docker/pyright.log +++ b/tests/baselines/reference/docker/pyright.log @@ -1,17 +1,9 @@ -Exit Code: 2 +Exit Code: 0 Standard output: -pyright-internal: src/tests/harness/utils.ts(328,12): error TS2774: This condition will always return true since the function is always defined. Did you mean to call it instead? Standard error: lerna notice cli vX.X.X lerna info Executing command in 3 packages: "tsc --noEmit" -lerna ERR! Received non-zero exit code 2 during execution lerna success exec Executed command in 3 packages: "tsc --noEmit" -npm ERR! code 2 -npm ERR! path /pyright -npm ERR! command failed -npm ERR! command sh -c lerna exec --stream --concurrency 1 --no-bail -- tsc --noEmit -npm ERR! A complete log of this run can be found in: -npm ERR! /root/.npm/_logs/XXXX-XX-XXXXXXXXX-debug.log diff --git a/tests/baselines/reference/docker/vscode.log b/tests/baselines/reference/docker/vscode.log index 45c7728bdb5d0..898d15f7ca265 100644 --- a/tests/baselines/reference/docker/vscode.log +++ b/tests/baselines/reference/docker/vscode.log @@ -1,11 +1,24 @@ -Exit Code: 0 +Exit Code: 1 Standard output: yarn run vX.X.X -$ gulp compile --max_old_space_size=4095 -[XX:XX:XX] Node flags detected: --max_old_space_size=4095 +$ node --max_old_space_size=4095 ./node_modules/gulp/bin/gulp.js compile [XX:XX:XX] Using gulpfile /vscode/gulpfile.js -Done in ?s. +[XX:XX:XX] [monaco.d.ts] monaco.d.ts is changed - total time took ?s +info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. Standard error: +[XX:XX:XX] 'compile' errored after ?s +[XX:XX:XX] Error: monaco.d.ts is no longer up to date. Please run gulp watch and commit the new file. + at formatError (/vscode/node_modules/gulp-cli/lib/versioned/^4.0.0/format-error.js:21:10) + at Gulp. (/vscode/node_modules/gulp-cli/lib/versioned/^4.0.0/log/events.js:33:15) + at Gulp.emit (events.js:203:15) + at Gulp.EventEmitter.emit (domain.js:448:20) + at Object.error (/vscode/node_modules/undertaker/lib/helpers/createExtensions.js:61:10) + at handler (/vscode/node_modules/now-and-later/lib/map.js:50:14) + at f (/vscode/node_modules/once/once.js:25:25) + at f (/vscode/node_modules/once/once.js:25:25) + at tryCatch (/vscode/node_modules/async-done/index.js:24:15) + at done (/vscode/node_modules/async-done/index.js:40:12) +error Command failed with exit code 1. diff --git a/tests/baselines/reference/docker/vue-next.log b/tests/baselines/reference/docker/vue-next.log index 6a2071a9605c4..e1a7059cda546 100644 --- a/tests/baselines/reference/docker/vue-next.log +++ b/tests/baselines/reference/docker/vue-next.log @@ -1,10 +1,10 @@ -Exit Code: 0 +Exit Code: 7 Standard output: > build > node scripts/build.js "--types" Rolling up type definitions for compiler-core... -Analysis will use the bundled TypeScript version 4.0.5 +Analysis will use the bundled TypeScript version 4.1.3 *** The target project appears to use TypeScript X.X.X-insiders.xxxxxxxx which is newer than the bundled compiler engine; consider upgrading API Extractor. Writing: /vue-next/temp/compiler-core.api.json The API report is up to date: temp/compiler-core.api.md @@ -12,216 +12,130 @@ Writing package typings: /vue-next/packages/compiler-core/dist/compiler-core.d.t Writing package typings: /vue-next/dist/compiler-core.d.ts API Extractor completed successfully. Rolling up type definitions for compiler-dom... -Analysis will use the bundled TypeScript version 4.0.5 +Analysis will use the bundled TypeScript version 4.1.3 *** The target project appears to use TypeScript X.X.X-insiders.xxxxxxxx which is newer than the bundled compiler engine; consider upgrading API Extractor. Writing: /vue-next/temp/compiler-dom.api.json The API report is up to date: temp/compiler-dom.api.md Writing package typings: /vue-next/packages/compiler-dom/dist/compiler-dom.d.ts Writing package typings: /vue-next/dist/compiler-dom.d.ts API Extractor completed successfully. -Rolling up type definitions for compiler-sfc... -Analysis will use the bundled TypeScript version 4.0.5 -*** The target project appears to use TypeScript X.X.X-insiders.xxxxxxxx which is newer than the bundled compiler engine; consider upgrading API Extractor. -Writing: /vue-next/temp/compiler-sfc.api.json -The API report is up to date: temp/compiler-sfc.api.md -Writing package typings: /vue-next/packages/compiler-sfc/dist/compiler-sfc.d.ts -Writing package typings: /vue-next/dist/compiler-sfc.d.ts -API Extractor completed successfully. Rolling up type definitions for compiler-ssr... -Analysis will use the bundled TypeScript version 4.0.5 +Analysis will use the bundled TypeScript version 4.1.3 *** The target project appears to use TypeScript X.X.X-insiders.xxxxxxxx which is newer than the bundled compiler engine; consider upgrading API Extractor. Writing: /vue-next/temp/compiler-ssr.api.json The API report is up to date: temp/compiler-ssr.api.md Writing package typings: /vue-next/packages/compiler-ssr/dist/compiler-ssr.d.ts Writing package typings: /vue-next/dist/compiler-ssr.d.ts API Extractor completed successfully. -Rolling up type definitions for reactivity... -Analysis will use the bundled TypeScript version 4.0.5 -*** The target project appears to use TypeScript X.X.X-insiders.xxxxxxxx which is newer than the bundled compiler engine; consider upgrading API Extractor. -Writing: /vue-next/temp/reactivity.api.json -The API report is up to date: temp/reactivity.api.md -Writing package typings: /vue-next/packages/reactivity/dist/reactivity.d.ts -Writing package typings: /vue-next/dist/reactivity.d.ts -API Extractor completed successfully. -Rolling up type definitions for runtime-core... -Analysis will use the bundled TypeScript version 4.0.5 -*** The target project appears to use TypeScript X.X.X-insiders.xxxxxxxx which is newer than the bundled compiler engine; consider upgrading API Extractor. -Writing: /vue-next/temp/runtime-core.api.json -The API report is up to date: temp/runtime-core.api.md -Writing package typings: /vue-next/packages/runtime-core/dist/runtime-core.d.ts -Writing package typings: /vue-next/dist/runtime-core.d.ts -API Extractor completed successfully. -Rolling up type definitions for runtime-dom... -Analysis will use the bundled TypeScript version 4.0.5 -*** The target project appears to use TypeScript X.X.X-insiders.xxxxxxxx which is newer than the bundled compiler engine; consider upgrading API Extractor. -Writing: /vue-next/temp/runtime-dom.api.json -The API report is up to date: temp/runtime-dom.api.md -Writing package typings: /vue-next/packages/runtime-dom/dist/runtime-dom.d.ts -Writing package typings: /vue-next/dist/runtime-dom.d.ts -API Extractor completed successfully. -Rolling up type definitions for server-renderer... -Analysis will use the bundled TypeScript version 4.0.5 -*** The target project appears to use TypeScript X.X.X-insiders.xxxxxxxx which is newer than the bundled compiler engine; consider upgrading API Extractor. -Writing: /vue-next/temp/server-renderer.api.json -The API report is up to date: temp/server-renderer.api.md -Writing package typings: /vue-next/packages/server-renderer/dist/server-renderer.d.ts -Writing package typings: /vue-next/dist/server-renderer.d.ts -API Extractor completed successfully. -Rolling up type definitions for shared... -Analysis will use the bundled TypeScript version 4.0.5 -*** The target project appears to use TypeScript X.X.X-insiders.xxxxxxxx which is newer than the bundled compiler engine; consider upgrading API Extractor. -Writing: /vue-next/temp/shared.api.json -The API report is up to date: temp/shared.api.md -Writing package typings: /vue-next/packages/shared/dist/shared.d.ts -Writing package typings: /vue-next/dist/shared.d.ts -API Extractor completed successfully. -Rolling up type definitions for vue... -Analysis will use the bundled TypeScript version 4.0.5 +Rolling up type definitions for compiler-sfc... +Analysis will use the bundled TypeScript version 4.1.3 *** The target project appears to use TypeScript X.X.X-insiders.xxxxxxxx which is newer than the bundled compiler engine; consider upgrading API Extractor. -Writing: /vue-next/temp/vue.api.json -The API report is up to date: temp/vue.api.md -Writing package typings: /vue-next/packages/vue/dist/vue.d.ts -Writing package typings: /vue-next/dist/vue.d.ts +Writing: /vue-next/temp/compiler-sfc.api.json +The API report is up to date: temp/compiler-sfc.api.md +Writing package typings: /vue-next/packages/compiler-sfc/dist/compiler-sfc.d.ts +Writing package typings: /vue-next/dist/compiler-sfc.d.ts API Extractor completed successfully. -compiler-dom.global.prod.js min:44.24kb / gzip:17.04kb / brotli:15.46kb -reactivity.global.prod.js min:8.37kb / gzip:3.24kb / brotli:3.00kb -runtime-dom.global.prod.js min:68.76kb / gzip:26.44kb / brotli:23.91kb -size-check.global.prod.js min:39.98kb / gzip:15.95kb / brotli:14.55kb -vue.global.prod.js min:105.87kb / gzip:40.15kb / brotli:36.04kb Standard error: /vue-next/packages/compiler-core/src/index.ts → packages/compiler-core/dist/compiler-core.esm-bundler.js... -created packages/compiler-core/dist/compiler-core.esm-bundler.js in ?s -/vue-next/packages/compiler-core/src/index.ts → packages/compiler-core/dist/compiler-core.cjs.js... -created packages/compiler-core/dist/compiler-core.cjs.js in ?s -/vue-next/packages/compiler-core/src/index.ts → packages/compiler-core/dist/compiler-core.cjs.prod.js... -created packages/compiler-core/dist/compiler-core.cjs.prod.js in ?s -Warning: dist/packages/compiler-core/src/options.d.ts:36:25 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -Warning: dist/packages/compiler-core/src/options.d.ts:36:26 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -Warning: dist/packages/compiler-core/src/options.d.ts:36:19 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" -Warning: dist/packages/compiler-core/src/options.d.ts:36:20 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" -Warning: dist/packages/compiler-core/src/options.d.ts:59:39 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -Warning: dist/packages/compiler-core/src/options.d.ts:59:21 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" -Warning: dist/packages/compiler-core/src/options.d.ts:80:42 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -Warning: dist/packages/compiler-core/src/options.d.ts:80:43 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -Warning: dist/packages/compiler-core/src/options.d.ts:80:35 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" -Warning: dist/packages/compiler-core/src/options.d.ts:80:36 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" /vue-next/packages/compiler-dom/src/index.ts → packages/compiler-dom/dist/compiler-dom.esm-bundler.js... created packages/compiler-dom/dist/compiler-dom.esm-bundler.js in ?s /vue-next/packages/compiler-dom/src/index.ts → packages/compiler-dom/dist/compiler-dom.esm-browser.js... +created packages/compiler-core/dist/compiler-core.esm-bundler.js in ?s +/vue-next/packages/compiler-core/src/index.ts → packages/compiler-core/dist/compiler-core.cjs.js... created packages/compiler-dom/dist/compiler-dom.esm-browser.js in ?s /vue-next/packages/compiler-dom/src/index.ts → packages/compiler-dom/dist/compiler-dom.cjs.js... +created packages/compiler-core/dist/compiler-core.cjs.js in ?s +/vue-next/packages/compiler-core/src/index.ts → packages/compiler-core/dist/compiler-core.cjs.prod.js... created packages/compiler-dom/dist/compiler-dom.cjs.js in ?s /vue-next/packages/compiler-dom/src/index.ts → packages/compiler-dom/dist/compiler-dom.global.js... +created packages/compiler-core/dist/compiler-core.cjs.prod.js in ?s created packages/compiler-dom/dist/compiler-dom.global.js in ?s /vue-next/packages/compiler-dom/src/index.ts → packages/compiler-dom/dist/compiler-dom.esm-browser.prod.js... created packages/compiler-dom/dist/compiler-dom.esm-browser.prod.js in ?s /vue-next/packages/compiler-dom/src/index.ts → packages/compiler-dom/dist/compiler-dom.cjs.prod.js... created packages/compiler-dom/dist/compiler-dom.cjs.prod.js in ?s /vue-next/packages/compiler-dom/src/index.ts → packages/compiler-dom/dist/compiler-dom.global.prod.js... -(!) Missing global variable names -Use output.globals to specify browser global variable names corresponding to external modules -@babel/parser (guessing 'parser') -estree-walker (guessing 'estreeWalker') -created packages/compiler-dom/dist/compiler-dom.global.prod.js in ?s +Warning: dist/packages/compiler-core/src/options.d.ts:36:25 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +Warning: dist/packages/compiler-core/src/options.d.ts:36:26 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +Warning: dist/packages/compiler-core/src/options.d.ts:36:19 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +Warning: dist/packages/compiler-core/src/options.d.ts:36:20 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +Warning: dist/packages/compiler-core/src/options.d.ts:87:42 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +Warning: dist/packages/compiler-core/src/options.d.ts:87:43 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +Warning: dist/packages/compiler-core/src/options.d.ts:87:35 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +Warning: dist/packages/compiler-core/src/options.d.ts:87:36 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +Warning: dist/packages/compiler-core/src/options.d.ts:128:39 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +Warning: dist/packages/compiler-core/src/options.d.ts:128:21 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +Warning: dist/packages/compiler-core/src/options.d.ts:149:42 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +Warning: dist/packages/compiler-core/src/options.d.ts:149:43 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +Warning: dist/packages/compiler-core/src/options.d.ts:149:35 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +Warning: dist/packages/compiler-core/src/options.d.ts:149:36 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" /vue-next/packages/compiler-sfc/src/index.ts → packages/compiler-sfc/dist/compiler-sfc.cjs.js... +created packages/compiler-dom/dist/compiler-dom.global.prod.js in ?s +/vue-next/packages/compiler-ssr/src/index.ts → packages/compiler-ssr/dist/compiler-ssr.cjs.js... created packages/compiler-sfc/dist/compiler-sfc.cjs.js in ?s /vue-next/packages/compiler-sfc/src/index.ts → packages/compiler-sfc/dist/compiler-sfc.global.js... -created packages/compiler-sfc/dist/compiler-sfc.global.js in ?s -/vue-next/packages/compiler-sfc/src/index.ts → packages/compiler-sfc/dist/compiler-sfc.esm-browser.js... -created packages/compiler-sfc/dist/compiler-sfc.esm-browser.js in ?s -/vue-next/packages/compiler-ssr/src/index.ts → packages/compiler-ssr/dist/compiler-ssr.cjs.js... created packages/compiler-ssr/dist/compiler-ssr.cjs.js in ?s +(!) Missing shims for Node.js built-ins +Creating a browser bundle that depends on 'path', 'url' and 'util'. You might need to include https://github.com/ionic-team/rollup-plugin-node-polyfills +(!) Missing global variable names +Use output.globals to specify browser global variable names corresponding to external modules +path (guessing 'path') +url (guessing 'url') +util (guessing 'require$$0') +created packages/compiler-sfc/dist/compiler-sfc.global.js in ?s +Warning: dist/packages/compiler-sfc/src/compileScript.d.ts:27:36 - (tsdoc-escape-greater-than) The ">" character should be escaped using a backslash to avoid confusion with an HTML tag +Warning: dist/packages/compiler-sfc/src/compileScript.d.ts:27:23 - (tsdoc-html-tag-missing-equals) The HTML element has an invalid attribute: Expecting "=" after HTML attribute name +Warning: dist/packages/compiler-sfc/src/compileStyle.d.ts:18:8 - (tsdoc-missing-deprecation-message) The @deprecated block must include a deprecation message, e.g. describing the recommended alternative /vue-next/packages/reactivity/src/index.ts → packages/reactivity/dist/reactivity.esm-bundler.js... -created packages/reactivity/dist/reactivity.esm-bundler.js in ?s -/vue-next/packages/reactivity/src/index.ts → packages/reactivity/dist/reactivity.esm-browser.js... -created packages/reactivity/dist/reactivity.esm-browser.js in ?s -/vue-next/packages/reactivity/src/index.ts → packages/reactivity/dist/reactivity.cjs.js... -created packages/reactivity/dist/reactivity.cjs.js in ?s -/vue-next/packages/reactivity/src/index.ts → packages/reactivity/dist/reactivity.global.js... -created packages/reactivity/dist/reactivity.global.js in ?s -/vue-next/packages/reactivity/src/index.ts → packages/reactivity/dist/reactivity.esm-browser.prod.js... -created packages/reactivity/dist/reactivity.esm-browser.prod.js in ?s -/vue-next/packages/reactivity/src/index.ts → packages/reactivity/dist/reactivity.cjs.prod.js... -created packages/reactivity/dist/reactivity.cjs.prod.js in ?s -/vue-next/packages/reactivity/src/index.ts → packages/reactivity/dist/reactivity.global.prod.js... -created packages/reactivity/dist/reactivity.global.prod.js in ?s /vue-next/packages/runtime-core/src/index.ts → packages/runtime-core/dist/runtime-core.esm-bundler.js... -created packages/runtime-core/dist/runtime-core.esm-bundler.js in ?s -/vue-next/packages/runtime-core/src/index.ts → packages/runtime-core/dist/runtime-core.cjs.js... -created packages/runtime-core/dist/runtime-core.cjs.js in ?s -/vue-next/packages/runtime-core/src/index.ts → packages/runtime-core/dist/runtime-core.cjs.prod.js... -created packages/runtime-core/dist/runtime-core.cjs.prod.js in ?s -Warning: dist/packages/runtime-core/src/index.d.ts:33:9 - (TS2717) Subsequent property declarations must have the same type. Property 'runtimeCoreBailTypes' must be of type 'VNode | { $: ComponentInternalInstance; }', but here has type 'VNode | { $: ComponentInternalInstance; }'. -/vue-next/packages/runtime-dom/src/index.ts → packages/runtime-dom/dist/runtime-dom.esm-bundler.js... -created packages/runtime-dom/dist/runtime-dom.esm-bundler.js in ?s -/vue-next/packages/runtime-dom/src/index.ts → packages/runtime-dom/dist/runtime-dom.esm-browser.js... -created packages/runtime-dom/dist/runtime-dom.esm-browser.js in ?s -/vue-next/packages/runtime-dom/src/index.ts → packages/runtime-dom/dist/runtime-dom.cjs.js... -created packages/runtime-dom/dist/runtime-dom.cjs.js in ?s -/vue-next/packages/runtime-dom/src/index.ts → packages/runtime-dom/dist/runtime-dom.global.js... -created packages/runtime-dom/dist/runtime-dom.global.js in ?s -/vue-next/packages/runtime-dom/src/index.ts → packages/runtime-dom/dist/runtime-dom.esm-browser.prod.js... -created packages/runtime-dom/dist/runtime-dom.esm-browser.prod.js in ?s -/vue-next/packages/runtime-dom/src/index.ts → packages/runtime-dom/dist/runtime-dom.cjs.prod.js... -created packages/runtime-dom/dist/runtime-dom.cjs.prod.js in ?s -/vue-next/packages/runtime-dom/src/index.ts → packages/runtime-dom/dist/runtime-dom.global.prod.js... -created packages/runtime-dom/dist/runtime-dom.global.prod.js in ?s -/vue-next/packages/server-renderer/src/index.ts → packages/server-renderer/dist/server-renderer.cjs.js... -(!) Unresolved dependencies -https://rollupjs.org/guide/en/#warning-treating-module-as-external-dependency -stream (imported by packages/server-renderer/src/renderToStream.ts) -created packages/server-renderer/dist/server-renderer.cjs.js in ?s -/vue-next/packages/server-renderer/src/index.ts → packages/server-renderer/dist/server-renderer.cjs.prod.js... -(!) Unresolved dependencies -https://rollupjs.org/guide/en/#warning-treating-module-as-external-dependency -stream (imported by packages/server-renderer/src/renderToStream.ts) -created packages/server-renderer/dist/server-renderer.cjs.prod.js in ?s -/vue-next/packages/shared/src/index.ts → packages/shared/dist/shared.esm-bundler.js... -created packages/shared/dist/shared.esm-bundler.js in ?s -/vue-next/packages/shared/src/index.ts → packages/shared/dist/shared.cjs.js... -created packages/shared/dist/shared.cjs.js in ?s -/vue-next/packages/shared/src/index.ts → packages/shared/dist/shared.cjs.prod.js... -created packages/shared/dist/shared.cjs.prod.js in ?s -Warning: dist/packages/shared/src/index.d.ts:15:12 - (tsdoc-characters-after-block-tag) The token "@babel" looks like a TSDoc tag but contains an invalid character "/"; if it is not a tag, use a backslash to escape the "@" -Warning: dist/packages/shared/src/makeMap.d.ts:5:9 - (tsdoc-unnecessary-backslash) A backslash can only be used to escape a punctuation character -Warning: dist/packages/shared/src/makeMap.d.ts:5:11 - (tsdoc-unnecessary-backslash) A backslash can only be used to escape a punctuation character -Warning: dist/packages/shared/src/makeMap.d.ts:5:17 - (tsdoc-unnecessary-backslash) A backslash can only be used to escape a punctuation character -Warning: dist/packages/shared/src/makeMap.d.ts:5:19 - (tsdoc-unnecessary-backslash) A backslash can only be used to escape a punctuation character -Warning: dist/packages/shared/src/toDisplayString.d.ts:2:36 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -Warning: dist/packages/shared/src/toDisplayString.d.ts:2:37 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -Warning: dist/packages/shared/src/toDisplayString.d.ts:2:19 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" -Warning: dist/packages/shared/src/toDisplayString.d.ts:2:20 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" -/vue-next/packages/size-check/src/index.ts → packages/size-check/dist/size-check.global.js... -created packages/size-check/dist/size-check.global.js in ?s -/vue-next/packages/size-check/src/index.ts → packages/size-check/dist/size-check.global.prod.js... -created packages/size-check/dist/size-check.global.prod.js in ?s -/vue-next/packages/template-explorer/src/index.ts → packages/template-explorer/dist/template-explorer.global.js... -created packages/template-explorer/dist/template-explorer.global.js in ?s -/vue-next/packages/vue/src/index.ts → packages/vue/dist/vue.esm-bundler.js... -created packages/vue/dist/vue.esm-bundler.js in ?s -/vue-next/packages/vue/src/runtime.ts → packages/vue/dist/vue.runtime.esm-bundler.js... -created packages/vue/dist/vue.runtime.esm-bundler.js in ?s -/vue-next/packages/vue/src/index.ts → packages/vue/dist/vue.cjs.js... -created packages/vue/dist/vue.cjs.js in ?s -/vue-next/packages/vue/src/index.ts → packages/vue/dist/vue.global.js... -created packages/vue/dist/vue.global.js in ?s -/vue-next/packages/vue/src/runtime.ts → packages/vue/dist/vue.runtime.global.js... -created packages/vue/dist/vue.runtime.global.js in ?s -/vue-next/packages/vue/src/index.ts → packages/vue/dist/vue.esm-browser.js... -created packages/vue/dist/vue.esm-browser.js in ?s -/vue-next/packages/vue/src/runtime.ts → packages/vue/dist/vue.runtime.esm-browser.js... -created packages/vue/dist/vue.runtime.esm-browser.js in ?s -/vue-next/packages/vue/src/index.ts → packages/vue/dist/vue.cjs.prod.js... -created packages/vue/dist/vue.cjs.prod.js in ?s -/vue-next/packages/vue/src/index.ts → packages/vue/dist/vue.global.prod.js... -created packages/vue/dist/vue.global.prod.js in ?s -/vue-next/packages/vue/src/runtime.ts → packages/vue/dist/vue.runtime.global.prod.js... -created packages/vue/dist/vue.runtime.global.prod.js in ?s -/vue-next/packages/vue/src/index.ts → packages/vue/dist/vue.esm-browser.prod.js... -created packages/vue/dist/vue.esm-browser.prod.js in ?s -/vue-next/packages/vue/src/runtime.ts → packages/vue/dist/vue.runtime.esm-browser.prod.js... -created packages/vue/dist/vue.runtime.esm-browser.prod.js in ?s +[!] (plugin rpt2) Error: /vue-next/packages/reactivity/src/baseHandlers.ts(192,3): semantic error TS2322: Type '(target: object) => (string | number | symbol)[]' is not assignable to type '(target: object) => ArrayLike'. + Type '(string | number | symbol)[]' is not assignable to type 'ArrayLike'. + Index signatures are incompatible. + Type 'string | number | symbol' is not assignable to type 'string | symbol'. + Type 'number' is not assignable to type 'string | symbol'. +packages/reactivity/src/baseHandlers.ts +Error: /vue-next/packages/reactivity/src/baseHandlers.ts(192,3): semantic error TS2322: Type '(target: object) => (string | number | symbol)[]' is not assignable to type '(target: object) => ArrayLike'. + Type '(string | number | symbol)[]' is not assignable to type 'ArrayLike'. + Index signatures are incompatible. + Type 'string | number | symbol' is not assignable to type 'string | symbol'. + Type 'number' is not assignable to type 'string | symbol'. + at error (/vue-next/node_modules/rollup/dist/shared/rollup.js:5240:30) + at throwPluginError (/vue-next/node_modules/rollup/dist/shared/rollup.js:18161:12) + at Object.error (/vue-next/node_modules/rollup/dist/shared/rollup.js:18768:24) + at Object.error (/vue-next/node_modules/rollup/dist/shared/rollup.js:18330:38) + at RollupContext.error (/vue-next/node_modules/rollup-plugin-typescript2/src/rollupcontext.ts:37:18) + at /vue-next/node_modules/rollup-plugin-typescript2/src/print-diagnostics.ts:41:11 + at arrayEach (/vue-next/node_modules/rollup-plugin-typescript2/node_modules/lodash/lodash.js:516:11) + at Function.forEach (/vue-next/node_modules/rollup-plugin-typescript2/node_modules/lodash/lodash.js:9368:14) + at _.each (/vue-next/node_modules/rollup-plugin-typescript2/src/print-diagnostics.ts:9:2) + at Object.transform (/vue-next/node_modules/rollup-plugin-typescript2/src/index.ts:242:5) +/vue-next/node_modules/brotli/build/encode.js:3 +1 xterm@X.X.X build /xtermjs > tsc -b ./tsconfig.all.json +src/browser/Terminal2.test.ts(80,11): error TS2794: Expected 1 arguments, but got 0. Did you forget to include 'void' in your type argument to 'Promise'? +error TS2688: Cannot find type definition file for '../../../out-test/api/TestUtils'. + The file is in the program because: + Entry point of type library '../../../out-test/api/TestUtils' specified in compilerOptions +error TS2688: Cannot find type definition file for '../../../out-test/api/TestUtils'. + The file is in the program because: + Entry point of type library '../../../out-test/api/TestUtils' specified in compilerOptions addons/xterm-addon-ligatures/src/font.ts(6,29): error TS2307: Cannot find module 'font-finder' or its corresponding type declarations. addons/xterm-addon-ligatures/src/font.ts(7,32): error TS2307: Cannot find module 'font-ligatures' or its corresponding type declarations. addons/xterm-addon-ligatures/src/index.ts(7,22): error TS2307: Cannot find module 'font-ligatures' or its corresponding type declarations. addons/xterm-addon-ligatures/src/index.ts(75,14): error TS2347: Untyped function calls may not accept type arguments. addons/xterm-addon-ligatures/src/index.ts(76,9): error TS7006: Parameter 'range' implicitly has an 'any' type. +addons/xterm-addon-ligatures/src/index.test.ts(6,23): error TS2307: Cannot find module 'path' or its corresponding type declarations. addons/xterm-addon-ligatures/src/index.test.ts(7,24): error TS2307: Cannot find module 'sinon' or its corresponding type declarations. addons/xterm-addon-ligatures/src/index.test.ts(9,29): error TS2307: Cannot find module 'font-finder' or its corresponding type declarations. addons/xterm-addon-ligatures/src/index.test.ts(10,32): error TS2307: Cannot find module 'font-ligatures' or its corresponding type declarations. +addons/xterm-addon-ligatures/src/index.test.ts(26,25): error TS2304: Cannot find name '__dirname'. +addons/xterm-addon-ligatures/src/index.test.ts(33,25): error TS2304: Cannot find name '__dirname'. +addons/xterm-addon-ligatures/src/index.test.ts(40,25): error TS2304: Cannot find name '__dirname'. +error TS2688: Cannot find type definition file for '../../../out-test/api/TestUtils'. + The file is in the program because: + Entry point of type library '../../../out-test/api/TestUtils' specified in compilerOptions +error TS2688: Cannot find type definition file for '../../../out-test/api/TestUtils'. + The file is in the program because: + Entry point of type library '../../../out-test/api/TestUtils' specified in compilerOptions +error TS2688: Cannot find type definition file for '../../../out-test/api/TestUtils'. + The file is in the program because: + Entry point of type library '../../../out-test/api/TestUtils' specified in compilerOptions +error TS2688: Cannot find type definition file for '../../../out-test/api/TestUtils'. + The file is in the program because: + Entry point of type library '../../../out-test/api/TestUtils' specified in compilerOptions diff --git a/tests/baselines/reference/emitClassExpressionInDeclarationFile2.errors.txt b/tests/baselines/reference/emitClassExpressionInDeclarationFile2.errors.txt index 4541cf2a58aea..25c0bc8c50b8b 100644 --- a/tests/baselines/reference/emitClassExpressionInDeclarationFile2.errors.txt +++ b/tests/baselines/reference/emitClassExpressionInDeclarationFile2.errors.txt @@ -1,9 +1,10 @@ tests/cases/compiler/emitClassExpressionInDeclarationFile2.ts(1,12): error TS4094: Property 'p' of exported class expression may not be private or protected. tests/cases/compiler/emitClassExpressionInDeclarationFile2.ts(1,12): error TS4094: Property 'ps' of exported class expression may not be private or protected. tests/cases/compiler/emitClassExpressionInDeclarationFile2.ts(16,17): error TS4094: Property 'property' of exported class expression may not be private or protected. +tests/cases/compiler/emitClassExpressionInDeclarationFile2.ts(23,14): error TS4094: Property 'property' of exported class expression may not be private or protected. -==== tests/cases/compiler/emitClassExpressionInDeclarationFile2.ts (3 errors) ==== +==== tests/cases/compiler/emitClassExpressionInDeclarationFile2.ts (4 errors) ==== export var noPrivates = class { ~~~~~~~~~~ !!! error TS4094: Property 'p' of exported class expression may not be private or protected. @@ -33,6 +34,8 @@ tests/cases/compiler/emitClassExpressionInDeclarationFile2.ts(16,17): error TS40 } export class Test extends WithTags(FooItem) {} + ~~~~ +!!! error TS4094: Property 'property' of exported class expression may not be private or protected. const test = new Test(); diff --git a/tests/baselines/reference/emitExponentiationOperatorInTempalteString4.types b/tests/baselines/reference/emitExponentiationOperatorInTempalteString4.types index 0ed777f4e3c00..912a26f746ff7 100644 --- a/tests/baselines/reference/emitExponentiationOperatorInTempalteString4.types +++ b/tests/baselines/reference/emitExponentiationOperatorInTempalteString4.types @@ -12,14 +12,14 @@ var s; // With TemplateTail `${t1 ** -t2} world`; ->`${t1 ** -t2} world` : `${number} world` +>`${t1 ** -t2} world` : string >t1 ** -t2 : number >t1 : number >-t2 : number >t2 : number `${(-t1) ** t2 - t1} world`; ->`${(-t1) ** t2 - t1} world` : `${number} world` +>`${(-t1) ** t2 - t1} world` : string >(-t1) ** t2 - t1 : number >(-t1) ** t2 : number >(-t1) : number @@ -29,7 +29,7 @@ var s; >t1 : number `${(-++t1) ** t2 - t1} world`; ->`${(-++t1) ** t2 - t1} world` : `${number} world` +>`${(-++t1) ** t2 - t1} world` : string >(-++t1) ** t2 - t1 : number >(-++t1) ** t2 : number >(-++t1) : number @@ -40,7 +40,7 @@ var s; >t1 : number `${(-t1++) ** t2 - t1} world`; ->`${(-t1++) ** t2 - t1} world` : `${number} world` +>`${(-t1++) ** t2 - t1} world` : string >(-t1++) ** t2 - t1 : number >(-t1++) ** t2 : number >(-t1++) : number @@ -51,7 +51,7 @@ var s; >t1 : number `${(~t1) ** t2 ** --t1 } world`; ->`${(~t1) ** t2 ** --t1 } world` : `${number} world` +>`${(~t1) ** t2 ** --t1 } world` : string >(~t1) ** t2 ** --t1 : number >(~t1) : number >~t1 : number @@ -62,7 +62,7 @@ var s; >t1 : number `${typeof (t1 ** t2 ** t1) } world`; ->`${typeof (t1 ** t2 ** t1) } world` : "string world" | "number world" | "bigint world" | "boolean world" | "symbol world" | "undefined world" | "object world" | "function world" +>`${typeof (t1 ** t2 ** t1) } world` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number @@ -73,7 +73,7 @@ var s; // TempateHead & TemplateTail are empt `${t1 ** -t2} hello world ${t1 ** -t2}`; ->`${t1 ** -t2} hello world ${t1 ** -t2}` : `${number} hello world ${number}` +>`${t1 ** -t2} hello world ${t1 ** -t2}` : string >t1 ** -t2 : number >t1 : number >-t2 : number @@ -84,7 +84,7 @@ var s; >t2 : number `${(-t1) ** t2 - t1} hello world ${(-t1) ** t2 - t1}`; ->`${(-t1) ** t2 - t1} hello world ${(-t1) ** t2 - t1}` : `${number} hello world ${number}` +>`${(-t1) ** t2 - t1} hello world ${(-t1) ** t2 - t1}` : string >(-t1) ** t2 - t1 : number >(-t1) ** t2 : number >(-t1) : number @@ -101,7 +101,7 @@ var s; >t1 : number `${(-++t1) ** t2 - t1} hello world ${t1 ** (-++t1) **- t1}`; ->`${(-++t1) ** t2 - t1} hello world ${t1 ** (-++t1) **- t1}` : `${number} hello world ${number}` +>`${(-++t1) ** t2 - t1} hello world ${t1 ** (-++t1) **- t1}` : string >(-++t1) ** t2 - t1 : number >(-++t1) ** t2 : number >(-++t1) : number @@ -121,7 +121,7 @@ var s; >t1 : number `${(-t1++) ** t2 - t1} hello world ${t2 ** (-t1++) ** - t1}`; ->`${(-t1++) ** t2 - t1} hello world ${t2 ** (-t1++) ** - t1}` : `${number} hello world ${number}` +>`${(-t1++) ** t2 - t1} hello world ${t2 ** (-t1++) ** - t1}` : string >(-t1++) ** t2 - t1 : number >(-t1++) ** t2 : number >(-t1++) : number @@ -141,7 +141,7 @@ var s; >t1 : number `${(~t1) ** t2 ** --t1 } hello world ${(~t1) ** t2 ** --t1 }`; ->`${(~t1) ** t2 ** --t1 } hello world ${(~t1) ** t2 ** --t1 }` : `${number} hello world ${number}` +>`${(~t1) ** t2 ** --t1 } hello world ${(~t1) ** t2 ** --t1 }` : string >(~t1) ** t2 ** --t1 : number >(~t1) : number >~t1 : number @@ -160,7 +160,7 @@ var s; >t1 : number `${typeof (t1 ** t2 ** t1)} hello world ${typeof (t1 ** t2 ** t1)}`; ->`${typeof (t1 ** t2 ** t1)} hello world ${typeof (t1 ** t2 ** t1)}` : "string hello world string" | "string hello world number" | "string hello world bigint" | "string hello world boolean" | "string hello world symbol" | "string hello world undefined" | "string hello world object" | "string hello world function" | "number hello world string" | "number hello world number" | "number hello world bigint" | "number hello world boolean" | "number hello world symbol" | "number hello world undefined" | "number hello world object" | "number hello world function" | "bigint hello world string" | "bigint hello world number" | "bigint hello world bigint" | "bigint hello world boolean" | "bigint hello world symbol" | "bigint hello world undefined" | "bigint hello world object" | "bigint hello world function" | "boolean hello world string" | "boolean hello world number" | "boolean hello world bigint" | "boolean hello world boolean" | "boolean hello world symbol" | "boolean hello world undefined" | "boolean hello world object" | "boolean hello world function" | "symbol hello world string" | "symbol hello world number" | "symbol hello world bigint" | "symbol hello world boolean" | "symbol hello world symbol" | "symbol hello world undefined" | "symbol hello world object" | "symbol hello world function" | "undefined hello world string" | "undefined hello world number" | "undefined hello world bigint" | "undefined hello world boolean" | "undefined hello world symbol" | "undefined hello world undefined" | "undefined hello world object" | "undefined hello world function" | "object hello world string" | "object hello world number" | "object hello world bigint" | "object hello world boolean" | "object hello world symbol" | "object hello world undefined" | "object hello world object" | "object hello world function" | "function hello world string" | "function hello world number" | "function hello world bigint" | "function hello world boolean" | "function hello world symbol" | "function hello world undefined" | "function hello world object" | "function hello world function" +>`${typeof (t1 ** t2 ** t1)} hello world ${typeof (t1 ** t2 ** t1)}` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number @@ -178,7 +178,7 @@ var s; // With templateHead `hello ${(-t1) ** t2 - t1}`; ->`hello ${(-t1) ** t2 - t1}` : `hello ${number}` +>`hello ${(-t1) ** t2 - t1}` : string >(-t1) ** t2 - t1 : number >(-t1) ** t2 : number >(-t1) : number @@ -188,7 +188,7 @@ var s; >t1 : number `hello ${(-++t1) ** t2 - t1}`; ->`hello ${(-++t1) ** t2 - t1}` : `hello ${number}` +>`hello ${(-++t1) ** t2 - t1}` : string >(-++t1) ** t2 - t1 : number >(-++t1) ** t2 : number >(-++t1) : number @@ -199,7 +199,7 @@ var s; >t1 : number `hello ${(-t1++) ** t2 - t1}`; ->`hello ${(-t1++) ** t2 - t1}` : `hello ${number}` +>`hello ${(-t1++) ** t2 - t1}` : string >(-t1++) ** t2 - t1 : number >(-t1++) ** t2 : number >(-t1++) : number @@ -210,7 +210,7 @@ var s; >t1 : number `hello ${(~t1) ** t2 ** --t1 }`; ->`hello ${(~t1) ** t2 ** --t1 }` : `hello ${number}` +>`hello ${(~t1) ** t2 ** --t1 }` : string >(~t1) ** t2 ** --t1 : number >(~t1) : number >~t1 : number @@ -221,7 +221,7 @@ var s; >t1 : number `hello ${typeof (t1 ** t2 ** t1)}`; ->`hello ${typeof (t1 ** t2 ** t1)}` : "hello string" | "hello number" | "hello bigint" | "hello boolean" | "hello symbol" | "hello undefined" | "hello object" | "hello function" +>`hello ${typeof (t1 ** t2 ** t1)}` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number diff --git a/tests/baselines/reference/emitExponentiationOperatorInTempalteString4ES6.types b/tests/baselines/reference/emitExponentiationOperatorInTempalteString4ES6.types index e984817fd5a8a..08d0d591dfb1b 100644 --- a/tests/baselines/reference/emitExponentiationOperatorInTempalteString4ES6.types +++ b/tests/baselines/reference/emitExponentiationOperatorInTempalteString4ES6.types @@ -12,14 +12,14 @@ var s; // With TemplateTail `${t1 ** -t2} world`; ->`${t1 ** -t2} world` : `${number} world` +>`${t1 ** -t2} world` : string >t1 ** -t2 : number >t1 : number >-t2 : number >t2 : number `${(-t1) ** t2 - t1} world`; ->`${(-t1) ** t2 - t1} world` : `${number} world` +>`${(-t1) ** t2 - t1} world` : string >(-t1) ** t2 - t1 : number >(-t1) ** t2 : number >(-t1) : number @@ -29,7 +29,7 @@ var s; >t1 : number `${(-++t1) ** t2 - t1} world`; ->`${(-++t1) ** t2 - t1} world` : `${number} world` +>`${(-++t1) ** t2 - t1} world` : string >(-++t1) ** t2 - t1 : number >(-++t1) ** t2 : number >(-++t1) : number @@ -40,7 +40,7 @@ var s; >t1 : number `${(-t1++) ** t2 - t1} world`; ->`${(-t1++) ** t2 - t1} world` : `${number} world` +>`${(-t1++) ** t2 - t1} world` : string >(-t1++) ** t2 - t1 : number >(-t1++) ** t2 : number >(-t1++) : number @@ -51,7 +51,7 @@ var s; >t1 : number `${(~t1) ** t2 ** --t1 } world`; ->`${(~t1) ** t2 ** --t1 } world` : `${number} world` +>`${(~t1) ** t2 ** --t1 } world` : string >(~t1) ** t2 ** --t1 : number >(~t1) : number >~t1 : number @@ -62,7 +62,7 @@ var s; >t1 : number `${typeof (t1 ** t2 ** t1) } world`; ->`${typeof (t1 ** t2 ** t1) } world` : "string world" | "number world" | "bigint world" | "boolean world" | "symbol world" | "undefined world" | "object world" | "function world" +>`${typeof (t1 ** t2 ** t1) } world` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number @@ -73,7 +73,7 @@ var s; // TempateHead & TemplateTail are empt `${t1 ** -t2} hello world ${t1 ** -t2}`; ->`${t1 ** -t2} hello world ${t1 ** -t2}` : `${number} hello world ${number}` +>`${t1 ** -t2} hello world ${t1 ** -t2}` : string >t1 ** -t2 : number >t1 : number >-t2 : number @@ -84,7 +84,7 @@ var s; >t2 : number `${(-t1) ** t2 - t1} hello world ${(-t1) ** t2 - t1}`; ->`${(-t1) ** t2 - t1} hello world ${(-t1) ** t2 - t1}` : `${number} hello world ${number}` +>`${(-t1) ** t2 - t1} hello world ${(-t1) ** t2 - t1}` : string >(-t1) ** t2 - t1 : number >(-t1) ** t2 : number >(-t1) : number @@ -101,7 +101,7 @@ var s; >t1 : number `${(-++t1) ** t2 - t1} hello world ${t1 ** (-++t1) **- t1}`; ->`${(-++t1) ** t2 - t1} hello world ${t1 ** (-++t1) **- t1}` : `${number} hello world ${number}` +>`${(-++t1) ** t2 - t1} hello world ${t1 ** (-++t1) **- t1}` : string >(-++t1) ** t2 - t1 : number >(-++t1) ** t2 : number >(-++t1) : number @@ -121,7 +121,7 @@ var s; >t1 : number `${(-t1++) ** t2 - t1} hello world ${t2 ** (-t1++) ** - t1}`; ->`${(-t1++) ** t2 - t1} hello world ${t2 ** (-t1++) ** - t1}` : `${number} hello world ${number}` +>`${(-t1++) ** t2 - t1} hello world ${t2 ** (-t1++) ** - t1}` : string >(-t1++) ** t2 - t1 : number >(-t1++) ** t2 : number >(-t1++) : number @@ -141,7 +141,7 @@ var s; >t1 : number `${(~t1) ** t2 ** --t1 } hello world ${(~t1) ** t2 ** --t1 }`; ->`${(~t1) ** t2 ** --t1 } hello world ${(~t1) ** t2 ** --t1 }` : `${number} hello world ${number}` +>`${(~t1) ** t2 ** --t1 } hello world ${(~t1) ** t2 ** --t1 }` : string >(~t1) ** t2 ** --t1 : number >(~t1) : number >~t1 : number @@ -160,7 +160,7 @@ var s; >t1 : number `${typeof (t1 ** t2 ** t1)} hello world ${typeof (t1 ** t2 ** t1)}`; ->`${typeof (t1 ** t2 ** t1)} hello world ${typeof (t1 ** t2 ** t1)}` : "string hello world string" | "string hello world number" | "string hello world bigint" | "string hello world boolean" | "string hello world symbol" | "string hello world undefined" | "string hello world object" | "string hello world function" | "number hello world string" | "number hello world number" | "number hello world bigint" | "number hello world boolean" | "number hello world symbol" | "number hello world undefined" | "number hello world object" | "number hello world function" | "bigint hello world string" | "bigint hello world number" | "bigint hello world bigint" | "bigint hello world boolean" | "bigint hello world symbol" | "bigint hello world undefined" | "bigint hello world object" | "bigint hello world function" | "boolean hello world string" | "boolean hello world number" | "boolean hello world bigint" | "boolean hello world boolean" | "boolean hello world symbol" | "boolean hello world undefined" | "boolean hello world object" | "boolean hello world function" | "symbol hello world string" | "symbol hello world number" | "symbol hello world bigint" | "symbol hello world boolean" | "symbol hello world symbol" | "symbol hello world undefined" | "symbol hello world object" | "symbol hello world function" | "undefined hello world string" | "undefined hello world number" | "undefined hello world bigint" | "undefined hello world boolean" | "undefined hello world symbol" | "undefined hello world undefined" | "undefined hello world object" | "undefined hello world function" | "object hello world string" | "object hello world number" | "object hello world bigint" | "object hello world boolean" | "object hello world symbol" | "object hello world undefined" | "object hello world object" | "object hello world function" | "function hello world string" | "function hello world number" | "function hello world bigint" | "function hello world boolean" | "function hello world symbol" | "function hello world undefined" | "function hello world object" | "function hello world function" +>`${typeof (t1 ** t2 ** t1)} hello world ${typeof (t1 ** t2 ** t1)}` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number @@ -178,7 +178,7 @@ var s; // With templateHead `hello ${(-t1) ** t2 - t1}`; ->`hello ${(-t1) ** t2 - t1}` : `hello ${number}` +>`hello ${(-t1) ** t2 - t1}` : string >(-t1) ** t2 - t1 : number >(-t1) ** t2 : number >(-t1) : number @@ -188,7 +188,7 @@ var s; >t1 : number `hello ${(-++t1) ** t2 - t1}`; ->`hello ${(-++t1) ** t2 - t1}` : `hello ${number}` +>`hello ${(-++t1) ** t2 - t1}` : string >(-++t1) ** t2 - t1 : number >(-++t1) ** t2 : number >(-++t1) : number @@ -199,7 +199,7 @@ var s; >t1 : number `hello ${(-t1++) ** t2 - t1}`; ->`hello ${(-t1++) ** t2 - t1}` : `hello ${number}` +>`hello ${(-t1++) ** t2 - t1}` : string >(-t1++) ** t2 - t1 : number >(-t1++) ** t2 : number >(-t1++) : number @@ -210,7 +210,7 @@ var s; >t1 : number `hello ${(~t1) ** t2 ** --t1 }`; ->`hello ${(~t1) ** t2 ** --t1 }` : `hello ${number}` +>`hello ${(~t1) ** t2 ** --t1 }` : string >(~t1) ** t2 ** --t1 : number >(~t1) : number >~t1 : number @@ -221,7 +221,7 @@ var s; >t1 : number `hello ${typeof (t1 ** t2 ** t1)}`; ->`hello ${typeof (t1 ** t2 ** t1)}` : "hello string" | "hello number" | "hello bigint" | "hello boolean" | "hello symbol" | "hello undefined" | "hello object" | "hello function" +>`hello ${typeof (t1 ** t2 ** t1)}` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number diff --git a/tests/baselines/reference/emitExponentiationOperatorInTemplateString1.types b/tests/baselines/reference/emitExponentiationOperatorInTemplateString1.types index 91e19730aff47..0a40fc6f766e9 100644 --- a/tests/baselines/reference/emitExponentiationOperatorInTemplateString1.types +++ b/tests/baselines/reference/emitExponentiationOperatorInTemplateString1.types @@ -12,13 +12,13 @@ var s; // TempateHead & TemplateTail are empty `${t1 ** t2}`; ->`${t1 ** t2}` : `${number}` +>`${t1 ** t2}` : string >t1 ** t2 : number >t1 : number >t2 : number `${t1 ** t2 ** t1}`; ->`${t1 ** t2 ** t1}` : `${number}` +>`${t1 ** t2 ** t1}` : string >t1 ** t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -26,7 +26,7 @@ var s; >t1 : number `${t1 + t2 ** t1}`; ->`${t1 + t2 ** t1}` : `${number}` +>`${t1 + t2 ** t1}` : string >t1 + t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -34,7 +34,7 @@ var s; >t1 : number `${t1 ** t2 + t1}`; ->`${t1 ** t2 + t1}` : `${number}` +>`${t1 ** t2 + t1}` : string >t1 ** t2 + t1 : number >t1 ** t2 : number >t1 : number @@ -42,7 +42,7 @@ var s; >t1 : number `${t1 + t2 ** t2 + t1 }`; ->`${t1 + t2 ** t2 + t1 }` : `${number}` +>`${t1 + t2 ** t2 + t1 }` : string >t1 + t2 ** t2 + t1 : number >t1 + t2 ** t2 : number >t1 : number @@ -52,7 +52,7 @@ var s; >t1 : number `${typeof (t1 ** t2 ** t1) }`; ->`${typeof (t1 ** t2 ** t1) }` : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" +>`${typeof (t1 ** t2 ** t1) }` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number @@ -74,7 +74,7 @@ var s; >t1 : number `${t1 ** t2}${t1 ** t2}`; ->`${t1 ** t2}${t1 ** t2}` : `${number}${number}` +>`${t1 ** t2}${t1 ** t2}` : string >t1 ** t2 : number >t1 : number >t2 : number @@ -83,7 +83,7 @@ var s; >t2 : number `${t1 ** t2 ** t1}${t1 ** t2 ** t1}`; ->`${t1 ** t2 ** t1}${t1 ** t2 ** t1}` : `${number}${number}` +>`${t1 ** t2 ** t1}${t1 ** t2 ** t1}` : string >t1 ** t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -96,7 +96,7 @@ var s; >t1 : number `${t1 + t2 ** t1}${t1 + t2 ** t1}`; ->`${t1 + t2 ** t1}${t1 + t2 ** t1}` : `${number}${number}` +>`${t1 + t2 ** t1}${t1 + t2 ** t1}` : string >t1 + t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -109,7 +109,7 @@ var s; >t1 : number `${t1 ** t2 + t1}${t1 ** t2 + t1}`; ->`${t1 ** t2 + t1}${t1 ** t2 + t1}` : `${number}${number}` +>`${t1 ** t2 + t1}${t1 ** t2 + t1}` : string >t1 ** t2 + t1 : number >t1 ** t2 : number >t1 : number @@ -122,7 +122,7 @@ var s; >t1 : number `${t1 + t2 ** t2 + t1}${t1 + t2 ** t2 + t1}`; ->`${t1 + t2 ** t2 + t1}${t1 + t2 ** t2 + t1}` : `${number}${number}` +>`${t1 + t2 ** t2 + t1}${t1 + t2 ** t2 + t1}` : string >t1 + t2 ** t2 + t1 : number >t1 + t2 ** t2 : number >t1 : number @@ -139,7 +139,7 @@ var s; >t1 : number `${typeof (t1 ** t2 ** t1)}${typeof (t1 ** t2 ** t1)}`; ->`${typeof (t1 ** t2 ** t1)}${typeof (t1 ** t2 ** t1)}` : "stringstring" | "stringnumber" | "stringbigint" | "stringboolean" | "stringsymbol" | "stringundefined" | "stringobject" | "stringfunction" | "numberstring" | "numbernumber" | "numberbigint" | "numberboolean" | "numbersymbol" | "numberundefined" | "numberobject" | "numberfunction" | "bigintstring" | "bigintnumber" | "bigintbigint" | "bigintboolean" | "bigintsymbol" | "bigintundefined" | "bigintobject" | "bigintfunction" | "booleanstring" | "booleannumber" | "booleanbigint" | "booleanboolean" | "booleansymbol" | "booleanundefined" | "booleanobject" | "booleanfunction" | "symbolstring" | "symbolnumber" | "symbolbigint" | "symbolboolean" | "symbolsymbol" | "symbolundefined" | "symbolobject" | "symbolfunction" | "undefinedstring" | "undefinednumber" | "undefinedbigint" | "undefinedboolean" | "undefinedsymbol" | "undefinedundefined" | "undefinedobject" | "undefinedfunction" | "objectstring" | "objectnumber" | "objectbigint" | "objectboolean" | "objectsymbol" | "objectundefined" | "objectobject" | "objectfunction" | "functionstring" | "functionnumber" | "functionbigint" | "functionboolean" | "functionsymbol" | "functionundefined" | "functionobject" | "functionfunction" +>`${typeof (t1 ** t2 ** t1)}${typeof (t1 ** t2 ** t1)}` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number @@ -156,7 +156,7 @@ var s; >t1 : number `${t1 ** t2} hello world ${t1 ** t2}`; ->`${t1 ** t2} hello world ${t1 ** t2}` : `${number} hello world ${number}` +>`${t1 ** t2} hello world ${t1 ** t2}` : string >t1 ** t2 : number >t1 : number >t2 : number @@ -165,7 +165,7 @@ var s; >t2 : number `${t1 ** t2 ** t1} hello world ${t1 ** t2 ** t1}`; ->`${t1 ** t2 ** t1} hello world ${t1 ** t2 ** t1}` : `${number} hello world ${number}` +>`${t1 ** t2 ** t1} hello world ${t1 ** t2 ** t1}` : string >t1 ** t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -178,7 +178,7 @@ var s; >t1 : number `${t1 + t2 ** t1} hello world ${t1 + t2 ** t1}`; ->`${t1 + t2 ** t1} hello world ${t1 + t2 ** t1}` : `${number} hello world ${number}` +>`${t1 + t2 ** t1} hello world ${t1 + t2 ** t1}` : string >t1 + t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -191,7 +191,7 @@ var s; >t1 : number `${t1 ** t2 + t1} hello world ${t1 ** t2 + t1}`; ->`${t1 ** t2 + t1} hello world ${t1 ** t2 + t1}` : `${number} hello world ${number}` +>`${t1 ** t2 + t1} hello world ${t1 ** t2 + t1}` : string >t1 ** t2 + t1 : number >t1 ** t2 : number >t1 : number @@ -204,7 +204,7 @@ var s; >t1 : number `${t1 + t2 ** t2 + t1} hello world ${t1 + t2 ** t2 + t1}`; ->`${t1 + t2 ** t2 + t1} hello world ${t1 + t2 ** t2 + t1}` : `${number} hello world ${number}` +>`${t1 + t2 ** t2 + t1} hello world ${t1 + t2 ** t2 + t1}` : string >t1 + t2 ** t2 + t1 : number >t1 + t2 ** t2 : number >t1 : number @@ -221,7 +221,7 @@ var s; >t1 : number `${typeof (t1 ** t2 ** t1) } hello world ${typeof (t1 ** t2 ** t1) }`; ->`${typeof (t1 ** t2 ** t1) } hello world ${typeof (t1 ** t2 ** t1) }` : "string hello world string" | "string hello world number" | "string hello world bigint" | "string hello world boolean" | "string hello world symbol" | "string hello world undefined" | "string hello world object" | "string hello world function" | "number hello world string" | "number hello world number" | "number hello world bigint" | "number hello world boolean" | "number hello world symbol" | "number hello world undefined" | "number hello world object" | "number hello world function" | "bigint hello world string" | "bigint hello world number" | "bigint hello world bigint" | "bigint hello world boolean" | "bigint hello world symbol" | "bigint hello world undefined" | "bigint hello world object" | "bigint hello world function" | "boolean hello world string" | "boolean hello world number" | "boolean hello world bigint" | "boolean hello world boolean" | "boolean hello world symbol" | "boolean hello world undefined" | "boolean hello world object" | "boolean hello world function" | "symbol hello world string" | "symbol hello world number" | "symbol hello world bigint" | "symbol hello world boolean" | "symbol hello world symbol" | "symbol hello world undefined" | "symbol hello world object" | "symbol hello world function" | "undefined hello world string" | "undefined hello world number" | "undefined hello world bigint" | "undefined hello world boolean" | "undefined hello world symbol" | "undefined hello world undefined" | "undefined hello world object" | "undefined hello world function" | "object hello world string" | "object hello world number" | "object hello world bigint" | "object hello world boolean" | "object hello world symbol" | "object hello world undefined" | "object hello world object" | "object hello world function" | "function hello world string" | "function hello world number" | "function hello world bigint" | "function hello world boolean" | "function hello world symbol" | "function hello world undefined" | "function hello world object" | "function hello world function" +>`${typeof (t1 ** t2 ** t1) } hello world ${typeof (t1 ** t2 ** t1) }` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number diff --git a/tests/baselines/reference/emitExponentiationOperatorInTemplateString1ES6.types b/tests/baselines/reference/emitExponentiationOperatorInTemplateString1ES6.types index 8f58a022c2b0a..9d712e6e366c4 100644 --- a/tests/baselines/reference/emitExponentiationOperatorInTemplateString1ES6.types +++ b/tests/baselines/reference/emitExponentiationOperatorInTemplateString1ES6.types @@ -12,13 +12,13 @@ var s; // TempateHead & TemplateTail are empty `${t1 ** t2}`; ->`${t1 ** t2}` : `${number}` +>`${t1 ** t2}` : string >t1 ** t2 : number >t1 : number >t2 : number `${t1 ** t2 ** t1}`; ->`${t1 ** t2 ** t1}` : `${number}` +>`${t1 ** t2 ** t1}` : string >t1 ** t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -26,7 +26,7 @@ var s; >t1 : number `${t1 + t2 ** t1}`; ->`${t1 + t2 ** t1}` : `${number}` +>`${t1 + t2 ** t1}` : string >t1 + t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -34,7 +34,7 @@ var s; >t1 : number `${t1 ** t2 + t1}`; ->`${t1 ** t2 + t1}` : `${number}` +>`${t1 ** t2 + t1}` : string >t1 ** t2 + t1 : number >t1 ** t2 : number >t1 : number @@ -42,7 +42,7 @@ var s; >t1 : number `${t1 + t2 ** t2 + t1 }`; ->`${t1 + t2 ** t2 + t1 }` : `${number}` +>`${t1 + t2 ** t2 + t1 }` : string >t1 + t2 ** t2 + t1 : number >t1 + t2 ** t2 : number >t1 : number @@ -52,7 +52,7 @@ var s; >t1 : number `${typeof (t1 ** t2 ** t1) }`; ->`${typeof (t1 ** t2 ** t1) }` : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" +>`${typeof (t1 ** t2 ** t1) }` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number @@ -74,7 +74,7 @@ var s; >t1 : number `${t1 ** t2}${t1 ** t2}`; ->`${t1 ** t2}${t1 ** t2}` : `${number}${number}` +>`${t1 ** t2}${t1 ** t2}` : string >t1 ** t2 : number >t1 : number >t2 : number @@ -83,7 +83,7 @@ var s; >t2 : number `${t1 ** t2 ** t1}${t1 ** t2 ** t1}`; ->`${t1 ** t2 ** t1}${t1 ** t2 ** t1}` : `${number}${number}` +>`${t1 ** t2 ** t1}${t1 ** t2 ** t1}` : string >t1 ** t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -96,7 +96,7 @@ var s; >t1 : number `${t1 + t2 ** t1}${t1 + t2 ** t1}`; ->`${t1 + t2 ** t1}${t1 + t2 ** t1}` : `${number}${number}` +>`${t1 + t2 ** t1}${t1 + t2 ** t1}` : string >t1 + t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -109,7 +109,7 @@ var s; >t1 : number `${t1 ** t2 + t1}${t1 ** t2 + t1}`; ->`${t1 ** t2 + t1}${t1 ** t2 + t1}` : `${number}${number}` +>`${t1 ** t2 + t1}${t1 ** t2 + t1}` : string >t1 ** t2 + t1 : number >t1 ** t2 : number >t1 : number @@ -122,7 +122,7 @@ var s; >t1 : number `${t1 + t2 ** t2 + t1}${t1 + t2 ** t2 + t1}`; ->`${t1 + t2 ** t2 + t1}${t1 + t2 ** t2 + t1}` : `${number}${number}` +>`${t1 + t2 ** t2 + t1}${t1 + t2 ** t2 + t1}` : string >t1 + t2 ** t2 + t1 : number >t1 + t2 ** t2 : number >t1 : number @@ -139,7 +139,7 @@ var s; >t1 : number `${typeof (t1 ** t2 ** t1)}${typeof (t1 ** t2 ** t1)}`; ->`${typeof (t1 ** t2 ** t1)}${typeof (t1 ** t2 ** t1)}` : "stringstring" | "stringnumber" | "stringbigint" | "stringboolean" | "stringsymbol" | "stringundefined" | "stringobject" | "stringfunction" | "numberstring" | "numbernumber" | "numberbigint" | "numberboolean" | "numbersymbol" | "numberundefined" | "numberobject" | "numberfunction" | "bigintstring" | "bigintnumber" | "bigintbigint" | "bigintboolean" | "bigintsymbol" | "bigintundefined" | "bigintobject" | "bigintfunction" | "booleanstring" | "booleannumber" | "booleanbigint" | "booleanboolean" | "booleansymbol" | "booleanundefined" | "booleanobject" | "booleanfunction" | "symbolstring" | "symbolnumber" | "symbolbigint" | "symbolboolean" | "symbolsymbol" | "symbolundefined" | "symbolobject" | "symbolfunction" | "undefinedstring" | "undefinednumber" | "undefinedbigint" | "undefinedboolean" | "undefinedsymbol" | "undefinedundefined" | "undefinedobject" | "undefinedfunction" | "objectstring" | "objectnumber" | "objectbigint" | "objectboolean" | "objectsymbol" | "objectundefined" | "objectobject" | "objectfunction" | "functionstring" | "functionnumber" | "functionbigint" | "functionboolean" | "functionsymbol" | "functionundefined" | "functionobject" | "functionfunction" +>`${typeof (t1 ** t2 ** t1)}${typeof (t1 ** t2 ** t1)}` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number @@ -156,7 +156,7 @@ var s; >t1 : number `${t1 ** t2} hello world ${t1 ** t2}`; ->`${t1 ** t2} hello world ${t1 ** t2}` : `${number} hello world ${number}` +>`${t1 ** t2} hello world ${t1 ** t2}` : string >t1 ** t2 : number >t1 : number >t2 : number @@ -165,7 +165,7 @@ var s; >t2 : number `${t1 ** t2 ** t1} hello world ${t1 ** t2 ** t1}`; ->`${t1 ** t2 ** t1} hello world ${t1 ** t2 ** t1}` : `${number} hello world ${number}` +>`${t1 ** t2 ** t1} hello world ${t1 ** t2 ** t1}` : string >t1 ** t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -178,7 +178,7 @@ var s; >t1 : number `${t1 + t2 ** t1} hello world ${t1 + t2 ** t1}`; ->`${t1 + t2 ** t1} hello world ${t1 + t2 ** t1}` : `${number} hello world ${number}` +>`${t1 + t2 ** t1} hello world ${t1 + t2 ** t1}` : string >t1 + t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -191,7 +191,7 @@ var s; >t1 : number `${t1 ** t2 + t1} hello world ${t1 ** t2 + t1}`; ->`${t1 ** t2 + t1} hello world ${t1 ** t2 + t1}` : `${number} hello world ${number}` +>`${t1 ** t2 + t1} hello world ${t1 ** t2 + t1}` : string >t1 ** t2 + t1 : number >t1 ** t2 : number >t1 : number @@ -204,7 +204,7 @@ var s; >t1 : number `${t1 + t2 ** t2 + t1} hello world ${t1 + t2 ** t2 + t1}`; ->`${t1 + t2 ** t2 + t1} hello world ${t1 + t2 ** t2 + t1}` : `${number} hello world ${number}` +>`${t1 + t2 ** t2 + t1} hello world ${t1 + t2 ** t2 + t1}` : string >t1 + t2 ** t2 + t1 : number >t1 + t2 ** t2 : number >t1 : number @@ -221,7 +221,7 @@ var s; >t1 : number `${typeof (t1 ** t2 ** t1) } hello world ${typeof (t1 ** t2 ** t1) }`; ->`${typeof (t1 ** t2 ** t1) } hello world ${typeof (t1 ** t2 ** t1) }` : "string hello world string" | "string hello world number" | "string hello world bigint" | "string hello world boolean" | "string hello world symbol" | "string hello world undefined" | "string hello world object" | "string hello world function" | "number hello world string" | "number hello world number" | "number hello world bigint" | "number hello world boolean" | "number hello world symbol" | "number hello world undefined" | "number hello world object" | "number hello world function" | "bigint hello world string" | "bigint hello world number" | "bigint hello world bigint" | "bigint hello world boolean" | "bigint hello world symbol" | "bigint hello world undefined" | "bigint hello world object" | "bigint hello world function" | "boolean hello world string" | "boolean hello world number" | "boolean hello world bigint" | "boolean hello world boolean" | "boolean hello world symbol" | "boolean hello world undefined" | "boolean hello world object" | "boolean hello world function" | "symbol hello world string" | "symbol hello world number" | "symbol hello world bigint" | "symbol hello world boolean" | "symbol hello world symbol" | "symbol hello world undefined" | "symbol hello world object" | "symbol hello world function" | "undefined hello world string" | "undefined hello world number" | "undefined hello world bigint" | "undefined hello world boolean" | "undefined hello world symbol" | "undefined hello world undefined" | "undefined hello world object" | "undefined hello world function" | "object hello world string" | "object hello world number" | "object hello world bigint" | "object hello world boolean" | "object hello world symbol" | "object hello world undefined" | "object hello world object" | "object hello world function" | "function hello world string" | "function hello world number" | "function hello world bigint" | "function hello world boolean" | "function hello world symbol" | "function hello world undefined" | "function hello world object" | "function hello world function" +>`${typeof (t1 ** t2 ** t1) } hello world ${typeof (t1 ** t2 ** t1) }` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number diff --git a/tests/baselines/reference/emitExponentiationOperatorInTemplateString2.types b/tests/baselines/reference/emitExponentiationOperatorInTemplateString2.types index b2d570b2d3650..9b583b03d2836 100644 --- a/tests/baselines/reference/emitExponentiationOperatorInTemplateString2.types +++ b/tests/baselines/reference/emitExponentiationOperatorInTemplateString2.types @@ -12,13 +12,13 @@ var s; // With templateHead `hello ${t1 ** t2}`; ->`hello ${t1 ** t2}` : `hello ${number}` +>`hello ${t1 ** t2}` : string >t1 ** t2 : number >t1 : number >t2 : number `hello ${t1 ** t2 ** t1}`; ->`hello ${t1 ** t2 ** t1}` : `hello ${number}` +>`hello ${t1 ** t2 ** t1}` : string >t1 ** t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -26,7 +26,7 @@ var s; >t1 : number `hello ${t1 + t2 ** t1}`; ->`hello ${t1 + t2 ** t1}` : `hello ${number}` +>`hello ${t1 + t2 ** t1}` : string >t1 + t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -34,7 +34,7 @@ var s; >t1 : number `hello ${t1 ** t2 + t1}`; ->`hello ${t1 ** t2 + t1}` : `hello ${number}` +>`hello ${t1 ** t2 + t1}` : string >t1 ** t2 + t1 : number >t1 ** t2 : number >t1 : number @@ -42,7 +42,7 @@ var s; >t1 : number `hello ${t1 + t2 ** t2 + t1 }`; ->`hello ${t1 + t2 ** t2 + t1 }` : `hello ${number}` +>`hello ${t1 + t2 ** t2 + t1 }` : string >t1 + t2 ** t2 + t1 : number >t1 + t2 ** t2 : number >t1 : number @@ -52,7 +52,7 @@ var s; >t1 : number `hello ${typeof (t1 ** t2 ** t1) }`; ->`hello ${typeof (t1 ** t2 ** t1) }` : "hello string" | "hello number" | "hello bigint" | "hello boolean" | "hello symbol" | "hello undefined" | "hello object" | "hello function" +>`hello ${typeof (t1 ** t2 ** t1) }` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number @@ -62,7 +62,7 @@ var s; >t1 : number `hello ${1 + typeof (t1 ** t2 ** t1) }`; ->`hello ${1 + typeof (t1 ** t2 ** t1) }` : `hello ${string}` +>`hello ${1 + typeof (t1 ** t2 ** t1) }` : string >1 + typeof (t1 ** t2 ** t1) : string >1 : 1 >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" @@ -74,7 +74,7 @@ var s; >t1 : number `hello ${t1 ** t2}${t1 ** t2}`; ->`hello ${t1 ** t2}${t1 ** t2}` : `hello ${number}${number}` +>`hello ${t1 ** t2}${t1 ** t2}` : string >t1 ** t2 : number >t1 : number >t2 : number @@ -83,7 +83,7 @@ var s; >t2 : number `hello ${t1 ** t2 ** t1}${t1 ** t2 ** t1}`; ->`hello ${t1 ** t2 ** t1}${t1 ** t2 ** t1}` : `hello ${number}${number}` +>`hello ${t1 ** t2 ** t1}${t1 ** t2 ** t1}` : string >t1 ** t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -96,7 +96,7 @@ var s; >t1 : number `hello ${t1 + t2 ** t1}${t1 + t2 ** t1}`; ->`hello ${t1 + t2 ** t1}${t1 + t2 ** t1}` : `hello ${number}${number}` +>`hello ${t1 + t2 ** t1}${t1 + t2 ** t1}` : string >t1 + t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -109,7 +109,7 @@ var s; >t1 : number `hello ${t1 ** t2 + t1}${t1 ** t2 + t1}`; ->`hello ${t1 ** t2 + t1}${t1 ** t2 + t1}` : `hello ${number}${number}` +>`hello ${t1 ** t2 + t1}${t1 ** t2 + t1}` : string >t1 ** t2 + t1 : number >t1 ** t2 : number >t1 : number @@ -122,7 +122,7 @@ var s; >t1 : number `hello ${t1 + t2 ** t2 + t1}${t1 + t2 ** t2 + t1}`; ->`hello ${t1 + t2 ** t2 + t1}${t1 + t2 ** t2 + t1}` : `hello ${number}${number}` +>`hello ${t1 + t2 ** t2 + t1}${t1 + t2 ** t2 + t1}` : string >t1 + t2 ** t2 + t1 : number >t1 + t2 ** t2 : number >t1 : number @@ -139,7 +139,7 @@ var s; >t1 : number `hello ${typeof (t1 ** t2 ** t1) }${typeof (t1 ** t2 ** t1) }`; ->`hello ${typeof (t1 ** t2 ** t1) }${typeof (t1 ** t2 ** t1) }` : "hello stringstring" | "hello stringnumber" | "hello stringbigint" | "hello stringboolean" | "hello stringsymbol" | "hello stringundefined" | "hello stringobject" | "hello stringfunction" | "hello numberstring" | "hello numbernumber" | "hello numberbigint" | "hello numberboolean" | "hello numbersymbol" | "hello numberundefined" | "hello numberobject" | "hello numberfunction" | "hello bigintstring" | "hello bigintnumber" | "hello bigintbigint" | "hello bigintboolean" | "hello bigintsymbol" | "hello bigintundefined" | "hello bigintobject" | "hello bigintfunction" | "hello booleanstring" | "hello booleannumber" | "hello booleanbigint" | "hello booleanboolean" | "hello booleansymbol" | "hello booleanundefined" | "hello booleanobject" | "hello booleanfunction" | "hello symbolstring" | "hello symbolnumber" | "hello symbolbigint" | "hello symbolboolean" | "hello symbolsymbol" | "hello symbolundefined" | "hello symbolobject" | "hello symbolfunction" | "hello undefinedstring" | "hello undefinednumber" | "hello undefinedbigint" | "hello undefinedboolean" | "hello undefinedsymbol" | "hello undefinedundefined" | "hello undefinedobject" | "hello undefinedfunction" | "hello objectstring" | "hello objectnumber" | "hello objectbigint" | "hello objectboolean" | "hello objectsymbol" | "hello objectundefined" | "hello objectobject" | "hello objectfunction" | "hello functionstring" | "hello functionnumber" | "hello functionbigint" | "hello functionboolean" | "hello functionsymbol" | "hello functionundefined" | "hello functionobject" | "hello functionfunction" +>`hello ${typeof (t1 ** t2 ** t1) }${typeof (t1 ** t2 ** t1) }` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number @@ -156,7 +156,7 @@ var s; >t1 : number `hello ${t1 ** t2} hello world ${t1 ** t2}`; ->`hello ${t1 ** t2} hello world ${t1 ** t2}` : `hello ${number} hello world ${number}` +>`hello ${t1 ** t2} hello world ${t1 ** t2}` : string >t1 ** t2 : number >t1 : number >t2 : number @@ -165,7 +165,7 @@ var s; >t2 : number `hello ${t1 ** t2 ** t1} hello world ${t1 ** t2 ** t1}`; ->`hello ${t1 ** t2 ** t1} hello world ${t1 ** t2 ** t1}` : `hello ${number} hello world ${number}` +>`hello ${t1 ** t2 ** t1} hello world ${t1 ** t2 ** t1}` : string >t1 ** t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -178,7 +178,7 @@ var s; >t1 : number `hello ${t1 + t2 ** t1} hello world ${t1 + t2 ** t1}`; ->`hello ${t1 + t2 ** t1} hello world ${t1 + t2 ** t1}` : `hello ${number} hello world ${number}` +>`hello ${t1 + t2 ** t1} hello world ${t1 + t2 ** t1}` : string >t1 + t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -191,7 +191,7 @@ var s; >t1 : number `hello ${t1 ** t2 + t1} hello world ${t1 ** t2 + t1}`; ->`hello ${t1 ** t2 + t1} hello world ${t1 ** t2 + t1}` : `hello ${number} hello world ${number}` +>`hello ${t1 ** t2 + t1} hello world ${t1 ** t2 + t1}` : string >t1 ** t2 + t1 : number >t1 ** t2 : number >t1 : number @@ -204,7 +204,7 @@ var s; >t1 : number `hello ${t1 + t2 ** t2 + t1} hello world ${t1 + t2 ** t2 + t1}`; ->`hello ${t1 + t2 ** t2 + t1} hello world ${t1 + t2 ** t2 + t1}` : `hello ${number} hello world ${number}` +>`hello ${t1 + t2 ** t2 + t1} hello world ${t1 + t2 ** t2 + t1}` : string >t1 + t2 ** t2 + t1 : number >t1 + t2 ** t2 : number >t1 : number @@ -221,7 +221,7 @@ var s; >t1 : number `hello ${typeof (t1 ** t2 ** t1) } hello world ${typeof (t1 ** t2 ** t1) }`; ->`hello ${typeof (t1 ** t2 ** t1) } hello world ${typeof (t1 ** t2 ** t1) }` : "hello string hello world string" | "hello string hello world number" | "hello string hello world bigint" | "hello string hello world boolean" | "hello string hello world symbol" | "hello string hello world undefined" | "hello string hello world object" | "hello string hello world function" | "hello number hello world string" | "hello number hello world number" | "hello number hello world bigint" | "hello number hello world boolean" | "hello number hello world symbol" | "hello number hello world undefined" | "hello number hello world object" | "hello number hello world function" | "hello bigint hello world string" | "hello bigint hello world number" | "hello bigint hello world bigint" | "hello bigint hello world boolean" | "hello bigint hello world symbol" | "hello bigint hello world undefined" | "hello bigint hello world object" | "hello bigint hello world function" | "hello boolean hello world string" | "hello boolean hello world number" | "hello boolean hello world bigint" | "hello boolean hello world boolean" | "hello boolean hello world symbol" | "hello boolean hello world undefined" | "hello boolean hello world object" | "hello boolean hello world function" | "hello symbol hello world string" | "hello symbol hello world number" | "hello symbol hello world bigint" | "hello symbol hello world boolean" | "hello symbol hello world symbol" | "hello symbol hello world undefined" | "hello symbol hello world object" | "hello symbol hello world function" | "hello undefined hello world string" | "hello undefined hello world number" | "hello undefined hello world bigint" | "hello undefined hello world boolean" | "hello undefined hello world symbol" | "hello undefined hello world undefined" | "hello undefined hello world object" | "hello undefined hello world function" | "hello object hello world string" | "hello object hello world number" | "hello object hello world bigint" | "hello object hello world boolean" | "hello object hello world symbol" | "hello object hello world undefined" | "hello object hello world object" | "hello object hello world function" | "hello function hello world string" | "hello function hello world number" | "hello function hello world bigint" | "hello function hello world boolean" | "hello function hello world symbol" | "hello function hello world undefined" | "hello function hello world object" | "hello function hello world function" +>`hello ${typeof (t1 ** t2 ** t1) } hello world ${typeof (t1 ** t2 ** t1) }` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number diff --git a/tests/baselines/reference/emitExponentiationOperatorInTemplateString2ES6.types b/tests/baselines/reference/emitExponentiationOperatorInTemplateString2ES6.types index 66a49fb6bd097..c1c6394c63e1f 100644 --- a/tests/baselines/reference/emitExponentiationOperatorInTemplateString2ES6.types +++ b/tests/baselines/reference/emitExponentiationOperatorInTemplateString2ES6.types @@ -12,13 +12,13 @@ var s; // With templateHead `hello ${t1 ** t2}`; ->`hello ${t1 ** t2}` : `hello ${number}` +>`hello ${t1 ** t2}` : string >t1 ** t2 : number >t1 : number >t2 : number `hello ${t1 ** t2 ** t1}`; ->`hello ${t1 ** t2 ** t1}` : `hello ${number}` +>`hello ${t1 ** t2 ** t1}` : string >t1 ** t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -26,7 +26,7 @@ var s; >t1 : number `hello ${t1 + t2 ** t1}`; ->`hello ${t1 + t2 ** t1}` : `hello ${number}` +>`hello ${t1 + t2 ** t1}` : string >t1 + t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -34,7 +34,7 @@ var s; >t1 : number `hello ${t1 ** t2 + t1}`; ->`hello ${t1 ** t2 + t1}` : `hello ${number}` +>`hello ${t1 ** t2 + t1}` : string >t1 ** t2 + t1 : number >t1 ** t2 : number >t1 : number @@ -42,7 +42,7 @@ var s; >t1 : number `hello ${t1 + t2 ** t2 + t1 }`; ->`hello ${t1 + t2 ** t2 + t1 }` : `hello ${number}` +>`hello ${t1 + t2 ** t2 + t1 }` : string >t1 + t2 ** t2 + t1 : number >t1 + t2 ** t2 : number >t1 : number @@ -52,7 +52,7 @@ var s; >t1 : number `hello ${typeof (t1 ** t2 ** t1) }`; ->`hello ${typeof (t1 ** t2 ** t1) }` : "hello string" | "hello number" | "hello bigint" | "hello boolean" | "hello symbol" | "hello undefined" | "hello object" | "hello function" +>`hello ${typeof (t1 ** t2 ** t1) }` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number @@ -62,7 +62,7 @@ var s; >t1 : number `hello ${1 + typeof (t1 ** t2 ** t1) }`; ->`hello ${1 + typeof (t1 ** t2 ** t1) }` : `hello ${string}` +>`hello ${1 + typeof (t1 ** t2 ** t1) }` : string >1 + typeof (t1 ** t2 ** t1) : string >1 : 1 >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" @@ -74,7 +74,7 @@ var s; >t1 : number `hello ${t1 ** t2}${t1 ** t2}`; ->`hello ${t1 ** t2}${t1 ** t2}` : `hello ${number}${number}` +>`hello ${t1 ** t2}${t1 ** t2}` : string >t1 ** t2 : number >t1 : number >t2 : number @@ -83,7 +83,7 @@ var s; >t2 : number `hello ${t1 ** t2 ** t1}${t1 ** t2 ** t1}`; ->`hello ${t1 ** t2 ** t1}${t1 ** t2 ** t1}` : `hello ${number}${number}` +>`hello ${t1 ** t2 ** t1}${t1 ** t2 ** t1}` : string >t1 ** t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -96,7 +96,7 @@ var s; >t1 : number `hello ${t1 + t2 ** t1}${t1 + t2 ** t1}`; ->`hello ${t1 + t2 ** t1}${t1 + t2 ** t1}` : `hello ${number}${number}` +>`hello ${t1 + t2 ** t1}${t1 + t2 ** t1}` : string >t1 + t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -109,7 +109,7 @@ var s; >t1 : number `hello ${t1 ** t2 + t1}${t1 ** t2 + t1}`; ->`hello ${t1 ** t2 + t1}${t1 ** t2 + t1}` : `hello ${number}${number}` +>`hello ${t1 ** t2 + t1}${t1 ** t2 + t1}` : string >t1 ** t2 + t1 : number >t1 ** t2 : number >t1 : number @@ -122,7 +122,7 @@ var s; >t1 : number `hello ${t1 + t2 ** t2 + t1}${t1 + t2 ** t2 + t1}`; ->`hello ${t1 + t2 ** t2 + t1}${t1 + t2 ** t2 + t1}` : `hello ${number}${number}` +>`hello ${t1 + t2 ** t2 + t1}${t1 + t2 ** t2 + t1}` : string >t1 + t2 ** t2 + t1 : number >t1 + t2 ** t2 : number >t1 : number @@ -139,7 +139,7 @@ var s; >t1 : number `hello ${typeof (t1 ** t2 ** t1) }${typeof (t1 ** t2 ** t1) }`; ->`hello ${typeof (t1 ** t2 ** t1) }${typeof (t1 ** t2 ** t1) }` : "hello stringstring" | "hello stringnumber" | "hello stringbigint" | "hello stringboolean" | "hello stringsymbol" | "hello stringundefined" | "hello stringobject" | "hello stringfunction" | "hello numberstring" | "hello numbernumber" | "hello numberbigint" | "hello numberboolean" | "hello numbersymbol" | "hello numberundefined" | "hello numberobject" | "hello numberfunction" | "hello bigintstring" | "hello bigintnumber" | "hello bigintbigint" | "hello bigintboolean" | "hello bigintsymbol" | "hello bigintundefined" | "hello bigintobject" | "hello bigintfunction" | "hello booleanstring" | "hello booleannumber" | "hello booleanbigint" | "hello booleanboolean" | "hello booleansymbol" | "hello booleanundefined" | "hello booleanobject" | "hello booleanfunction" | "hello symbolstring" | "hello symbolnumber" | "hello symbolbigint" | "hello symbolboolean" | "hello symbolsymbol" | "hello symbolundefined" | "hello symbolobject" | "hello symbolfunction" | "hello undefinedstring" | "hello undefinednumber" | "hello undefinedbigint" | "hello undefinedboolean" | "hello undefinedsymbol" | "hello undefinedundefined" | "hello undefinedobject" | "hello undefinedfunction" | "hello objectstring" | "hello objectnumber" | "hello objectbigint" | "hello objectboolean" | "hello objectsymbol" | "hello objectundefined" | "hello objectobject" | "hello objectfunction" | "hello functionstring" | "hello functionnumber" | "hello functionbigint" | "hello functionboolean" | "hello functionsymbol" | "hello functionundefined" | "hello functionobject" | "hello functionfunction" +>`hello ${typeof (t1 ** t2 ** t1) }${typeof (t1 ** t2 ** t1) }` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number @@ -156,7 +156,7 @@ var s; >t1 : number `hello ${t1 ** t2} hello world ${t1 ** t2}`; ->`hello ${t1 ** t2} hello world ${t1 ** t2}` : `hello ${number} hello world ${number}` +>`hello ${t1 ** t2} hello world ${t1 ** t2}` : string >t1 ** t2 : number >t1 : number >t2 : number @@ -165,7 +165,7 @@ var s; >t2 : number `hello ${t1 ** t2 ** t1} hello world ${t1 ** t2 ** t1}`; ->`hello ${t1 ** t2 ** t1} hello world ${t1 ** t2 ** t1}` : `hello ${number} hello world ${number}` +>`hello ${t1 ** t2 ** t1} hello world ${t1 ** t2 ** t1}` : string >t1 ** t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -178,7 +178,7 @@ var s; >t1 : number `hello ${t1 + t2 ** t1} hello world ${t1 + t2 ** t1}`; ->`hello ${t1 + t2 ** t1} hello world ${t1 + t2 ** t1}` : `hello ${number} hello world ${number}` +>`hello ${t1 + t2 ** t1} hello world ${t1 + t2 ** t1}` : string >t1 + t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -191,7 +191,7 @@ var s; >t1 : number `hello ${t1 ** t2 + t1} hello world ${t1 ** t2 + t1}`; ->`hello ${t1 ** t2 + t1} hello world ${t1 ** t2 + t1}` : `hello ${number} hello world ${number}` +>`hello ${t1 ** t2 + t1} hello world ${t1 ** t2 + t1}` : string >t1 ** t2 + t1 : number >t1 ** t2 : number >t1 : number @@ -204,7 +204,7 @@ var s; >t1 : number `hello ${t1 + t2 ** t2 + t1} hello world ${t1 + t2 ** t2 + t1}`; ->`hello ${t1 + t2 ** t2 + t1} hello world ${t1 + t2 ** t2 + t1}` : `hello ${number} hello world ${number}` +>`hello ${t1 + t2 ** t2 + t1} hello world ${t1 + t2 ** t2 + t1}` : string >t1 + t2 ** t2 + t1 : number >t1 + t2 ** t2 : number >t1 : number @@ -221,7 +221,7 @@ var s; >t1 : number `hello ${typeof (t1 ** t2 ** t1) } hello world ${typeof (t1 ** t2 ** t1) }`; ->`hello ${typeof (t1 ** t2 ** t1) } hello world ${typeof (t1 ** t2 ** t1) }` : "hello string hello world string" | "hello string hello world number" | "hello string hello world bigint" | "hello string hello world boolean" | "hello string hello world symbol" | "hello string hello world undefined" | "hello string hello world object" | "hello string hello world function" | "hello number hello world string" | "hello number hello world number" | "hello number hello world bigint" | "hello number hello world boolean" | "hello number hello world symbol" | "hello number hello world undefined" | "hello number hello world object" | "hello number hello world function" | "hello bigint hello world string" | "hello bigint hello world number" | "hello bigint hello world bigint" | "hello bigint hello world boolean" | "hello bigint hello world symbol" | "hello bigint hello world undefined" | "hello bigint hello world object" | "hello bigint hello world function" | "hello boolean hello world string" | "hello boolean hello world number" | "hello boolean hello world bigint" | "hello boolean hello world boolean" | "hello boolean hello world symbol" | "hello boolean hello world undefined" | "hello boolean hello world object" | "hello boolean hello world function" | "hello symbol hello world string" | "hello symbol hello world number" | "hello symbol hello world bigint" | "hello symbol hello world boolean" | "hello symbol hello world symbol" | "hello symbol hello world undefined" | "hello symbol hello world object" | "hello symbol hello world function" | "hello undefined hello world string" | "hello undefined hello world number" | "hello undefined hello world bigint" | "hello undefined hello world boolean" | "hello undefined hello world symbol" | "hello undefined hello world undefined" | "hello undefined hello world object" | "hello undefined hello world function" | "hello object hello world string" | "hello object hello world number" | "hello object hello world bigint" | "hello object hello world boolean" | "hello object hello world symbol" | "hello object hello world undefined" | "hello object hello world object" | "hello object hello world function" | "hello function hello world string" | "hello function hello world number" | "hello function hello world bigint" | "hello function hello world boolean" | "hello function hello world symbol" | "hello function hello world undefined" | "hello function hello world object" | "hello function hello world function" +>`hello ${typeof (t1 ** t2 ** t1) } hello world ${typeof (t1 ** t2 ** t1) }` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number diff --git a/tests/baselines/reference/emitExponentiationOperatorInTemplateString3.types b/tests/baselines/reference/emitExponentiationOperatorInTemplateString3.types index f49a0220b7495..431d688f3b478 100644 --- a/tests/baselines/reference/emitExponentiationOperatorInTemplateString3.types +++ b/tests/baselines/reference/emitExponentiationOperatorInTemplateString3.types @@ -12,13 +12,13 @@ var s; // With TemplateTail `${t1 ** t2} world`; ->`${t1 ** t2} world` : `${number} world` +>`${t1 ** t2} world` : string >t1 ** t2 : number >t1 : number >t2 : number `${t1 ** t2 ** t1} world`; ->`${t1 ** t2 ** t1} world` : `${number} world` +>`${t1 ** t2 ** t1} world` : string >t1 ** t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -26,7 +26,7 @@ var s; >t1 : number `${t1 + t2 ** t1} world`; ->`${t1 + t2 ** t1} world` : `${number} world` +>`${t1 + t2 ** t1} world` : string >t1 + t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -34,7 +34,7 @@ var s; >t1 : number `${t1 ** t2 + t1} world`; ->`${t1 ** t2 + t1} world` : `${number} world` +>`${t1 ** t2 + t1} world` : string >t1 ** t2 + t1 : number >t1 ** t2 : number >t1 : number @@ -42,7 +42,7 @@ var s; >t1 : number `${t1 + t2 ** t2 + t1 } world`; ->`${t1 + t2 ** t2 + t1 } world` : `${number} world` +>`${t1 + t2 ** t2 + t1 } world` : string >t1 + t2 ** t2 + t1 : number >t1 + t2 ** t2 : number >t1 : number @@ -52,7 +52,7 @@ var s; >t1 : number `${typeof (t1 ** t2 ** t1) } world`; ->`${typeof (t1 ** t2 ** t1) } world` : "string world" | "number world" | "bigint world" | "boolean world" | "symbol world" | "undefined world" | "object world" | "function world" +>`${typeof (t1 ** t2 ** t1) } world` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number @@ -62,7 +62,7 @@ var s; >t1 : number `${1 + typeof (t1 ** t2 ** t1) } world`; ->`${1 + typeof (t1 ** t2 ** t1) } world` : `${string} world` +>`${1 + typeof (t1 ** t2 ** t1) } world` : string >1 + typeof (t1 ** t2 ** t1) : string >1 : 1 >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" @@ -74,7 +74,7 @@ var s; >t1 : number `${t1 ** t2}${t1 ** t2} world`; ->`${t1 ** t2}${t1 ** t2} world` : `${number}${number} world` +>`${t1 ** t2}${t1 ** t2} world` : string >t1 ** t2 : number >t1 : number >t2 : number @@ -83,7 +83,7 @@ var s; >t2 : number `${t1 ** t2 ** t1}${t1 ** t2 ** t1} world`; ->`${t1 ** t2 ** t1}${t1 ** t2 ** t1} world` : `${number}${number} world` +>`${t1 ** t2 ** t1}${t1 ** t2 ** t1} world` : string >t1 ** t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -96,7 +96,7 @@ var s; >t1 : number `${t1 + t2 ** t1}${t1 + t2 ** t1} world`; ->`${t1 + t2 ** t1}${t1 + t2 ** t1} world` : `${number}${number} world` +>`${t1 + t2 ** t1}${t1 + t2 ** t1} world` : string >t1 + t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -109,7 +109,7 @@ var s; >t1 : number `${t1 ** t2 + t1}${t1 ** t2 + t1} world`; ->`${t1 ** t2 + t1}${t1 ** t2 + t1} world` : `${number}${number} world` +>`${t1 ** t2 + t1}${t1 ** t2 + t1} world` : string >t1 ** t2 + t1 : number >t1 ** t2 : number >t1 : number @@ -122,7 +122,7 @@ var s; >t1 : number `${t1 + t2 ** t2 + t1}${t1 + t2 ** t2 + t1} world`; ->`${t1 + t2 ** t2 + t1}${t1 + t2 ** t2 + t1} world` : `${number}${number} world` +>`${t1 + t2 ** t2 + t1}${t1 + t2 ** t2 + t1} world` : string >t1 + t2 ** t2 + t1 : number >t1 + t2 ** t2 : number >t1 : number @@ -139,7 +139,7 @@ var s; >t1 : number `${typeof (t1 ** t2 ** t1) }${typeof (t1 ** t2 ** t1) } world`; ->`${typeof (t1 ** t2 ** t1) }${typeof (t1 ** t2 ** t1) } world` : "stringstring world" | "stringnumber world" | "stringbigint world" | "stringboolean world" | "stringsymbol world" | "stringundefined world" | "stringobject world" | "stringfunction world" | "numberstring world" | "numbernumber world" | "numberbigint world" | "numberboolean world" | "numbersymbol world" | "numberundefined world" | "numberobject world" | "numberfunction world" | "bigintstring world" | "bigintnumber world" | "bigintbigint world" | "bigintboolean world" | "bigintsymbol world" | "bigintundefined world" | "bigintobject world" | "bigintfunction world" | "booleanstring world" | "booleannumber world" | "booleanbigint world" | "booleanboolean world" | "booleansymbol world" | "booleanundefined world" | "booleanobject world" | "booleanfunction world" | "symbolstring world" | "symbolnumber world" | "symbolbigint world" | "symbolboolean world" | "symbolsymbol world" | "symbolundefined world" | "symbolobject world" | "symbolfunction world" | "undefinedstring world" | "undefinednumber world" | "undefinedbigint world" | "undefinedboolean world" | "undefinedsymbol world" | "undefinedundefined world" | "undefinedobject world" | "undefinedfunction world" | "objectstring world" | "objectnumber world" | "objectbigint world" | "objectboolean world" | "objectsymbol world" | "objectundefined world" | "objectobject world" | "objectfunction world" | "functionstring world" | "functionnumber world" | "functionbigint world" | "functionboolean world" | "functionsymbol world" | "functionundefined world" | "functionobject world" | "functionfunction world" +>`${typeof (t1 ** t2 ** t1) }${typeof (t1 ** t2 ** t1) } world` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number @@ -156,7 +156,7 @@ var s; >t1 : number `${t1 ** t2} hello world ${t1 ** t2} !!`; ->`${t1 ** t2} hello world ${t1 ** t2} !!` : `${number} hello world ${number} !!` +>`${t1 ** t2} hello world ${t1 ** t2} !!` : string >t1 ** t2 : number >t1 : number >t2 : number @@ -165,7 +165,7 @@ var s; >t2 : number `${t1 ** t2 ** t1} hello world ${t1 ** t2 ** t1} !!`; ->`${t1 ** t2 ** t1} hello world ${t1 ** t2 ** t1} !!` : `${number} hello world ${number} !!` +>`${t1 ** t2 ** t1} hello world ${t1 ** t2 ** t1} !!` : string >t1 ** t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -178,7 +178,7 @@ var s; >t1 : number `${t1 + t2 ** t1} hello world ${t1 + t2 ** t1} !!`; ->`${t1 + t2 ** t1} hello world ${t1 + t2 ** t1} !!` : `${number} hello world ${number} !!` +>`${t1 + t2 ** t1} hello world ${t1 + t2 ** t1} !!` : string >t1 + t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -191,7 +191,7 @@ var s; >t1 : number `${t1 ** t2 + t1} hello world ${t1 ** t2 + t1} !!`; ->`${t1 ** t2 + t1} hello world ${t1 ** t2 + t1} !!` : `${number} hello world ${number} !!` +>`${t1 ** t2 + t1} hello world ${t1 ** t2 + t1} !!` : string >t1 ** t2 + t1 : number >t1 ** t2 : number >t1 : number @@ -204,7 +204,7 @@ var s; >t1 : number `${t1 + t2 ** t2 + t1} hello world ${t1 + t2 ** t2 + t1} !!`; ->`${t1 + t2 ** t2 + t1} hello world ${t1 + t2 ** t2 + t1} !!` : `${number} hello world ${number} !!` +>`${t1 + t2 ** t2 + t1} hello world ${t1 + t2 ** t2 + t1} !!` : string >t1 + t2 ** t2 + t1 : number >t1 + t2 ** t2 : number >t1 : number @@ -221,7 +221,7 @@ var s; >t1 : number `${typeof (t1 ** t2 ** t1) } hello world ${typeof (t1 ** t2 ** t1)} !!`; ->`${typeof (t1 ** t2 ** t1) } hello world ${typeof (t1 ** t2 ** t1)} !!` : "string hello world string !!" | "string hello world number !!" | "string hello world bigint !!" | "string hello world boolean !!" | "string hello world symbol !!" | "string hello world undefined !!" | "string hello world object !!" | "string hello world function !!" | "number hello world string !!" | "number hello world number !!" | "number hello world bigint !!" | "number hello world boolean !!" | "number hello world symbol !!" | "number hello world undefined !!" | "number hello world object !!" | "number hello world function !!" | "bigint hello world string !!" | "bigint hello world number !!" | "bigint hello world bigint !!" | "bigint hello world boolean !!" | "bigint hello world symbol !!" | "bigint hello world undefined !!" | "bigint hello world object !!" | "bigint hello world function !!" | "boolean hello world string !!" | "boolean hello world number !!" | "boolean hello world bigint !!" | "boolean hello world boolean !!" | "boolean hello world symbol !!" | "boolean hello world undefined !!" | "boolean hello world object !!" | "boolean hello world function !!" | "symbol hello world string !!" | "symbol hello world number !!" | "symbol hello world bigint !!" | "symbol hello world boolean !!" | "symbol hello world symbol !!" | "symbol hello world undefined !!" | "symbol hello world object !!" | "symbol hello world function !!" | "undefined hello world string !!" | "undefined hello world number !!" | "undefined hello world bigint !!" | "undefined hello world boolean !!" | "undefined hello world symbol !!" | "undefined hello world undefined !!" | "undefined hello world object !!" | "undefined hello world function !!" | "object hello world string !!" | "object hello world number !!" | "object hello world bigint !!" | "object hello world boolean !!" | "object hello world symbol !!" | "object hello world undefined !!" | "object hello world object !!" | "object hello world function !!" | "function hello world string !!" | "function hello world number !!" | "function hello world bigint !!" | "function hello world boolean !!" | "function hello world symbol !!" | "function hello world undefined !!" | "function hello world object !!" | "function hello world function !!" +>`${typeof (t1 ** t2 ** t1) } hello world ${typeof (t1 ** t2 ** t1)} !!` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number diff --git a/tests/baselines/reference/emitExponentiationOperatorInTemplateString3ES6.types b/tests/baselines/reference/emitExponentiationOperatorInTemplateString3ES6.types index 583c51c3804df..ccbacd4c7196c 100644 --- a/tests/baselines/reference/emitExponentiationOperatorInTemplateString3ES6.types +++ b/tests/baselines/reference/emitExponentiationOperatorInTemplateString3ES6.types @@ -12,13 +12,13 @@ var s; // With TemplateTail `${t1 ** t2} world`; ->`${t1 ** t2} world` : `${number} world` +>`${t1 ** t2} world` : string >t1 ** t2 : number >t1 : number >t2 : number `${t1 ** t2 ** t1} world`; ->`${t1 ** t2 ** t1} world` : `${number} world` +>`${t1 ** t2 ** t1} world` : string >t1 ** t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -26,7 +26,7 @@ var s; >t1 : number `${t1 + t2 ** t1} world`; ->`${t1 + t2 ** t1} world` : `${number} world` +>`${t1 + t2 ** t1} world` : string >t1 + t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -34,7 +34,7 @@ var s; >t1 : number `${t1 ** t2 + t1} world`; ->`${t1 ** t2 + t1} world` : `${number} world` +>`${t1 ** t2 + t1} world` : string >t1 ** t2 + t1 : number >t1 ** t2 : number >t1 : number @@ -42,7 +42,7 @@ var s; >t1 : number `${t1 + t2 ** t2 + t1 } world`; ->`${t1 + t2 ** t2 + t1 } world` : `${number} world` +>`${t1 + t2 ** t2 + t1 } world` : string >t1 + t2 ** t2 + t1 : number >t1 + t2 ** t2 : number >t1 : number @@ -52,7 +52,7 @@ var s; >t1 : number `${typeof (t1 ** t2 ** t1) } world`; ->`${typeof (t1 ** t2 ** t1) } world` : "string world" | "number world" | "bigint world" | "boolean world" | "symbol world" | "undefined world" | "object world" | "function world" +>`${typeof (t1 ** t2 ** t1) } world` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number @@ -62,7 +62,7 @@ var s; >t1 : number `${1 + typeof (t1 ** t2 ** t1) } world`; ->`${1 + typeof (t1 ** t2 ** t1) } world` : `${string} world` +>`${1 + typeof (t1 ** t2 ** t1) } world` : string >1 + typeof (t1 ** t2 ** t1) : string >1 : 1 >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" @@ -74,7 +74,7 @@ var s; >t1 : number `${t1 ** t2}${t1 ** t2} world`; ->`${t1 ** t2}${t1 ** t2} world` : `${number}${number} world` +>`${t1 ** t2}${t1 ** t2} world` : string >t1 ** t2 : number >t1 : number >t2 : number @@ -83,7 +83,7 @@ var s; >t2 : number `${t1 ** t2 ** t1}${t1 ** t2 ** t1} world`; ->`${t1 ** t2 ** t1}${t1 ** t2 ** t1} world` : `${number}${number} world` +>`${t1 ** t2 ** t1}${t1 ** t2 ** t1} world` : string >t1 ** t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -96,7 +96,7 @@ var s; >t1 : number `${t1 + t2 ** t1}${t1 + t2 ** t1} world`; ->`${t1 + t2 ** t1}${t1 + t2 ** t1} world` : `${number}${number} world` +>`${t1 + t2 ** t1}${t1 + t2 ** t1} world` : string >t1 + t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -109,7 +109,7 @@ var s; >t1 : number `${t1 ** t2 + t1}${t1 ** t2 + t1} world`; ->`${t1 ** t2 + t1}${t1 ** t2 + t1} world` : `${number}${number} world` +>`${t1 ** t2 + t1}${t1 ** t2 + t1} world` : string >t1 ** t2 + t1 : number >t1 ** t2 : number >t1 : number @@ -122,7 +122,7 @@ var s; >t1 : number `${t1 + t2 ** t2 + t1}${t1 + t2 ** t2 + t1} world`; ->`${t1 + t2 ** t2 + t1}${t1 + t2 ** t2 + t1} world` : `${number}${number} world` +>`${t1 + t2 ** t2 + t1}${t1 + t2 ** t2 + t1} world` : string >t1 + t2 ** t2 + t1 : number >t1 + t2 ** t2 : number >t1 : number @@ -139,7 +139,7 @@ var s; >t1 : number `${typeof (t1 ** t2 ** t1) }${typeof (t1 ** t2 ** t1) } world`; ->`${typeof (t1 ** t2 ** t1) }${typeof (t1 ** t2 ** t1) } world` : "stringstring world" | "stringnumber world" | "stringbigint world" | "stringboolean world" | "stringsymbol world" | "stringundefined world" | "stringobject world" | "stringfunction world" | "numberstring world" | "numbernumber world" | "numberbigint world" | "numberboolean world" | "numbersymbol world" | "numberundefined world" | "numberobject world" | "numberfunction world" | "bigintstring world" | "bigintnumber world" | "bigintbigint world" | "bigintboolean world" | "bigintsymbol world" | "bigintundefined world" | "bigintobject world" | "bigintfunction world" | "booleanstring world" | "booleannumber world" | "booleanbigint world" | "booleanboolean world" | "booleansymbol world" | "booleanundefined world" | "booleanobject world" | "booleanfunction world" | "symbolstring world" | "symbolnumber world" | "symbolbigint world" | "symbolboolean world" | "symbolsymbol world" | "symbolundefined world" | "symbolobject world" | "symbolfunction world" | "undefinedstring world" | "undefinednumber world" | "undefinedbigint world" | "undefinedboolean world" | "undefinedsymbol world" | "undefinedundefined world" | "undefinedobject world" | "undefinedfunction world" | "objectstring world" | "objectnumber world" | "objectbigint world" | "objectboolean world" | "objectsymbol world" | "objectundefined world" | "objectobject world" | "objectfunction world" | "functionstring world" | "functionnumber world" | "functionbigint world" | "functionboolean world" | "functionsymbol world" | "functionundefined world" | "functionobject world" | "functionfunction world" +>`${typeof (t1 ** t2 ** t1) }${typeof (t1 ** t2 ** t1) } world` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number @@ -156,7 +156,7 @@ var s; >t1 : number `${t1 ** t2} hello world ${t1 ** t2} !!`; ->`${t1 ** t2} hello world ${t1 ** t2} !!` : `${number} hello world ${number} !!` +>`${t1 ** t2} hello world ${t1 ** t2} !!` : string >t1 ** t2 : number >t1 : number >t2 : number @@ -165,7 +165,7 @@ var s; >t2 : number `${t1 ** t2 ** t1} hello world ${t1 ** t2 ** t1} !!`; ->`${t1 ** t2 ** t1} hello world ${t1 ** t2 ** t1} !!` : `${number} hello world ${number} !!` +>`${t1 ** t2 ** t1} hello world ${t1 ** t2 ** t1} !!` : string >t1 ** t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -178,7 +178,7 @@ var s; >t1 : number `${t1 + t2 ** t1} hello world ${t1 + t2 ** t1} !!`; ->`${t1 + t2 ** t1} hello world ${t1 + t2 ** t1} !!` : `${number} hello world ${number} !!` +>`${t1 + t2 ** t1} hello world ${t1 + t2 ** t1} !!` : string >t1 + t2 ** t1 : number >t1 : number >t2 ** t1 : number @@ -191,7 +191,7 @@ var s; >t1 : number `${t1 ** t2 + t1} hello world ${t1 ** t2 + t1} !!`; ->`${t1 ** t2 + t1} hello world ${t1 ** t2 + t1} !!` : `${number} hello world ${number} !!` +>`${t1 ** t2 + t1} hello world ${t1 ** t2 + t1} !!` : string >t1 ** t2 + t1 : number >t1 ** t2 : number >t1 : number @@ -204,7 +204,7 @@ var s; >t1 : number `${t1 + t2 ** t2 + t1} hello world ${t1 + t2 ** t2 + t1} !!`; ->`${t1 + t2 ** t2 + t1} hello world ${t1 + t2 ** t2 + t1} !!` : `${number} hello world ${number} !!` +>`${t1 + t2 ** t2 + t1} hello world ${t1 + t2 ** t2 + t1} !!` : string >t1 + t2 ** t2 + t1 : number >t1 + t2 ** t2 : number >t1 : number @@ -221,7 +221,7 @@ var s; >t1 : number `${typeof (t1 ** t2 ** t1) } hello world ${typeof (t1 ** t2 ** t1)} !!`; ->`${typeof (t1 ** t2 ** t1) } hello world ${typeof (t1 ** t2 ** t1)} !!` : "string hello world string !!" | "string hello world number !!" | "string hello world bigint !!" | "string hello world boolean !!" | "string hello world symbol !!" | "string hello world undefined !!" | "string hello world object !!" | "string hello world function !!" | "number hello world string !!" | "number hello world number !!" | "number hello world bigint !!" | "number hello world boolean !!" | "number hello world symbol !!" | "number hello world undefined !!" | "number hello world object !!" | "number hello world function !!" | "bigint hello world string !!" | "bigint hello world number !!" | "bigint hello world bigint !!" | "bigint hello world boolean !!" | "bigint hello world symbol !!" | "bigint hello world undefined !!" | "bigint hello world object !!" | "bigint hello world function !!" | "boolean hello world string !!" | "boolean hello world number !!" | "boolean hello world bigint !!" | "boolean hello world boolean !!" | "boolean hello world symbol !!" | "boolean hello world undefined !!" | "boolean hello world object !!" | "boolean hello world function !!" | "symbol hello world string !!" | "symbol hello world number !!" | "symbol hello world bigint !!" | "symbol hello world boolean !!" | "symbol hello world symbol !!" | "symbol hello world undefined !!" | "symbol hello world object !!" | "symbol hello world function !!" | "undefined hello world string !!" | "undefined hello world number !!" | "undefined hello world bigint !!" | "undefined hello world boolean !!" | "undefined hello world symbol !!" | "undefined hello world undefined !!" | "undefined hello world object !!" | "undefined hello world function !!" | "object hello world string !!" | "object hello world number !!" | "object hello world bigint !!" | "object hello world boolean !!" | "object hello world symbol !!" | "object hello world undefined !!" | "object hello world object !!" | "object hello world function !!" | "function hello world string !!" | "function hello world number !!" | "function hello world bigint !!" | "function hello world boolean !!" | "function hello world symbol !!" | "function hello world undefined !!" | "function hello world object !!" | "function hello world function !!" +>`${typeof (t1 ** t2 ** t1) } hello world ${typeof (t1 ** t2 ** t1)} !!` : string >typeof (t1 ** t2 ** t1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >(t1 ** t2 ** t1) : number >t1 ** t2 ** t1 : number diff --git a/tests/baselines/reference/ensureNoCrashExportAssignmentDefineProperrtyPotentialMerge.symbols b/tests/baselines/reference/ensureNoCrashExportAssignmentDefineProperrtyPotentialMerge.symbols index 41ba9b444c78d..4b0737b3fc041 100644 --- a/tests/baselines/reference/ensureNoCrashExportAssignmentDefineProperrtyPotentialMerge.symbols +++ b/tests/baselines/reference/ensureNoCrashExportAssignmentDefineProperrtyPotentialMerge.symbols @@ -5,7 +5,7 @@ const _item = require("./namespacer"); >"./namespacer" : Symbol("tests/cases/compiler/namespacer", Decl(namespacer.js, 0, 0)) module.exports = 12; ->module.exports : Symbol("tests/cases/compiler/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 0, 38)) >exports : Symbol(export=, Decl(index.js, 0, 38)) @@ -28,7 +28,7 @@ A.bar = class Q {} >Q : Symbol(Q, Decl(namespacey.js, 1, 7)) module.exports = A; ->module.exports : Symbol("tests/cases/compiler/namespacey", Decl(namespacey.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(namespacey.js, 0, 0)) >module : Symbol(export=, Decl(namespacey.js, 1, 18)) >exports : Symbol(export=, Decl(namespacey.js, 1, 18)) >A : Symbol(A, Decl(namespacey.js, 0, 5), Decl(namespacey.js, 0, 12)) @@ -54,7 +54,7 @@ Object.defineProperty(B, "NS", { value: "why though", writable: true }); >writable : Symbol(writable, Decl(namespacer.js, 2, 53)) module.exports = B; ->module.exports : Symbol("tests/cases/compiler/namespacer", Decl(namespacer.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(namespacer.js, 0, 0)) >module : Symbol(export=, Decl(namespacer.js, 2, 72)) >exports : Symbol(export=, Decl(namespacer.js, 2, 72)) >B : Symbol(B, Decl(namespacer.js, 0, 5), Decl(namespacer.js, 0, 12), Decl(namespacer.js, 2, 22)) diff --git a/tests/baselines/reference/ensureNoCrashExportAssignmentDefineProperrtyPotentialMerge.types b/tests/baselines/reference/ensureNoCrashExportAssignmentDefineProperrtyPotentialMerge.types index f9bd4704f288c..eb25a6fbbef45 100644 --- a/tests/baselines/reference/ensureNoCrashExportAssignmentDefineProperrtyPotentialMerge.types +++ b/tests/baselines/reference/ensureNoCrashExportAssignmentDefineProperrtyPotentialMerge.types @@ -39,7 +39,7 @@ A.bar = class Q {} module.exports = A; >module.exports = A : typeof A >module.exports : typeof A ->module : { "\"tests/cases/compiler/namespacey\"": typeof A; } +>module : { exports: typeof A; } >exports : typeof A >A : typeof A @@ -73,7 +73,7 @@ Object.defineProperty(B, "NS", { value: "why though", writable: true }); module.exports = B; >module.exports = B : typeof B >module.exports : typeof B ->module : { "\"tests/cases/compiler/namespacer\"": typeof B; } +>module : { exports: typeof B; } >exports : typeof B >B : typeof B diff --git a/tests/baselines/reference/enumConstantMemberWithTemplateLiterals.types b/tests/baselines/reference/enumConstantMemberWithTemplateLiterals.types index 256c73fd03363..b750b8e8ab444 100644 --- a/tests/baselines/reference/enumConstantMemberWithTemplateLiterals.types +++ b/tests/baselines/reference/enumConstantMemberWithTemplateLiterals.types @@ -106,7 +106,7 @@ enum T5 { g = `1${"2"}3`, >g : T5.e ->`1${"2"}3` : "123" +>`1${"2"}3` : string >"2" : "2" h = `1`.length diff --git a/tests/baselines/reference/enumTagOnExports.symbols b/tests/baselines/reference/enumTagOnExports.symbols index 89257c00d49e0..e829b009cc322 100644 --- a/tests/baselines/reference/enumTagOnExports.symbols +++ b/tests/baselines/reference/enumTagOnExports.symbols @@ -10,6 +10,6 @@ module.exports.b = {}; >module.exports.b : Symbol(b, Decl(enumTagOnExports.js, 1, 15), Decl(enumTagOnExports.js, 4, 15), Decl(enumTagOnExports.js, 3, 4)) >module.exports : Symbol(b, Decl(enumTagOnExports.js, 1, 15), Decl(enumTagOnExports.js, 4, 15), Decl(enumTagOnExports.js, 3, 4)) >module : Symbol(module, Decl(enumTagOnExports.js, 1, 15)) ->exports : Symbol("tests/cases/conformance/jsdoc/enumTagOnExports", Decl(enumTagOnExports.js, 0, 0)) +>exports : Symbol(module.exports, Decl(enumTagOnExports.js, 0, 0)) >b : Symbol(b, Decl(enumTagOnExports.js, 1, 15), Decl(enumTagOnExports.js, 4, 15), Decl(enumTagOnExports.js, 3, 4)) diff --git a/tests/baselines/reference/enumTagOnExports.types b/tests/baselines/reference/enumTagOnExports.types index ff4333e69e6ba..7cfcb257c9733 100644 --- a/tests/baselines/reference/enumTagOnExports.types +++ b/tests/baselines/reference/enumTagOnExports.types @@ -11,9 +11,9 @@ exports.a = {}; module.exports.b = {}; >module.exports.b = {} : {} >module.exports.b : typeof b ->module.exports : typeof import("tests/cases/conformance/jsdoc/enumTagOnExports") ->module : { "\"tests/cases/conformance/jsdoc/enumTagOnExports\"": typeof import("tests/cases/conformance/jsdoc/enumTagOnExports"); } ->exports : typeof import("tests/cases/conformance/jsdoc/enumTagOnExports") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >b : typeof b >{} : {} diff --git a/tests/baselines/reference/enumTagOnExports2.symbols b/tests/baselines/reference/enumTagOnExports2.symbols index 9bca24fe024a0..4aae59168730b 100644 --- a/tests/baselines/reference/enumTagOnExports2.symbols +++ b/tests/baselines/reference/enumTagOnExports2.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/jsdoc/enumTagOnExports.js === /** @enum {string} */ module.exports = {}; ->module.exports : Symbol("tests/cases/conformance/jsdoc/enumTagOnExports", Decl(enumTagOnExports.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(enumTagOnExports.js, 0, 0)) >module : Symbol(module, Decl(enumTagOnExports.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/enumTagOnExports", Decl(enumTagOnExports.js, 0, 0)) +>exports : Symbol(module.exports, Decl(enumTagOnExports.js, 0, 0)) diff --git a/tests/baselines/reference/enumTagOnExports2.types b/tests/baselines/reference/enumTagOnExports2.types index 4694f1f14b2fe..5e638473be81d 100644 --- a/tests/baselines/reference/enumTagOnExports2.types +++ b/tests/baselines/reference/enumTagOnExports2.types @@ -1,9 +1,9 @@ === tests/cases/conformance/jsdoc/enumTagOnExports.js === /** @enum {string} */ module.exports = {}; ->module.exports = {} : typeof import("tests/cases/conformance/jsdoc/enumTagOnExports") ->module.exports : typeof import("tests/cases/conformance/jsdoc/enumTagOnExports") ->module : { "\"tests/cases/conformance/jsdoc/enumTagOnExports\"": typeof import("tests/cases/conformance/jsdoc/enumTagOnExports"); } ->exports : typeof import("tests/cases/conformance/jsdoc/enumTagOnExports") +>module.exports = {} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{} : {} diff --git a/tests/baselines/reference/es6ExportClauseWithAssignmentInEs5.js b/tests/baselines/reference/es6ExportClauseWithAssignmentInEs5.js index c68f573a98e39..18433ac6885e4 100644 --- a/tests/baselines/reference/es6ExportClauseWithAssignmentInEs5.js +++ b/tests/baselines/reference/es6ExportClauseWithAssignmentInEs5.js @@ -32,6 +32,6 @@ exports.buzz = buzz; exports.buzz = buzz += 3; var bizz = 8; exports.bizz = bizz; -exports.bizz = bizz += 1; // compiles to exports.bizz = bizz += 1 -exports.bizz = bizz -= 1; // similarly -exports.bizz = ++bizz; // compiles to exports.bizz = ++bizz +(exports.bizz = bizz += 1); // compiles to exports.bizz = bizz += 1 +(exports.bizz = bizz -= 1); // similarly +(exports.bizz = ++bizz); // compiles to exports.bizz = ++bizz diff --git a/tests/baselines/reference/esModuleInteropImportTSLibHasImport.types b/tests/baselines/reference/esModuleInteropImportTSLibHasImport.types index ed97cc86cb738..5851ad03565bf 100644 --- a/tests/baselines/reference/esModuleInteropImportTSLibHasImport.types +++ b/tests/baselines/reference/esModuleInteropImportTSLibHasImport.types @@ -19,8 +19,8 @@ const sayHello = (name?: string) => void (`Hello, ${name}!`); >(name?: string) => void (`Hello, ${name}!`) : (name?: string) => any >name : string >void (`Hello, ${name}!`) : undefined ->(`Hello, ${name}!`) : `Hello, ${string}!` ->`Hello, ${name}!` : `Hello, ${string}!` +>(`Hello, ${name}!`) : string +>`Hello, ${name}!` : string >name : string export default sayHello; diff --git a/tests/baselines/reference/excessivelyLargeTupleSpread.errors.txt b/tests/baselines/reference/excessivelyLargeTupleSpread.errors.txt new file mode 100644 index 0000000000000..0b5e44369c7d6 --- /dev/null +++ b/tests/baselines/reference/excessivelyLargeTupleSpread.errors.txt @@ -0,0 +1,54 @@ +tests/cases/compiler/excessivelyLargeTupleSpread.ts(6,10): error TS2589: Type instantiation is excessively deep and possibly infinite. +tests/cases/compiler/excessivelyLargeTupleSpread.ts(6,10): error TS2799: Type produces a tuple type that is too large to represent. +tests/cases/compiler/excessivelyLargeTupleSpread.ts(22,12): error TS2799: Type produces a tuple type that is too large to represent. +tests/cases/compiler/excessivelyLargeTupleSpread.ts(38,13): error TS2800: Expression produces a tuple type that is too large to represent. + + +==== tests/cases/compiler/excessivelyLargeTupleSpread.ts (4 errors) ==== + // #41771 + + type BuildTuple = + T['length'] extends L ? T : BuildTuple; + + type A = BuildTuple<3> + ~~~~~~~~~~~~~ +!!! error TS2589: Type instantiation is excessively deep and possibly infinite. + ~~~~~~~~~~~~~ +!!! error TS2799: Type produces a tuple type that is too large to represent. + + type T0 = [any]; + type T1 = [...T0, ...T0]; + type T2 = [...T1, ...T1]; + type T3 = [...T2, ...T2]; + type T4 = [...T3, ...T3]; + type T5 = [...T4, ...T4]; + type T6 = [...T5, ...T5]; + type T7 = [...T6, ...T6]; + type T8 = [...T7, ...T7]; + type T9 = [...T8, ...T8]; + type T10 = [...T9, ...T9]; + type T11 = [...T10, ...T10]; + type T12 = [...T11, ...T11]; + type T13 = [...T12, ...T12]; + type T14 = [...T13, ...T13]; // 2^14 > 10,000 + ~~~~~~~~~~~~~~~~ +!!! error TS2799: Type produces a tuple type that is too large to represent. + + const a0 = [0] as const; + const a1 = [...a0, ...a0] as const; + const a2 = [...a1, ...a1] as const; + const a3 = [...a2, ...a2] as const; + const a4 = [...a3, ...a3] as const; + const a5 = [...a4, ...a4] as const; + const a6 = [...a5, ...a5] as const; + const a7 = [...a6, ...a6] as const; + const a8 = [...a7, ...a7] as const; + const a9 = [...a8, ...a8] as const; + const a10 = [...a9, ...a9] as const; + const a11 = [...a10, ...a10] as const; + const a12 = [...a11, ...a11] as const; + const a13 = [...a12, ...a12] as const; + const a14 = [...a13, ...a13] as const; // 2^14 > 10,000 + ~~~~~~~~~~~~~~~~ +!!! error TS2800: Expression produces a tuple type that is too large to represent. + \ No newline at end of file diff --git a/tests/baselines/reference/excessivelyLargeTupleSpread.js b/tests/baselines/reference/excessivelyLargeTupleSpread.js new file mode 100644 index 0000000000000..b3bf8604d048e --- /dev/null +++ b/tests/baselines/reference/excessivelyLargeTupleSpread.js @@ -0,0 +1,63 @@ +//// [excessivelyLargeTupleSpread.ts] +// #41771 + +type BuildTuple = + T['length'] extends L ? T : BuildTuple; + +type A = BuildTuple<3> + +type T0 = [any]; +type T1 = [...T0, ...T0]; +type T2 = [...T1, ...T1]; +type T3 = [...T2, ...T2]; +type T4 = [...T3, ...T3]; +type T5 = [...T4, ...T4]; +type T6 = [...T5, ...T5]; +type T7 = [...T6, ...T6]; +type T8 = [...T7, ...T7]; +type T9 = [...T8, ...T8]; +type T10 = [...T9, ...T9]; +type T11 = [...T10, ...T10]; +type T12 = [...T11, ...T11]; +type T13 = [...T12, ...T12]; +type T14 = [...T13, ...T13]; // 2^14 > 10,000 + +const a0 = [0] as const; +const a1 = [...a0, ...a0] as const; +const a2 = [...a1, ...a1] as const; +const a3 = [...a2, ...a2] as const; +const a4 = [...a3, ...a3] as const; +const a5 = [...a4, ...a4] as const; +const a6 = [...a5, ...a5] as const; +const a7 = [...a6, ...a6] as const; +const a8 = [...a7, ...a7] as const; +const a9 = [...a8, ...a8] as const; +const a10 = [...a9, ...a9] as const; +const a11 = [...a10, ...a10] as const; +const a12 = [...a11, ...a11] as const; +const a13 = [...a12, ...a12] as const; +const a14 = [...a13, ...a13] as const; // 2^14 > 10,000 + + +//// [excessivelyLargeTupleSpread.js] +// #41771 +var __spreadArray = (this && this.__spreadArray) || function (to, from) { + for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) + to[j] = from[i]; + return to; +}; +var a0 = [0]; +var a1 = __spreadArray(__spreadArray([], a0), a0); +var a2 = __spreadArray(__spreadArray([], a1), a1); +var a3 = __spreadArray(__spreadArray([], a2), a2); +var a4 = __spreadArray(__spreadArray([], a3), a3); +var a5 = __spreadArray(__spreadArray([], a4), a4); +var a6 = __spreadArray(__spreadArray([], a5), a5); +var a7 = __spreadArray(__spreadArray([], a6), a6); +var a8 = __spreadArray(__spreadArray([], a7), a7); +var a9 = __spreadArray(__spreadArray([], a8), a8); +var a10 = __spreadArray(__spreadArray([], a9), a9); +var a11 = __spreadArray(__spreadArray([], a10), a10); +var a12 = __spreadArray(__spreadArray([], a11), a11); +var a13 = __spreadArray(__spreadArray([], a12), a12); +var a14 = __spreadArray(__spreadArray([], a13), a13); // 2^14 > 10,000 diff --git a/tests/baselines/reference/excessivelyLargeTupleSpread.symbols b/tests/baselines/reference/excessivelyLargeTupleSpread.symbols new file mode 100644 index 0000000000000..1114dba0c24a4 --- /dev/null +++ b/tests/baselines/reference/excessivelyLargeTupleSpread.symbols @@ -0,0 +1,167 @@ +=== tests/cases/compiler/excessivelyLargeTupleSpread.ts === +// #41771 + +type BuildTuple = +>BuildTuple : Symbol(BuildTuple, Decl(excessivelyLargeTupleSpread.ts, 0, 0)) +>L : Symbol(L, Decl(excessivelyLargeTupleSpread.ts, 2, 16)) +>T : Symbol(T, Decl(excessivelyLargeTupleSpread.ts, 2, 33)) + + T['length'] extends L ? T : BuildTuple; +>T : Symbol(T, Decl(excessivelyLargeTupleSpread.ts, 2, 33)) +>L : Symbol(L, Decl(excessivelyLargeTupleSpread.ts, 2, 16)) +>T : Symbol(T, Decl(excessivelyLargeTupleSpread.ts, 2, 33)) +>BuildTuple : Symbol(BuildTuple, Decl(excessivelyLargeTupleSpread.ts, 0, 0)) +>L : Symbol(L, Decl(excessivelyLargeTupleSpread.ts, 2, 16)) +>T : Symbol(T, Decl(excessivelyLargeTupleSpread.ts, 2, 33)) +>T : Symbol(T, Decl(excessivelyLargeTupleSpread.ts, 2, 33)) + +type A = BuildTuple<3> +>A : Symbol(A, Decl(excessivelyLargeTupleSpread.ts, 3, 60)) +>BuildTuple : Symbol(BuildTuple, Decl(excessivelyLargeTupleSpread.ts, 0, 0)) + +type T0 = [any]; +>T0 : Symbol(T0, Decl(excessivelyLargeTupleSpread.ts, 5, 22)) + +type T1 = [...T0, ...T0]; +>T1 : Symbol(T1, Decl(excessivelyLargeTupleSpread.ts, 7, 16)) +>T0 : Symbol(T0, Decl(excessivelyLargeTupleSpread.ts, 5, 22)) +>T0 : Symbol(T0, Decl(excessivelyLargeTupleSpread.ts, 5, 22)) + +type T2 = [...T1, ...T1]; +>T2 : Symbol(T2, Decl(excessivelyLargeTupleSpread.ts, 8, 25)) +>T1 : Symbol(T1, Decl(excessivelyLargeTupleSpread.ts, 7, 16)) +>T1 : Symbol(T1, Decl(excessivelyLargeTupleSpread.ts, 7, 16)) + +type T3 = [...T2, ...T2]; +>T3 : Symbol(T3, Decl(excessivelyLargeTupleSpread.ts, 9, 25)) +>T2 : Symbol(T2, Decl(excessivelyLargeTupleSpread.ts, 8, 25)) +>T2 : Symbol(T2, Decl(excessivelyLargeTupleSpread.ts, 8, 25)) + +type T4 = [...T3, ...T3]; +>T4 : Symbol(T4, Decl(excessivelyLargeTupleSpread.ts, 10, 25)) +>T3 : Symbol(T3, Decl(excessivelyLargeTupleSpread.ts, 9, 25)) +>T3 : Symbol(T3, Decl(excessivelyLargeTupleSpread.ts, 9, 25)) + +type T5 = [...T4, ...T4]; +>T5 : Symbol(T5, Decl(excessivelyLargeTupleSpread.ts, 11, 25)) +>T4 : Symbol(T4, Decl(excessivelyLargeTupleSpread.ts, 10, 25)) +>T4 : Symbol(T4, Decl(excessivelyLargeTupleSpread.ts, 10, 25)) + +type T6 = [...T5, ...T5]; +>T6 : Symbol(T6, Decl(excessivelyLargeTupleSpread.ts, 12, 25)) +>T5 : Symbol(T5, Decl(excessivelyLargeTupleSpread.ts, 11, 25)) +>T5 : Symbol(T5, Decl(excessivelyLargeTupleSpread.ts, 11, 25)) + +type T7 = [...T6, ...T6]; +>T7 : Symbol(T7, Decl(excessivelyLargeTupleSpread.ts, 13, 25)) +>T6 : Symbol(T6, Decl(excessivelyLargeTupleSpread.ts, 12, 25)) +>T6 : Symbol(T6, Decl(excessivelyLargeTupleSpread.ts, 12, 25)) + +type T8 = [...T7, ...T7]; +>T8 : Symbol(T8, Decl(excessivelyLargeTupleSpread.ts, 14, 25)) +>T7 : Symbol(T7, Decl(excessivelyLargeTupleSpread.ts, 13, 25)) +>T7 : Symbol(T7, Decl(excessivelyLargeTupleSpread.ts, 13, 25)) + +type T9 = [...T8, ...T8]; +>T9 : Symbol(T9, Decl(excessivelyLargeTupleSpread.ts, 15, 25)) +>T8 : Symbol(T8, Decl(excessivelyLargeTupleSpread.ts, 14, 25)) +>T8 : Symbol(T8, Decl(excessivelyLargeTupleSpread.ts, 14, 25)) + +type T10 = [...T9, ...T9]; +>T10 : Symbol(T10, Decl(excessivelyLargeTupleSpread.ts, 16, 25)) +>T9 : Symbol(T9, Decl(excessivelyLargeTupleSpread.ts, 15, 25)) +>T9 : Symbol(T9, Decl(excessivelyLargeTupleSpread.ts, 15, 25)) + +type T11 = [...T10, ...T10]; +>T11 : Symbol(T11, Decl(excessivelyLargeTupleSpread.ts, 17, 26)) +>T10 : Symbol(T10, Decl(excessivelyLargeTupleSpread.ts, 16, 25)) +>T10 : Symbol(T10, Decl(excessivelyLargeTupleSpread.ts, 16, 25)) + +type T12 = [...T11, ...T11]; +>T12 : Symbol(T12, Decl(excessivelyLargeTupleSpread.ts, 18, 28)) +>T11 : Symbol(T11, Decl(excessivelyLargeTupleSpread.ts, 17, 26)) +>T11 : Symbol(T11, Decl(excessivelyLargeTupleSpread.ts, 17, 26)) + +type T13 = [...T12, ...T12]; +>T13 : Symbol(T13, Decl(excessivelyLargeTupleSpread.ts, 19, 28)) +>T12 : Symbol(T12, Decl(excessivelyLargeTupleSpread.ts, 18, 28)) +>T12 : Symbol(T12, Decl(excessivelyLargeTupleSpread.ts, 18, 28)) + +type T14 = [...T13, ...T13]; // 2^14 > 10,000 +>T14 : Symbol(T14, Decl(excessivelyLargeTupleSpread.ts, 20, 28)) +>T13 : Symbol(T13, Decl(excessivelyLargeTupleSpread.ts, 19, 28)) +>T13 : Symbol(T13, Decl(excessivelyLargeTupleSpread.ts, 19, 28)) + +const a0 = [0] as const; +>a0 : Symbol(a0, Decl(excessivelyLargeTupleSpread.ts, 23, 5)) + +const a1 = [...a0, ...a0] as const; +>a1 : Symbol(a1, Decl(excessivelyLargeTupleSpread.ts, 24, 5)) +>a0 : Symbol(a0, Decl(excessivelyLargeTupleSpread.ts, 23, 5)) +>a0 : Symbol(a0, Decl(excessivelyLargeTupleSpread.ts, 23, 5)) + +const a2 = [...a1, ...a1] as const; +>a2 : Symbol(a2, Decl(excessivelyLargeTupleSpread.ts, 25, 5)) +>a1 : Symbol(a1, Decl(excessivelyLargeTupleSpread.ts, 24, 5)) +>a1 : Symbol(a1, Decl(excessivelyLargeTupleSpread.ts, 24, 5)) + +const a3 = [...a2, ...a2] as const; +>a3 : Symbol(a3, Decl(excessivelyLargeTupleSpread.ts, 26, 5)) +>a2 : Symbol(a2, Decl(excessivelyLargeTupleSpread.ts, 25, 5)) +>a2 : Symbol(a2, Decl(excessivelyLargeTupleSpread.ts, 25, 5)) + +const a4 = [...a3, ...a3] as const; +>a4 : Symbol(a4, Decl(excessivelyLargeTupleSpread.ts, 27, 5)) +>a3 : Symbol(a3, Decl(excessivelyLargeTupleSpread.ts, 26, 5)) +>a3 : Symbol(a3, Decl(excessivelyLargeTupleSpread.ts, 26, 5)) + +const a5 = [...a4, ...a4] as const; +>a5 : Symbol(a5, Decl(excessivelyLargeTupleSpread.ts, 28, 5)) +>a4 : Symbol(a4, Decl(excessivelyLargeTupleSpread.ts, 27, 5)) +>a4 : Symbol(a4, Decl(excessivelyLargeTupleSpread.ts, 27, 5)) + +const a6 = [...a5, ...a5] as const; +>a6 : Symbol(a6, Decl(excessivelyLargeTupleSpread.ts, 29, 5)) +>a5 : Symbol(a5, Decl(excessivelyLargeTupleSpread.ts, 28, 5)) +>a5 : Symbol(a5, Decl(excessivelyLargeTupleSpread.ts, 28, 5)) + +const a7 = [...a6, ...a6] as const; +>a7 : Symbol(a7, Decl(excessivelyLargeTupleSpread.ts, 30, 5)) +>a6 : Symbol(a6, Decl(excessivelyLargeTupleSpread.ts, 29, 5)) +>a6 : Symbol(a6, Decl(excessivelyLargeTupleSpread.ts, 29, 5)) + +const a8 = [...a7, ...a7] as const; +>a8 : Symbol(a8, Decl(excessivelyLargeTupleSpread.ts, 31, 5)) +>a7 : Symbol(a7, Decl(excessivelyLargeTupleSpread.ts, 30, 5)) +>a7 : Symbol(a7, Decl(excessivelyLargeTupleSpread.ts, 30, 5)) + +const a9 = [...a8, ...a8] as const; +>a9 : Symbol(a9, Decl(excessivelyLargeTupleSpread.ts, 32, 5)) +>a8 : Symbol(a8, Decl(excessivelyLargeTupleSpread.ts, 31, 5)) +>a8 : Symbol(a8, Decl(excessivelyLargeTupleSpread.ts, 31, 5)) + +const a10 = [...a9, ...a9] as const; +>a10 : Symbol(a10, Decl(excessivelyLargeTupleSpread.ts, 33, 5)) +>a9 : Symbol(a9, Decl(excessivelyLargeTupleSpread.ts, 32, 5)) +>a9 : Symbol(a9, Decl(excessivelyLargeTupleSpread.ts, 32, 5)) + +const a11 = [...a10, ...a10] as const; +>a11 : Symbol(a11, Decl(excessivelyLargeTupleSpread.ts, 34, 5)) +>a10 : Symbol(a10, Decl(excessivelyLargeTupleSpread.ts, 33, 5)) +>a10 : Symbol(a10, Decl(excessivelyLargeTupleSpread.ts, 33, 5)) + +const a12 = [...a11, ...a11] as const; +>a12 : Symbol(a12, Decl(excessivelyLargeTupleSpread.ts, 35, 5)) +>a11 : Symbol(a11, Decl(excessivelyLargeTupleSpread.ts, 34, 5)) +>a11 : Symbol(a11, Decl(excessivelyLargeTupleSpread.ts, 34, 5)) + +const a13 = [...a12, ...a12] as const; +>a13 : Symbol(a13, Decl(excessivelyLargeTupleSpread.ts, 36, 5)) +>a12 : Symbol(a12, Decl(excessivelyLargeTupleSpread.ts, 35, 5)) +>a12 : Symbol(a12, Decl(excessivelyLargeTupleSpread.ts, 35, 5)) + +const a14 = [...a13, ...a13] as const; // 2^14 > 10,000 +>a14 : Symbol(a14, Decl(excessivelyLargeTupleSpread.ts, 37, 5)) +>a13 : Symbol(a13, Decl(excessivelyLargeTupleSpread.ts, 36, 5)) +>a13 : Symbol(a13, Decl(excessivelyLargeTupleSpread.ts, 36, 5)) + diff --git a/tests/baselines/reference/excessivelyLargeTupleSpread.types b/tests/baselines/reference/excessivelyLargeTupleSpread.types new file mode 100644 index 0000000000000..5e1e63a8968f7 --- /dev/null +++ b/tests/baselines/reference/excessivelyLargeTupleSpread.types @@ -0,0 +1,188 @@ +=== tests/cases/compiler/excessivelyLargeTupleSpread.ts === +// #41771 + +type BuildTuple = +>BuildTuple : BuildTuple + + T['length'] extends L ? T : BuildTuple; + +type A = BuildTuple<3> +>A : any + +type T0 = [any]; +>T0 : T0 + +type T1 = [...T0, ...T0]; +>T1 : [any, any] + +type T2 = [...T1, ...T1]; +>T2 : [any, any, any, any] + +type T3 = [...T2, ...T2]; +>T3 : [any, any, any, any, any, any, any, any] + +type T4 = [...T3, ...T3]; +>T4 : [any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any] + +type T5 = [...T4, ...T4]; +>T5 : [any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any] + +type T6 = [...T5, ...T5]; +>T6 : [any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any] + +type T7 = [...T6, ...T6]; +>T7 : [any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any] + +type T8 = [...T7, ...T7]; +>T8 : [any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any] + +type T9 = [...T8, ...T8]; +>T9 : [any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any] + +type T10 = [...T9, ...T9]; +>T10 : [any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any] + +type T11 = [...T10, ...T10]; +>T11 : [any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any] + +type T12 = [...T11, ...T11]; +>T12 : [any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any] + +type T13 = [...T12, ...T12]; +>T13 : [any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any] + +type T14 = [...T13, ...T13]; // 2^14 > 10,000 +>T14 : any + +const a0 = [0] as const; +>a0 : readonly [0] +>[0] as const : readonly [0] +>[0] : readonly [0] +>0 : 0 + +const a1 = [...a0, ...a0] as const; +>a1 : readonly [0, 0] +>[...a0, ...a0] as const : readonly [0, 0] +>[...a0, ...a0] : readonly [0, 0] +>...a0 : 0 +>a0 : readonly [0] +>...a0 : 0 +>a0 : readonly [0] + +const a2 = [...a1, ...a1] as const; +>a2 : readonly [0, 0, 0, 0] +>[...a1, ...a1] as const : readonly [0, 0, 0, 0] +>[...a1, ...a1] : readonly [0, 0, 0, 0] +>...a1 : 0 +>a1 : readonly [0, 0] +>...a1 : 0 +>a1 : readonly [0, 0] + +const a3 = [...a2, ...a2] as const; +>a3 : readonly [0, 0, 0, 0, 0, 0, 0, 0] +>[...a2, ...a2] as const : readonly [0, 0, 0, 0, 0, 0, 0, 0] +>[...a2, ...a2] : readonly [0, 0, 0, 0, 0, 0, 0, 0] +>...a2 : 0 +>a2 : readonly [0, 0, 0, 0] +>...a2 : 0 +>a2 : readonly [0, 0, 0, 0] + +const a4 = [...a3, ...a3] as const; +>a4 : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>[...a3, ...a3] as const : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>[...a3, ...a3] : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>...a3 : 0 +>a3 : readonly [0, 0, 0, 0, 0, 0, 0, 0] +>...a3 : 0 +>a3 : readonly [0, 0, 0, 0, 0, 0, 0, 0] + +const a5 = [...a4, ...a4] as const; +>a5 : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>[...a4, ...a4] as const : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>[...a4, ...a4] : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>...a4 : 0 +>a4 : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>...a4 : 0 +>a4 : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + +const a6 = [...a5, ...a5] as const; +>a6 : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>[...a5, ...a5] as const : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>[...a5, ...a5] : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>...a5 : 0 +>a5 : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>...a5 : 0 +>a5 : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + +const a7 = [...a6, ...a6] as const; +>a7 : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>[...a6, ...a6] as const : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>[...a6, ...a6] : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>...a6 : 0 +>a6 : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>...a6 : 0 +>a6 : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + +const a8 = [...a7, ...a7] as const; +>a8 : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>[...a7, ...a7] as const : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>[...a7, ...a7] : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>...a7 : 0 +>a7 : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>...a7 : 0 +>a7 : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + +const a9 = [...a8, ...a8] as const; +>a9 : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>[...a8, ...a8] as const : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>[...a8, ...a8] : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>...a8 : 0 +>a8 : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>...a8 : 0 +>a8 : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + +const a10 = [...a9, ...a9] as const; +>a10 : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>[...a9, ...a9] as const : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>[...a9, ...a9] : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>...a9 : 0 +>a9 : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>...a9 : 0 +>a9 : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + +const a11 = [...a10, ...a10] as const; +>a11 : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>[...a10, ...a10] as const : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>[...a10, ...a10] : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>...a10 : 0 +>a10 : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>...a10 : 0 +>a10 : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + +const a12 = [...a11, ...a11] as const; +>a12 : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>[...a11, ...a11] as const : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>[...a11, ...a11] : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>...a11 : 0 +>a11 : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>...a11 : 0 +>a11 : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + +const a13 = [...a12, ...a12] as const; +>a13 : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>[...a12, ...a12] as const : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>[...a12, ...a12] : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>...a12 : 0 +>a12 : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>...a12 : 0 +>a12 : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + +const a14 = [...a13, ...a13] as const; // 2^14 > 10,000 +>a14 : any +>[...a13, ...a13] as const : any +>[...a13, ...a13] : any +>...a13 : 0 +>a13 : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] +>...a13 : 0 +>a13 : readonly [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + diff --git a/tests/baselines/reference/exhaustiveSwitchStatements1.errors.txt b/tests/baselines/reference/exhaustiveSwitchStatements1.errors.txt index e958397f81a50..a8e02b04aa8db 100644 --- a/tests/baselines/reference/exhaustiveSwitchStatements1.errors.txt +++ b/tests/baselines/reference/exhaustiveSwitchStatements1.errors.txt @@ -1,5 +1,5 @@ tests/cases/conformance/controlFlow/exhaustiveSwitchStatements1.ts(7,9): error TS7027: Unreachable code detected. -tests/cases/conformance/controlFlow/exhaustiveSwitchStatements1.ts(235,5): error TS2367: This condition will always return 'false' since the types '"a" | "b"' and '"c"' have no overlap. +tests/cases/conformance/controlFlow/exhaustiveSwitchStatements1.ts(235,5): error TS2367: This condition will always return 'false' since the types 'keyof O' and '"c"' have no overlap. ==== tests/cases/conformance/controlFlow/exhaustiveSwitchStatements1.ts (2 errors) ==== @@ -241,7 +241,7 @@ tests/cases/conformance/controlFlow/exhaustiveSwitchStatements1.ts(235,5): error } k === 'c'; // Error ~~~~~~~~~ -!!! error TS2367: This condition will always return 'false' since the types '"a" | "b"' and '"c"' have no overlap. +!!! error TS2367: This condition will always return 'false' since the types 'keyof O' and '"c"' have no overlap. return o[k]; } \ No newline at end of file diff --git a/tests/baselines/reference/exhaustiveSwitchStatements1.types b/tests/baselines/reference/exhaustiveSwitchStatements1.types index 79e4483212c6b..043bb099f0161 100644 --- a/tests/baselines/reference/exhaustiveSwitchStatements1.types +++ b/tests/baselines/reference/exhaustiveSwitchStatements1.types @@ -695,12 +695,12 @@ function ff(o: O, k: K) { } k === 'c'; // Error >k === 'c' : boolean ->k : "a" | "b" +>k : keyof O >'c' : "c" return o[k]; >o[k] : number >o : O ->k : "a" | "b" +>k : keyof O } diff --git a/tests/baselines/reference/expandoFunctionContextualTypesJs.symbols b/tests/baselines/reference/expandoFunctionContextualTypesJs.symbols index bf0ef14f438b2..5d5696d84bd9b 100644 --- a/tests/baselines/reference/expandoFunctionContextualTypesJs.symbols +++ b/tests/baselines/reference/expandoFunctionContextualTypesJs.symbols @@ -72,7 +72,7 @@ function foo() { * @type {MyComponentProps} */ module.exports = { ->module.exports : Symbol("tests/cases/compiler/input", Decl(input.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(input.js, 0, 0)) >module : Symbol(export=, Decl(input.js, 42, 1)) >exports : Symbol(export=, Decl(input.js, 42, 1)) @@ -83,7 +83,7 @@ module.exports = { expectLiteral({ props: module.exports }); >expectLiteral : Symbol(expectLiteral, Decl(input.js, 27, 27)) >props : Symbol(props, Decl(input.js, 51, 15)) ->module.exports : Symbol("tests/cases/compiler/input", Decl(input.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(input.js, 0, 0)) >module : Symbol(module, Decl(input.js, 42, 1), Decl(input.js, 51, 22)) ->exports : Symbol("tests/cases/compiler/input", Decl(input.js, 0, 0)) +>exports : Symbol(module.exports, Decl(input.js, 0, 0)) diff --git a/tests/baselines/reference/expandoFunctionContextualTypesJs.types b/tests/baselines/reference/expandoFunctionContextualTypesJs.types index 9ef980d47bf07..c2a32db4249b7 100644 --- a/tests/baselines/reference/expandoFunctionContextualTypesJs.types +++ b/tests/baselines/reference/expandoFunctionContextualTypesJs.types @@ -89,7 +89,7 @@ function foo() { module.exports = { >module.exports = { color: "red"} : MyComponentProps >module.exports : MyComponentProps ->module : { "\"tests/cases/compiler/input\"": MyComponentProps; } +>module : { exports: MyComponentProps; } >exports : MyComponentProps >{ color: "red"} : { color: "red"; } @@ -104,6 +104,6 @@ expectLiteral({ props: module.exports }); >{ props: module.exports } : { props: MyComponentProps; } >props : MyComponentProps >module.exports : MyComponentProps ->module : { "\"tests/cases/compiler/input\"": MyComponentProps; } +>module : { exports: MyComponentProps; } >exports : MyComponentProps diff --git a/tests/baselines/reference/exponentiationOperatorInTemplateStringWithSyntaxError1.types b/tests/baselines/reference/exponentiationOperatorInTemplateStringWithSyntaxError1.types index 9a7fc68838710..8c7e7d27aa847 100644 --- a/tests/baselines/reference/exponentiationOperatorInTemplateStringWithSyntaxError1.types +++ b/tests/baselines/reference/exponentiationOperatorInTemplateStringWithSyntaxError1.types @@ -13,7 +13,7 @@ var s; // Error: early syntax error using ES7 SimpleUnaryExpression on left-hand side without () // TempateHead & TemplateTail are empty `${1 + typeof t1 ** t2 ** t1}`; ->`${1 + typeof t1 ** t2 ** t1}` : `${number}` +>`${1 + typeof t1 ** t2 ** t1}` : string >1 + typeof t1 ** t2 ** t1 : number >1 : 1 >typeof t1 ** t2 ** t1 : number @@ -24,7 +24,7 @@ var s; >t1 : number `${-t1 ** t2 - t1}`; ->`${-t1 ** t2 - t1}` : `${number}` +>`${-t1 ** t2 - t1}` : string >-t1 ** t2 - t1 : number >-t1 ** t2 : number >-t1 : number @@ -33,7 +33,7 @@ var s; >t1 : number `${-++t1 ** t2 - t1}`; ->`${-++t1 ** t2 - t1}` : `${number}` +>`${-++t1 ** t2 - t1}` : string >-++t1 ** t2 - t1 : number >-++t1 ** t2 : number >-++t1 : number @@ -43,7 +43,7 @@ var s; >t1 : number `${-t1++ ** t2 - t1}`; ->`${-t1++ ** t2 - t1}` : `${number}` +>`${-t1++ ** t2 - t1}` : string >-t1++ ** t2 - t1 : number >-t1++ ** t2 : number >-t1++ : number @@ -53,7 +53,7 @@ var s; >t1 : number `${!t1 ** t2 ** --t1 }`; ->`${!t1 ** t2 ** --t1 }` : `${number}` +>`${!t1 ** t2 ** --t1 }` : string >!t1 ** t2 ** --t1 : number >!t1 : boolean >t1 : number @@ -63,7 +63,7 @@ var s; >t1 : number `${typeof t1 ** t2 ** t1}`; ->`${typeof t1 ** t2 ** t1}` : `${number}` +>`${typeof t1 ** t2 ** t1}` : string >typeof t1 ** t2 ** t1 : number >typeof t1 : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >t1 : number @@ -72,7 +72,7 @@ var s; >t1 : number `${-t1 ** t2 - t1}${-t1 ** t2 - t1}`; ->`${-t1 ** t2 - t1}${-t1 ** t2 - t1}` : `${number}${number}` +>`${-t1 ** t2 - t1}${-t1 ** t2 - t1}` : string >-t1 ** t2 - t1 : number >-t1 ** t2 : number >-t1 : number @@ -87,7 +87,7 @@ var s; >t1 : number `${-++t1 ** t2 - t1}${-++t1 ** t2 - t1}`; ->`${-++t1 ** t2 - t1}${-++t1 ** t2 - t1}` : `${number}${number}` +>`${-++t1 ** t2 - t1}${-++t1 ** t2 - t1}` : string >-++t1 ** t2 - t1 : number >-++t1 ** t2 : number >-++t1 : number @@ -104,7 +104,7 @@ var s; >t1 : number `${-t1++ ** t2 - t1}${-t1++ ** t2 - t1}`; ->`${-t1++ ** t2 - t1}${-t1++ ** t2 - t1}` : `${number}${number}` +>`${-t1++ ** t2 - t1}${-t1++ ** t2 - t1}` : string >-t1++ ** t2 - t1 : number >-t1++ ** t2 : number >-t1++ : number @@ -121,7 +121,7 @@ var s; >t1 : number `${!t1 ** t2 ** --t1 }${!t1 ** t2 ** --t1 }`; ->`${!t1 ** t2 ** --t1 }${!t1 ** t2 ** --t1 }` : `${number}${number}` +>`${!t1 ** t2 ** --t1 }${!t1 ** t2 ** --t1 }` : string >!t1 ** t2 ** --t1 : number >!t1 : boolean >t1 : number @@ -138,7 +138,7 @@ var s; >t1 : number `${typeof t1 ** t2 ** t1}${typeof t1 ** t2 ** t1}`; ->`${typeof t1 ** t2 ** t1}${typeof t1 ** t2 ** t1}` : `${number}${number}` +>`${typeof t1 ** t2 ** t1}${typeof t1 ** t2 ** t1}` : string >typeof t1 ** t2 ** t1 : number >typeof t1 : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >t1 : number @@ -153,7 +153,7 @@ var s; >t1 : number `${1 + typeof t1 ** t2 ** t1}${1 + typeof t1 ** t2 ** t1}`; ->`${1 + typeof t1 ** t2 ** t1}${1 + typeof t1 ** t2 ** t1}` : `${number}${number}` +>`${1 + typeof t1 ** t2 ** t1}${1 + typeof t1 ** t2 ** t1}` : string >1 + typeof t1 ** t2 ** t1 : number >1 : 1 >typeof t1 ** t2 ** t1 : number @@ -172,7 +172,7 @@ var s; >t1 : number `${-t1 ** t2 - t1} hello world ${-t1 ** t2 - t1}`; ->`${-t1 ** t2 - t1} hello world ${-t1 ** t2 - t1}` : `${number} hello world ${number}` +>`${-t1 ** t2 - t1} hello world ${-t1 ** t2 - t1}` : string >-t1 ** t2 - t1 : number >-t1 ** t2 : number >-t1 : number @@ -187,7 +187,7 @@ var s; >t1 : number `${-++t1 ** t2 - t1} hello world ${-++t1 ** t2 - t1}`; ->`${-++t1 ** t2 - t1} hello world ${-++t1 ** t2 - t1}` : `${number} hello world ${number}` +>`${-++t1 ** t2 - t1} hello world ${-++t1 ** t2 - t1}` : string >-++t1 ** t2 - t1 : number >-++t1 ** t2 : number >-++t1 : number @@ -204,7 +204,7 @@ var s; >t1 : number `${-t1++ ** t2 - t1} hello world ${-t1++ ** t2 - t1}`; ->`${-t1++ ** t2 - t1} hello world ${-t1++ ** t2 - t1}` : `${number} hello world ${number}` +>`${-t1++ ** t2 - t1} hello world ${-t1++ ** t2 - t1}` : string >-t1++ ** t2 - t1 : number >-t1++ ** t2 : number >-t1++ : number @@ -221,7 +221,7 @@ var s; >t1 : number `${!t1 ** t2 ** --t1 } hello world ${!t1 ** t2 ** --t1 }`; ->`${!t1 ** t2 ** --t1 } hello world ${!t1 ** t2 ** --t1 }` : `${number} hello world ${number}` +>`${!t1 ** t2 ** --t1 } hello world ${!t1 ** t2 ** --t1 }` : string >!t1 ** t2 ** --t1 : number >!t1 : boolean >t1 : number @@ -238,7 +238,7 @@ var s; >t1 : number `${typeof t1 ** t2 ** t1} hello world ${typeof t1 ** t2 ** t1}`; ->`${typeof t1 ** t2 ** t1} hello world ${typeof t1 ** t2 ** t1}` : `${number} hello world ${number}` +>`${typeof t1 ** t2 ** t1} hello world ${typeof t1 ** t2 ** t1}` : string >typeof t1 ** t2 ** t1 : number >typeof t1 : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >t1 : number @@ -253,7 +253,7 @@ var s; >t1 : number `${1 + typeof t1 ** t2 ** t1} hello world ${1 + typeof t1 ** t2 ** t1}`; ->`${1 + typeof t1 ** t2 ** t1} hello world ${1 + typeof t1 ** t2 ** t1}` : `${number} hello world ${number}` +>`${1 + typeof t1 ** t2 ** t1} hello world ${1 + typeof t1 ** t2 ** t1}` : string >1 + typeof t1 ** t2 ** t1 : number >1 : 1 >typeof t1 ** t2 ** t1 : number diff --git a/tests/baselines/reference/exponentiationOperatorInTemplateStringWithSyntaxError2.types b/tests/baselines/reference/exponentiationOperatorInTemplateStringWithSyntaxError2.types index e1b1e9942a1c9..9cacc633c6243 100644 --- a/tests/baselines/reference/exponentiationOperatorInTemplateStringWithSyntaxError2.types +++ b/tests/baselines/reference/exponentiationOperatorInTemplateStringWithSyntaxError2.types @@ -13,7 +13,7 @@ var s; // Error: early syntax error using ES7 SimpleUnaryExpression on left-hand side without () // With templateHead `hello ${-t1 ** t2 - t1}`; ->`hello ${-t1 ** t2 - t1}` : `hello ${number}` +>`hello ${-t1 ** t2 - t1}` : string >-t1 ** t2 - t1 : number >-t1 ** t2 : number >-t1 : number @@ -22,7 +22,7 @@ var s; >t1 : number `hello ${-++t1 ** t2 - t1}`; ->`hello ${-++t1 ** t2 - t1}` : `hello ${number}` +>`hello ${-++t1 ** t2 - t1}` : string >-++t1 ** t2 - t1 : number >-++t1 ** t2 : number >-++t1 : number @@ -32,7 +32,7 @@ var s; >t1 : number `hello ${-t1++ ** t2 - t1}`; ->`hello ${-t1++ ** t2 - t1}` : `hello ${number}` +>`hello ${-t1++ ** t2 - t1}` : string >-t1++ ** t2 - t1 : number >-t1++ ** t2 : number >-t1++ : number @@ -42,7 +42,7 @@ var s; >t1 : number `hello ${!t1 ** t2 ** --t1 }`; ->`hello ${!t1 ** t2 ** --t1 }` : `hello ${number}` +>`hello ${!t1 ** t2 ** --t1 }` : string >!t1 ** t2 ** --t1 : number >!t1 : boolean >t1 : number @@ -52,7 +52,7 @@ var s; >t1 : number `hello ${typeof t1 ** t2 ** t1}`; ->`hello ${typeof t1 ** t2 ** t1}` : `hello ${number}` +>`hello ${typeof t1 ** t2 ** t1}` : string >typeof t1 ** t2 ** t1 : number >typeof t1 : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >t1 : number @@ -61,7 +61,7 @@ var s; >t1 : number `hello ${1 + typeof t1 ** t2 ** t1}`; ->`hello ${1 + typeof t1 ** t2 ** t1}` : `hello ${number}` +>`hello ${1 + typeof t1 ** t2 ** t1}` : string >1 + typeof t1 ** t2 ** t1 : number >1 : 1 >typeof t1 ** t2 ** t1 : number @@ -72,7 +72,7 @@ var s; >t1 : number `hello ${-t1 ** t2 - t1}${-t1 ** t2 - t1}`; ->`hello ${-t1 ** t2 - t1}${-t1 ** t2 - t1}` : `hello ${number}${number}` +>`hello ${-t1 ** t2 - t1}${-t1 ** t2 - t1}` : string >-t1 ** t2 - t1 : number >-t1 ** t2 : number >-t1 : number @@ -87,7 +87,7 @@ var s; >t1 : number `hello ${-++t1 ** t2 - t1}${-++t1 ** t2 - t1}`; ->`hello ${-++t1 ** t2 - t1}${-++t1 ** t2 - t1}` : `hello ${number}${number}` +>`hello ${-++t1 ** t2 - t1}${-++t1 ** t2 - t1}` : string >-++t1 ** t2 - t1 : number >-++t1 ** t2 : number >-++t1 : number @@ -104,7 +104,7 @@ var s; >t1 : number `hello ${-t1++ ** t2 - t1}${-t1++ ** t2 - t1}`; ->`hello ${-t1++ ** t2 - t1}${-t1++ ** t2 - t1}` : `hello ${number}${number}` +>`hello ${-t1++ ** t2 - t1}${-t1++ ** t2 - t1}` : string >-t1++ ** t2 - t1 : number >-t1++ ** t2 : number >-t1++ : number @@ -121,7 +121,7 @@ var s; >t1 : number `hello ${!t1 ** t2 ** --t1 }${!t1 ** t2 ** --t1 }`; ->`hello ${!t1 ** t2 ** --t1 }${!t1 ** t2 ** --t1 }` : `hello ${number}${number}` +>`hello ${!t1 ** t2 ** --t1 }${!t1 ** t2 ** --t1 }` : string >!t1 ** t2 ** --t1 : number >!t1 : boolean >t1 : number @@ -138,7 +138,7 @@ var s; >t1 : number `hello ${typeof t1 ** t2 ** t1}${typeof t1 ** t2 ** t1}`; ->`hello ${typeof t1 ** t2 ** t1}${typeof t1 ** t2 ** t1}` : `hello ${number}${number}` +>`hello ${typeof t1 ** t2 ** t1}${typeof t1 ** t2 ** t1}` : string >typeof t1 ** t2 ** t1 : number >typeof t1 : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >t1 : number @@ -153,7 +153,7 @@ var s; >t1 : number `hello ${1 + typeof t1 ** t2 ** t1}${1 + typeof t1 ** t2 ** t1}`; ->`hello ${1 + typeof t1 ** t2 ** t1}${1 + typeof t1 ** t2 ** t1}` : `hello ${number}${number}` +>`hello ${1 + typeof t1 ** t2 ** t1}${1 + typeof t1 ** t2 ** t1}` : string >1 + typeof t1 ** t2 ** t1 : number >1 : 1 >typeof t1 ** t2 ** t1 : number @@ -172,7 +172,7 @@ var s; >t1 : number `hello ${-t1 ** t2 - t1} hello world ${-t1 ** t2 - t1}`; ->`hello ${-t1 ** t2 - t1} hello world ${-t1 ** t2 - t1}` : `hello ${number} hello world ${number}` +>`hello ${-t1 ** t2 - t1} hello world ${-t1 ** t2 - t1}` : string >-t1 ** t2 - t1 : number >-t1 ** t2 : number >-t1 : number @@ -187,7 +187,7 @@ var s; >t1 : number `hello ${-++t1 ** t2 - t1} hello world ${-++t1 ** t2 - t1}`; ->`hello ${-++t1 ** t2 - t1} hello world ${-++t1 ** t2 - t1}` : `hello ${number} hello world ${number}` +>`hello ${-++t1 ** t2 - t1} hello world ${-++t1 ** t2 - t1}` : string >-++t1 ** t2 - t1 : number >-++t1 ** t2 : number >-++t1 : number @@ -204,7 +204,7 @@ var s; >t1 : number `hello ${-t1++ ** t2 - t1} hello world ${-t1++ ** t2 - t1}`; ->`hello ${-t1++ ** t2 - t1} hello world ${-t1++ ** t2 - t1}` : `hello ${number} hello world ${number}` +>`hello ${-t1++ ** t2 - t1} hello world ${-t1++ ** t2 - t1}` : string >-t1++ ** t2 - t1 : number >-t1++ ** t2 : number >-t1++ : number @@ -221,7 +221,7 @@ var s; >t1 : number `hello ${!t1 ** t2 ** --t1 } hello world ${!t1 ** t2 ** --t1 }`; ->`hello ${!t1 ** t2 ** --t1 } hello world ${!t1 ** t2 ** --t1 }` : `hello ${number} hello world ${number}` +>`hello ${!t1 ** t2 ** --t1 } hello world ${!t1 ** t2 ** --t1 }` : string >!t1 ** t2 ** --t1 : number >!t1 : boolean >t1 : number @@ -238,7 +238,7 @@ var s; >t1 : number `hello ${typeof t1 ** t2 ** t1} hello world ${typeof t1 ** t2 ** t1}`; ->`hello ${typeof t1 ** t2 ** t1} hello world ${typeof t1 ** t2 ** t1}` : `hello ${number} hello world ${number}` +>`hello ${typeof t1 ** t2 ** t1} hello world ${typeof t1 ** t2 ** t1}` : string >typeof t1 ** t2 ** t1 : number >typeof t1 : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >t1 : number @@ -253,7 +253,7 @@ var s; >t1 : number `hello ${1 + typeof t1 ** t2 ** t1} hello world ${1 + typeof t1 ** t2 ** t1}`; ->`hello ${1 + typeof t1 ** t2 ** t1} hello world ${1 + typeof t1 ** t2 ** t1}` : `hello ${number} hello world ${number}` +>`hello ${1 + typeof t1 ** t2 ** t1} hello world ${1 + typeof t1 ** t2 ** t1}` : string >1 + typeof t1 ** t2 ** t1 : number >1 : 1 >typeof t1 ** t2 ** t1 : number diff --git a/tests/baselines/reference/exponentiationOperatorInTemplateStringWithSyntaxError3.types b/tests/baselines/reference/exponentiationOperatorInTemplateStringWithSyntaxError3.types index 527eaad4eaedc..36d594f3821d2 100644 --- a/tests/baselines/reference/exponentiationOperatorInTemplateStringWithSyntaxError3.types +++ b/tests/baselines/reference/exponentiationOperatorInTemplateStringWithSyntaxError3.types @@ -13,7 +13,7 @@ var s; // Error: early syntax error using ES7 SimpleUnaryExpression on left-hand side without () // With TemplateTail `${-t1 ** t2 - t1} world`; ->`${-t1 ** t2 - t1} world` : `${number} world` +>`${-t1 ** t2 - t1} world` : string >-t1 ** t2 - t1 : number >-t1 ** t2 : number >-t1 : number @@ -22,7 +22,7 @@ var s; >t1 : number `${-++t1 ** t2 - t1} world`; ->`${-++t1 ** t2 - t1} world` : `${number} world` +>`${-++t1 ** t2 - t1} world` : string >-++t1 ** t2 - t1 : number >-++t1 ** t2 : number >-++t1 : number @@ -32,7 +32,7 @@ var s; >t1 : number `${-t1++ ** t2 - t1} world`; ->`${-t1++ ** t2 - t1} world` : `${number} world` +>`${-t1++ ** t2 - t1} world` : string >-t1++ ** t2 - t1 : number >-t1++ ** t2 : number >-t1++ : number @@ -42,7 +42,7 @@ var s; >t1 : number `${!t1 ** t2 ** --t1 } world`; ->`${!t1 ** t2 ** --t1 } world` : `${number} world` +>`${!t1 ** t2 ** --t1 } world` : string >!t1 ** t2 ** --t1 : number >!t1 : boolean >t1 : number @@ -52,7 +52,7 @@ var s; >t1 : number `${typeof t1 ** t2 ** t1} world`; ->`${typeof t1 ** t2 ** t1} world` : `${number} world` +>`${typeof t1 ** t2 ** t1} world` : string >typeof t1 ** t2 ** t1 : number >typeof t1 : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >t1 : number @@ -61,7 +61,7 @@ var s; >t1 : number `${1 + typeof t1 ** t2 ** t1} world`; ->`${1 + typeof t1 ** t2 ** t1} world` : `${number} world` +>`${1 + typeof t1 ** t2 ** t1} world` : string >1 + typeof t1 ** t2 ** t1 : number >1 : 1 >typeof t1 ** t2 ** t1 : number @@ -72,7 +72,7 @@ var s; >t1 : number `${-t1 ** t2 - t1}${-t1 ** t2 - t1} world`; ->`${-t1 ** t2 - t1}${-t1 ** t2 - t1} world` : `${number}${number} world` +>`${-t1 ** t2 - t1}${-t1 ** t2 - t1} world` : string >-t1 ** t2 - t1 : number >-t1 ** t2 : number >-t1 : number @@ -87,7 +87,7 @@ var s; >t1 : number `${-++t1 ** t2 - t1}${-++t1 ** t2 - t1} world`; ->`${-++t1 ** t2 - t1}${-++t1 ** t2 - t1} world` : `${number}${number} world` +>`${-++t1 ** t2 - t1}${-++t1 ** t2 - t1} world` : string >-++t1 ** t2 - t1 : number >-++t1 ** t2 : number >-++t1 : number @@ -104,7 +104,7 @@ var s; >t1 : number `${-t1++ ** t2 - t1}${-t1++ ** t2 - t1} world`; ->`${-t1++ ** t2 - t1}${-t1++ ** t2 - t1} world` : `${number}${number} world` +>`${-t1++ ** t2 - t1}${-t1++ ** t2 - t1} world` : string >-t1++ ** t2 - t1 : number >-t1++ ** t2 : number >-t1++ : number @@ -121,7 +121,7 @@ var s; >t1 : number `${!t1 ** t2 ** --t1 }${!t1 ** t2 ** --t1 } world`; ->`${!t1 ** t2 ** --t1 }${!t1 ** t2 ** --t1 } world` : `${number}${number} world` +>`${!t1 ** t2 ** --t1 }${!t1 ** t2 ** --t1 } world` : string >!t1 ** t2 ** --t1 : number >!t1 : boolean >t1 : number @@ -138,7 +138,7 @@ var s; >t1 : number `${typeof t1 ** t2 ** t1}${typeof t1 ** t2 ** t1} world`; ->`${typeof t1 ** t2 ** t1}${typeof t1 ** t2 ** t1} world` : `${number}${number} world` +>`${typeof t1 ** t2 ** t1}${typeof t1 ** t2 ** t1} world` : string >typeof t1 ** t2 ** t1 : number >typeof t1 : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >t1 : number @@ -153,7 +153,7 @@ var s; >t1 : number `${1 + typeof t1 ** t2 ** t1}${1 + typeof t1 ** t2 ** t1} world`; ->`${1 + typeof t1 ** t2 ** t1}${1 + typeof t1 ** t2 ** t1} world` : `${number}${number} world` +>`${1 + typeof t1 ** t2 ** t1}${1 + typeof t1 ** t2 ** t1} world` : string >1 + typeof t1 ** t2 ** t1 : number >1 : 1 >typeof t1 ** t2 ** t1 : number @@ -172,7 +172,7 @@ var s; >t1 : number `${-t1 ** t2 - t1} hello world ${-t1 ** t2 - t1} !!`; ->`${-t1 ** t2 - t1} hello world ${-t1 ** t2 - t1} !!` : `${number} hello world ${number} !!` +>`${-t1 ** t2 - t1} hello world ${-t1 ** t2 - t1} !!` : string >-t1 ** t2 - t1 : number >-t1 ** t2 : number >-t1 : number @@ -187,7 +187,7 @@ var s; >t1 : number `${-++t1 ** t2 - t1} hello world ${-++t1 ** t2 - t1} !!`; ->`${-++t1 ** t2 - t1} hello world ${-++t1 ** t2 - t1} !!` : `${number} hello world ${number} !!` +>`${-++t1 ** t2 - t1} hello world ${-++t1 ** t2 - t1} !!` : string >-++t1 ** t2 - t1 : number >-++t1 ** t2 : number >-++t1 : number @@ -204,7 +204,7 @@ var s; >t1 : number `${-t1++ ** t2 - t1} hello world ${-t1++ ** t2 - t1} !!`; ->`${-t1++ ** t2 - t1} hello world ${-t1++ ** t2 - t1} !!` : `${number} hello world ${number} !!` +>`${-t1++ ** t2 - t1} hello world ${-t1++ ** t2 - t1} !!` : string >-t1++ ** t2 - t1 : number >-t1++ ** t2 : number >-t1++ : number @@ -221,7 +221,7 @@ var s; >t1 : number `${!t1 ** t2 ** --t1 } hello world ${!t1 ** t2 ** --t1 } !!`; ->`${!t1 ** t2 ** --t1 } hello world ${!t1 ** t2 ** --t1 } !!` : `${number} hello world ${number} !!` +>`${!t1 ** t2 ** --t1 } hello world ${!t1 ** t2 ** --t1 } !!` : string >!t1 ** t2 ** --t1 : number >!t1 : boolean >t1 : number @@ -238,7 +238,7 @@ var s; >t1 : number `${typeof t1 ** t2 ** t1} hello world ${typeof t1 ** t2 ** t1} !!`; ->`${typeof t1 ** t2 ** t1} hello world ${typeof t1 ** t2 ** t1} !!` : `${number} hello world ${number} !!` +>`${typeof t1 ** t2 ** t1} hello world ${typeof t1 ** t2 ** t1} !!` : string >typeof t1 ** t2 ** t1 : number >typeof t1 : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >t1 : number @@ -253,7 +253,7 @@ var s; >t1 : number `${1 + typeof t1 ** t2 ** t1} hello world ${1 + typeof t1 ** t2 ** t1} !!`; ->`${1 + typeof t1 ** t2 ** t1} hello world ${1 + typeof t1 ** t2 ** t1} !!` : `${number} hello world ${number} !!` +>`${1 + typeof t1 ** t2 ** t1} hello world ${1 + typeof t1 ** t2 ** t1} !!` : string >1 + typeof t1 ** t2 ** t1 : number >1 : 1 >typeof t1 ** t2 ** t1 : number diff --git a/tests/baselines/reference/exponentiationOperatorWithTemplateStringInvalid.types b/tests/baselines/reference/exponentiationOperatorWithTemplateStringInvalid.types index de61a9beb2bcd..1958e478d734b 100644 --- a/tests/baselines/reference/exponentiationOperatorWithTemplateStringInvalid.types +++ b/tests/baselines/reference/exponentiationOperatorWithTemplateStringInvalid.types @@ -3,55 +3,55 @@ var a = 1 ** `${ 3 }`; >a : number >1 ** `${ 3 }` : number >1 : 1 ->`${ 3 }` : "3" +>`${ 3 }` : string >3 : 3 var b = 1 ** `2${ 3 }`; >b : number >1 ** `2${ 3 }` : number >1 : 1 ->`2${ 3 }` : "23" +>`2${ 3 }` : string >3 : 3 var c = 1 ** `${ 3 }4`; >c : number >1 ** `${ 3 }4` : number >1 : 1 ->`${ 3 }4` : "34" +>`${ 3 }4` : string >3 : 3 var d = 1 ** `2${ 3 }4`; >d : number >1 ** `2${ 3 }4` : number >1 : 1 ->`2${ 3 }4` : "234" +>`2${ 3 }4` : string >3 : 3 var e = `${ 3 }` ** 5; >e : number >`${ 3 }` ** 5 : number ->`${ 3 }` : "3" +>`${ 3 }` : string >3 : 3 >5 : 5 var f = `2${ 3 }` ** 5; >f : number >`2${ 3 }` ** 5 : number ->`2${ 3 }` : "23" +>`2${ 3 }` : string >3 : 3 >5 : 5 var g = `${ 3 }4` ** 5; >g : number >`${ 3 }4` ** 5 : number ->`${ 3 }4` : "34" +>`${ 3 }4` : string >3 : 3 >5 : 5 var h = `2${ 3 }4` ** 5; >h : number >`2${ 3 }4` ** 5 : number ->`2${ 3 }4` : "234" +>`2${ 3 }4` : string >3 : 3 >5 : 5 @@ -62,25 +62,25 @@ var k = 10; k **= `${ 3 }`; >k **= `${ 3 }` : number >k : number ->`${ 3 }` : "3" +>`${ 3 }` : string >3 : 3 k **= `2${ 3 }`; >k **= `2${ 3 }` : number >k : number ->`2${ 3 }` : "23" +>`2${ 3 }` : string >3 : 3 k **= `2${ 3 }4`; >k **= `2${ 3 }4` : number >k : number ->`2${ 3 }4` : "234" +>`2${ 3 }4` : string >3 : 3 k **= `2${ 3 }4`; >k **= `2${ 3 }4` : number >k : number ->`2${ 3 }4` : "234" +>`2${ 3 }4` : string >3 : 3 diff --git a/tests/baselines/reference/exponentiationOperatorWithTemplateStringInvalidES6.types b/tests/baselines/reference/exponentiationOperatorWithTemplateStringInvalidES6.types index eaca3660157fc..6db21a24ce38c 100644 --- a/tests/baselines/reference/exponentiationOperatorWithTemplateStringInvalidES6.types +++ b/tests/baselines/reference/exponentiationOperatorWithTemplateStringInvalidES6.types @@ -3,55 +3,55 @@ var a = 1 ** `${ 3 }`; >a : number >1 ** `${ 3 }` : number >1 : 1 ->`${ 3 }` : "3" +>`${ 3 }` : string >3 : 3 var b = 1 ** `2${ 3 }`; >b : number >1 ** `2${ 3 }` : number >1 : 1 ->`2${ 3 }` : "23" +>`2${ 3 }` : string >3 : 3 var c = 1 ** `${ 3 }4`; >c : number >1 ** `${ 3 }4` : number >1 : 1 ->`${ 3 }4` : "34" +>`${ 3 }4` : string >3 : 3 var d = 1 ** `2${ 3 }4`; >d : number >1 ** `2${ 3 }4` : number >1 : 1 ->`2${ 3 }4` : "234" +>`2${ 3 }4` : string >3 : 3 var e = `${ 3 }` ** 5; >e : number >`${ 3 }` ** 5 : number ->`${ 3 }` : "3" +>`${ 3 }` : string >3 : 3 >5 : 5 var f = `2${ 3 }` ** 5; >f : number >`2${ 3 }` ** 5 : number ->`2${ 3 }` : "23" +>`2${ 3 }` : string >3 : 3 >5 : 5 var g = `${ 3 }4` ** 5; >g : number >`${ 3 }4` ** 5 : number ->`${ 3 }4` : "34" +>`${ 3 }4` : string >3 : 3 >5 : 5 var h = `2${ 3 }4` ** 5; >h : number >`2${ 3 }4` ** 5 : number ->`2${ 3 }4` : "234" +>`2${ 3 }4` : string >3 : 3 >5 : 5 @@ -62,24 +62,24 @@ var k = 10; k **= `${ 3 }`; >k **= `${ 3 }` : number >k : number ->`${ 3 }` : "3" +>`${ 3 }` : string >3 : 3 k **= `2${ 3 }`; >k **= `2${ 3 }` : number >k : number ->`2${ 3 }` : "23" +>`2${ 3 }` : string >3 : 3 k **= `2${ 3 }4`; >k **= `2${ 3 }4` : number >k : number ->`2${ 3 }4` : "234" +>`2${ 3 }4` : string >3 : 3 kj **= `2${ 3 }4`; >kj **= `2${ 3 }4` : number >kj : any ->`2${ 3 }4` : "234" +>`2${ 3 }4` : string >3 : 3 diff --git a/tests/baselines/reference/exportPropertyAssignmentNameResolution.symbols b/tests/baselines/reference/exportPropertyAssignmentNameResolution.symbols index df6d56766bcc3..eaa7581dec02a 100644 --- a/tests/baselines/reference/exportPropertyAssignmentNameResolution.symbols +++ b/tests/baselines/reference/exportPropertyAssignmentNameResolution.symbols @@ -3,7 +3,7 @@ module.exports.D = class { } >module.exports.D : Symbol(D, Decl(bug24492.js, 0, 0)) >module.exports : Symbol(D, Decl(bug24492.js, 0, 0)) >module : Symbol(module, Decl(bug24492.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/salsa/bug24492", Decl(bug24492.js, 0, 0)) +>exports : Symbol(module.exports, Decl(bug24492.js, 0, 0)) >D : Symbol(D, Decl(bug24492.js, 0, 0)) new D() diff --git a/tests/baselines/reference/exportPropertyAssignmentNameResolution.types b/tests/baselines/reference/exportPropertyAssignmentNameResolution.types index cf9d2e85917c1..9ce801eb04de6 100644 --- a/tests/baselines/reference/exportPropertyAssignmentNameResolution.types +++ b/tests/baselines/reference/exportPropertyAssignmentNameResolution.types @@ -2,9 +2,9 @@ module.exports.D = class { } >module.exports.D = class { } : typeof D >module.exports.D : typeof D ->module.exports : typeof import("tests/cases/conformance/salsa/bug24492") ->module : { "\"tests/cases/conformance/salsa/bug24492\"": typeof import("tests/cases/conformance/salsa/bug24492"); } ->exports : typeof import("tests/cases/conformance/salsa/bug24492") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >D : typeof D >class { } : typeof D diff --git a/tests/baselines/reference/exportedAliasedEnumTag.symbols b/tests/baselines/reference/exportedAliasedEnumTag.symbols index 81cc69aa7e0e4..e3642158a0aa9 100644 --- a/tests/baselines/reference/exportedAliasedEnumTag.symbols +++ b/tests/baselines/reference/exportedAliasedEnumTag.symbols @@ -1,9 +1,9 @@ === tests/cases/conformance/jsdoc/exportedAliasedEnumTag.js === var middlewarify = module.exports = {}; >middlewarify : Symbol(middlewarify, Decl(exportedAliasedEnumTag.js, 0, 3)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/exportedAliasedEnumTag", Decl(exportedAliasedEnumTag.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(exportedAliasedEnumTag.js, 0, 0)) >module : Symbol(module, Decl(exportedAliasedEnumTag.js, 0, 18)) ->exports : Symbol("tests/cases/conformance/jsdoc/exportedAliasedEnumTag", Decl(exportedAliasedEnumTag.js, 0, 0)) +>exports : Symbol(module.exports, Decl(exportedAliasedEnumTag.js, 0, 0)) /** @enum */ middlewarify.Type = { diff --git a/tests/baselines/reference/exportedAliasedEnumTag.types b/tests/baselines/reference/exportedAliasedEnumTag.types index b4c14bc52b2ab..19c94e99ad815 100644 --- a/tests/baselines/reference/exportedAliasedEnumTag.types +++ b/tests/baselines/reference/exportedAliasedEnumTag.types @@ -1,17 +1,17 @@ === tests/cases/conformance/jsdoc/exportedAliasedEnumTag.js === var middlewarify = module.exports = {}; ->middlewarify : typeof import("tests/cases/conformance/jsdoc/exportedAliasedEnumTag") ->module.exports = {} : typeof import("tests/cases/conformance/jsdoc/exportedAliasedEnumTag") ->module.exports : typeof import("tests/cases/conformance/jsdoc/exportedAliasedEnumTag") ->module : { "\"tests/cases/conformance/jsdoc/exportedAliasedEnumTag\"": typeof import("tests/cases/conformance/jsdoc/exportedAliasedEnumTag"); } ->exports : typeof import("tests/cases/conformance/jsdoc/exportedAliasedEnumTag") +>middlewarify : typeof module.exports +>module.exports = {} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{} : {} /** @enum */ middlewarify.Type = { >middlewarify.Type = { BEFORE: 'before'} : { BEFORE: string; } >middlewarify.Type : { BEFORE: string; } ->middlewarify : typeof import("tests/cases/conformance/jsdoc/exportedAliasedEnumTag") +>middlewarify : typeof module.exports >Type : { BEFORE: string; } >{ BEFORE: 'before'} : { BEFORE: string; } diff --git a/tests/baselines/reference/findAllRefs_importType_js.3.baseline.jsonc b/tests/baselines/reference/findAllRefs_importType_js.3.baseline.jsonc index b7ca959132a05..26e86ead593a5 100644 --- a/tests/baselines/reference/findAllRefs_importType_js.3.baseline.jsonc +++ b/tests/baselines/reference/findAllRefs_importType_js.3.baseline.jsonc @@ -15,7 +15,7 @@ "containerName": "", "fileName": "/a.js", "kind": "local class", - "name": "(local class) D", + "name": "(local class) module.exports.D", "textSpan": { "start": 54, "length": 1 @@ -37,9 +37,25 @@ "text": " ", "kind": "space" }, + { + "text": "module", + "kind": "localName" + }, + { + "text": ".", + "kind": "punctuation" + }, + { + "text": "exports", + "kind": "moduleName" + }, + { + "text": ".", + "kind": "punctuation" + }, { "text": "D", - "kind": "className" + "kind": "aliasName" } ], "contextSpan": { diff --git a/tests/baselines/reference/globalMergeWithCommonJSAssignmentDeclaration.symbols b/tests/baselines/reference/globalMergeWithCommonJSAssignmentDeclaration.symbols index 8fafef268e0c7..2adf5afc2e024 100644 --- a/tests/baselines/reference/globalMergeWithCommonJSAssignmentDeclaration.symbols +++ b/tests/baselines/reference/globalMergeWithCommonJSAssignmentDeclaration.symbols @@ -10,7 +10,7 @@ window.console; // should not have error: Property 'console' does not exist on t >console : Symbol(console, Decl(lib.dom.d.ts, --, --)) module.exports = 'anything'; ->module.exports : Symbol("tests/cases/conformance/salsa/bug27099", Decl(bug27099.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(bug27099.js, 0, 0)) >module : Symbol(export=, Decl(bug27099.js, 1, 15)) >exports : Symbol(export=, Decl(bug27099.js, 1, 15)) diff --git a/tests/baselines/reference/globalMergeWithCommonJSAssignmentDeclaration.types b/tests/baselines/reference/globalMergeWithCommonJSAssignmentDeclaration.types index 2da3041af4408..74a1d649bd85b 100644 --- a/tests/baselines/reference/globalMergeWithCommonJSAssignmentDeclaration.types +++ b/tests/baselines/reference/globalMergeWithCommonJSAssignmentDeclaration.types @@ -14,7 +14,7 @@ window.console; // should not have error: Property 'console' does not exist on t module.exports = 'anything'; >module.exports = 'anything' : string >module.exports : string ->module : { "\"tests/cases/conformance/salsa/bug27099\"": string; } +>module : { exports: string; } >exports : string >'anything' : "anything" diff --git a/tests/baselines/reference/importAliasModuleExports.symbols b/tests/baselines/reference/importAliasModuleExports.symbols index 59bb97dcccd01..d9729f669da64 100644 --- a/tests/baselines/reference/importAliasModuleExports.symbols +++ b/tests/baselines/reference/importAliasModuleExports.symbols @@ -6,7 +6,7 @@ class Alias { >bar : Symbol(Alias.bar, Decl(mod1.js, 0, 13)) } module.exports = Alias; ->module.exports : Symbol("tests/cases/conformance/salsa/mod1", Decl(mod1.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >module : Symbol(export=, Decl(mod1.js, 2, 1)) >exports : Symbol(export=, Decl(mod1.js, 2, 1)) >Alias : Symbol(Alias, Decl(mod1.js, 0, 0)) diff --git a/tests/baselines/reference/importAliasModuleExports.types b/tests/baselines/reference/importAliasModuleExports.types index eff243dee47db..795b161a34890 100644 --- a/tests/baselines/reference/importAliasModuleExports.types +++ b/tests/baselines/reference/importAliasModuleExports.types @@ -9,7 +9,7 @@ class Alias { module.exports = Alias; >module.exports = Alias : typeof Alias >module.exports : typeof Alias ->module : { "\"tests/cases/conformance/salsa/mod1\"": typeof Alias; } +>module : { exports: typeof Alias; } >exports : typeof Alias >Alias : typeof Alias diff --git a/tests/baselines/reference/importCallExpressionDeclarationEmit1.types b/tests/baselines/reference/importCallExpressionDeclarationEmit1.types index 2683bb3cc85ab..b04e37ec43eae 100644 --- a/tests/baselines/reference/importCallExpressionDeclarationEmit1.types +++ b/tests/baselines/reference/importCallExpressionDeclarationEmit1.types @@ -19,7 +19,7 @@ import(getSpecifier()); var p0 = import(`${directory}\\${moduleFile}`); >p0 : Promise >import(`${directory}\\${moduleFile}`) : Promise ->`${directory}\\${moduleFile}` : `${string}\\${number}` +>`${directory}\\${moduleFile}` : string >directory : string >moduleFile : number diff --git a/tests/baselines/reference/importCallExpressionReturnPromiseOfAny.types b/tests/baselines/reference/importCallExpressionReturnPromiseOfAny.types index 9592dc870d318..bfe4d8d955641 100644 --- a/tests/baselines/reference/importCallExpressionReturnPromiseOfAny.types +++ b/tests/baselines/reference/importCallExpressionReturnPromiseOfAny.types @@ -23,7 +23,7 @@ declare const moduleFile: number; import(`${directory}\\${moduleFile}`); >import(`${directory}\\${moduleFile}`) : Promise ->`${directory}\\${moduleFile}` : `${string}\\${number}` +>`${directory}\\${moduleFile}` : string >directory : string >moduleFile : number @@ -94,7 +94,7 @@ var p3: Promise = import(j=getSpecifier()); >getSpecifier : () => string function * loadModule(directories: string[]) { ->loadModule : (directories: string[]) => Generator<`${string}\\moduleFile`, void, string> +>loadModule : (directories: string[]) => Generator >directories : string[] for (const directory of directories) { @@ -102,14 +102,14 @@ function * loadModule(directories: string[]) { >directories : string[] const path = `${directory}\\moduleFile`; ->path : `${string}\\moduleFile` ->`${directory}\\moduleFile` : `${string}\\moduleFile` +>path : string +>`${directory}\\moduleFile` : string >directory : string import(yield path); >import(yield path) : Promise >yield path : any ->path : `${string}\\moduleFile` +>path : string } } diff --git a/tests/baselines/reference/importCallExpressionShouldNotGetParen.types b/tests/baselines/reference/importCallExpressionShouldNotGetParen.types index b9c3cde9b89b9..6c45228344687 100644 --- a/tests/baselines/reference/importCallExpressionShouldNotGetParen.types +++ b/tests/baselines/reference/importCallExpressionShouldNotGetParen.types @@ -7,7 +7,7 @@ import(`./locales/${localeName}.js`).then(bar => { >import(`./locales/${localeName}.js`).then(bar => { let x = bar;}) : Promise >import(`./locales/${localeName}.js`).then : (onfulfilled?: (value: any) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise >import(`./locales/${localeName}.js`) : Promise ->`./locales/${localeName}.js` : "./locales/zh-CN.js" +>`./locales/${localeName}.js` : string >localeName : "zh-CN" >then : (onfulfilled?: (value: any) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise >bar => { let x = bar;} : (bar: any) => void diff --git a/tests/baselines/reference/inferenceErasedSignatures.types b/tests/baselines/reference/inferenceErasedSignatures.types index 018a06971100a..84f64ffda5682 100644 --- a/tests/baselines/reference/inferenceErasedSignatures.types +++ b/tests/baselines/reference/inferenceErasedSignatures.types @@ -36,7 +36,7 @@ class SomeClass extends SomeAbstractClass { >context : number return `${context}`; ->`${context}` : `${number}` +>`${context}` : string >context : number } } diff --git a/tests/baselines/reference/instanceOfAssignability.types b/tests/baselines/reference/instanceOfAssignability.types index 9c29abbe89491..4e65e644a3b54 100644 --- a/tests/baselines/reference/instanceOfAssignability.types +++ b/tests/baselines/reference/instanceOfAssignability.types @@ -70,8 +70,8 @@ function fn2(x: Base) { // 1.5: y: Base // Want: y: Derived1 let y = x; ->y : Base & Derived1 ->x : Base & Derived1 +>y : Derived1 +>x : Derived1 } } @@ -104,8 +104,8 @@ function fn4(x: Base|Derived2) { // 1.5: y: {} // Want: Derived1 let y = x; ->y : (Base | Derived2) & Derived1 ->x : (Base | Derived2) & Derived1 +>y : Derived1 +>x : Derived1 } } diff --git a/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=es2015).types b/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=es2015).types index 8acfa55570242..08b1ed6844442 100644 --- a/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=es2015).types +++ b/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=es2015).types @@ -18,21 +18,21 @@ const b = tag`123 ${100}` >b : any >tag`123 ${100}` : any >tag : (str: any, ...args: any[]) => any ->`123 ${100}` : "123 100" +>`123 ${100}` : string >100 : 100 const x = tag`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld`; >x : any >tag`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld` : any >tag : (str: any, ...args: any[]) => any ->`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld` : "\\u{hello} 100 \\xtraordinary 200 wonderful 300 \\uworld" +>`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld` : string >100 : 100 >200 : 200 >300 : 300 const y = `\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld`; // should error with NoSubstitutionTemplate ->y : "hello} 100 traordinary 200 wonderful 300 world" ->`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld` : "hello} 100 traordinary 200 wonderful 300 world" +>y : string +>`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld` : string >100 : 100 >200 : 200 >300 : 300 @@ -47,97 +47,97 @@ const a1 = tag`${ 100 }\0` // \0 >a1 : any >tag`${ 100 }\0` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\0` : "100\0" +>`${ 100 }\0` : string >100 : 100 const a2 = tag`${ 100 }\00` // \\00 >a2 : any >tag`${ 100 }\00` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\00` : "100\\00" +>`${ 100 }\00` : string >100 : 100 const a3 = tag`${ 100 }\u` // \\u >a3 : any >tag`${ 100 }\u` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u` : "100\\u" +>`${ 100 }\u` : string >100 : 100 const a4 = tag`${ 100 }\u0` // \\u0 >a4 : any >tag`${ 100 }\u0` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u0` : "100\\u0" +>`${ 100 }\u0` : string >100 : 100 const a5 = tag`${ 100 }\u00` // \\u00 >a5 : any >tag`${ 100 }\u00` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u00` : "100\\u00" +>`${ 100 }\u00` : string >100 : 100 const a6 = tag`${ 100 }\u000` // \\u000 >a6 : any >tag`${ 100 }\u000` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u000` : "100\\u000" +>`${ 100 }\u000` : string >100 : 100 const a7 = tag`${ 100 }\u0000` // \u0000 >a7 : any >tag`${ 100 }\u0000` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u0000` : "100\0" +>`${ 100 }\u0000` : string >100 : 100 const a8 = tag`${ 100 }\u{` // \\u{ >a8 : any >tag`${ 100 }\u{` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u{` : "100\\u{" +>`${ 100 }\u{` : string >100 : 100 const a9 = tag`${ 100 }\u{10FFFF}` // \\u{10FFFF >a9 : any >tag`${ 100 }\u{10FFFF}` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u{10FFFF}` : "100􏿿" +>`${ 100 }\u{10FFFF}` : string >100 : 100 const a10 = tag`${ 100 }\u{1f622` // \\u{1f622 >a10 : any >tag`${ 100 }\u{1f622` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u{1f622` : "100\\u{1f622" +>`${ 100 }\u{1f622` : string >100 : 100 const a11 = tag`${ 100 }\u{1f622}` // \u{1f622} >a11 : any >tag`${ 100 }\u{1f622}` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u{1f622}` : "100😢" +>`${ 100 }\u{1f622}` : string >100 : 100 const a12 = tag`${ 100 }\x` // \\x >a12 : any >tag`${ 100 }\x` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\x` : "100\\x" +>`${ 100 }\x` : string >100 : 100 const a13 = tag`${ 100 }\x0` // \\x0 >a13 : any >tag`${ 100 }\x0` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\x0` : "100\\x0" +>`${ 100 }\x0` : string >100 : 100 const a14 = tag`${ 100 }\x00` // \x00 >a14 : any >tag`${ 100 }\x00` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\x00` : "100\0" +>`${ 100 }\x00` : string >100 : 100 diff --git a/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=es5).types b/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=es5).types index 8acfa55570242..08b1ed6844442 100644 --- a/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=es5).types +++ b/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=es5).types @@ -18,21 +18,21 @@ const b = tag`123 ${100}` >b : any >tag`123 ${100}` : any >tag : (str: any, ...args: any[]) => any ->`123 ${100}` : "123 100" +>`123 ${100}` : string >100 : 100 const x = tag`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld`; >x : any >tag`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld` : any >tag : (str: any, ...args: any[]) => any ->`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld` : "\\u{hello} 100 \\xtraordinary 200 wonderful 300 \\uworld" +>`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld` : string >100 : 100 >200 : 200 >300 : 300 const y = `\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld`; // should error with NoSubstitutionTemplate ->y : "hello} 100 traordinary 200 wonderful 300 world" ->`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld` : "hello} 100 traordinary 200 wonderful 300 world" +>y : string +>`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld` : string >100 : 100 >200 : 200 >300 : 300 @@ -47,97 +47,97 @@ const a1 = tag`${ 100 }\0` // \0 >a1 : any >tag`${ 100 }\0` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\0` : "100\0" +>`${ 100 }\0` : string >100 : 100 const a2 = tag`${ 100 }\00` // \\00 >a2 : any >tag`${ 100 }\00` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\00` : "100\\00" +>`${ 100 }\00` : string >100 : 100 const a3 = tag`${ 100 }\u` // \\u >a3 : any >tag`${ 100 }\u` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u` : "100\\u" +>`${ 100 }\u` : string >100 : 100 const a4 = tag`${ 100 }\u0` // \\u0 >a4 : any >tag`${ 100 }\u0` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u0` : "100\\u0" +>`${ 100 }\u0` : string >100 : 100 const a5 = tag`${ 100 }\u00` // \\u00 >a5 : any >tag`${ 100 }\u00` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u00` : "100\\u00" +>`${ 100 }\u00` : string >100 : 100 const a6 = tag`${ 100 }\u000` // \\u000 >a6 : any >tag`${ 100 }\u000` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u000` : "100\\u000" +>`${ 100 }\u000` : string >100 : 100 const a7 = tag`${ 100 }\u0000` // \u0000 >a7 : any >tag`${ 100 }\u0000` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u0000` : "100\0" +>`${ 100 }\u0000` : string >100 : 100 const a8 = tag`${ 100 }\u{` // \\u{ >a8 : any >tag`${ 100 }\u{` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u{` : "100\\u{" +>`${ 100 }\u{` : string >100 : 100 const a9 = tag`${ 100 }\u{10FFFF}` // \\u{10FFFF >a9 : any >tag`${ 100 }\u{10FFFF}` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u{10FFFF}` : "100􏿿" +>`${ 100 }\u{10FFFF}` : string >100 : 100 const a10 = tag`${ 100 }\u{1f622` // \\u{1f622 >a10 : any >tag`${ 100 }\u{1f622` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u{1f622` : "100\\u{1f622" +>`${ 100 }\u{1f622` : string >100 : 100 const a11 = tag`${ 100 }\u{1f622}` // \u{1f622} >a11 : any >tag`${ 100 }\u{1f622}` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u{1f622}` : "100😢" +>`${ 100 }\u{1f622}` : string >100 : 100 const a12 = tag`${ 100 }\x` // \\x >a12 : any >tag`${ 100 }\x` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\x` : "100\\x" +>`${ 100 }\x` : string >100 : 100 const a13 = tag`${ 100 }\x0` // \\x0 >a13 : any >tag`${ 100 }\x0` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\x0` : "100\\x0" +>`${ 100 }\x0` : string >100 : 100 const a14 = tag`${ 100 }\x00` // \x00 >a14 : any >tag`${ 100 }\x00` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\x00` : "100\0" +>`${ 100 }\x00` : string >100 : 100 diff --git a/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=esnext).types b/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=esnext).types index 8acfa55570242..08b1ed6844442 100644 --- a/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=esnext).types +++ b/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=esnext).types @@ -18,21 +18,21 @@ const b = tag`123 ${100}` >b : any >tag`123 ${100}` : any >tag : (str: any, ...args: any[]) => any ->`123 ${100}` : "123 100" +>`123 ${100}` : string >100 : 100 const x = tag`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld`; >x : any >tag`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld` : any >tag : (str: any, ...args: any[]) => any ->`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld` : "\\u{hello} 100 \\xtraordinary 200 wonderful 300 \\uworld" +>`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld` : string >100 : 100 >200 : 200 >300 : 300 const y = `\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld`; // should error with NoSubstitutionTemplate ->y : "hello} 100 traordinary 200 wonderful 300 world" ->`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld` : "hello} 100 traordinary 200 wonderful 300 world" +>y : string +>`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld` : string >100 : 100 >200 : 200 >300 : 300 @@ -47,97 +47,97 @@ const a1 = tag`${ 100 }\0` // \0 >a1 : any >tag`${ 100 }\0` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\0` : "100\0" +>`${ 100 }\0` : string >100 : 100 const a2 = tag`${ 100 }\00` // \\00 >a2 : any >tag`${ 100 }\00` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\00` : "100\\00" +>`${ 100 }\00` : string >100 : 100 const a3 = tag`${ 100 }\u` // \\u >a3 : any >tag`${ 100 }\u` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u` : "100\\u" +>`${ 100 }\u` : string >100 : 100 const a4 = tag`${ 100 }\u0` // \\u0 >a4 : any >tag`${ 100 }\u0` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u0` : "100\\u0" +>`${ 100 }\u0` : string >100 : 100 const a5 = tag`${ 100 }\u00` // \\u00 >a5 : any >tag`${ 100 }\u00` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u00` : "100\\u00" +>`${ 100 }\u00` : string >100 : 100 const a6 = tag`${ 100 }\u000` // \\u000 >a6 : any >tag`${ 100 }\u000` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u000` : "100\\u000" +>`${ 100 }\u000` : string >100 : 100 const a7 = tag`${ 100 }\u0000` // \u0000 >a7 : any >tag`${ 100 }\u0000` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u0000` : "100\0" +>`${ 100 }\u0000` : string >100 : 100 const a8 = tag`${ 100 }\u{` // \\u{ >a8 : any >tag`${ 100 }\u{` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u{` : "100\\u{" +>`${ 100 }\u{` : string >100 : 100 const a9 = tag`${ 100 }\u{10FFFF}` // \\u{10FFFF >a9 : any >tag`${ 100 }\u{10FFFF}` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u{10FFFF}` : "100􏿿" +>`${ 100 }\u{10FFFF}` : string >100 : 100 const a10 = tag`${ 100 }\u{1f622` // \\u{1f622 >a10 : any >tag`${ 100 }\u{1f622` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u{1f622` : "100\\u{1f622" +>`${ 100 }\u{1f622` : string >100 : 100 const a11 = tag`${ 100 }\u{1f622}` // \u{1f622} >a11 : any >tag`${ 100 }\u{1f622}` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\u{1f622}` : "100😢" +>`${ 100 }\u{1f622}` : string >100 : 100 const a12 = tag`${ 100 }\x` // \\x >a12 : any >tag`${ 100 }\x` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\x` : "100\\x" +>`${ 100 }\x` : string >100 : 100 const a13 = tag`${ 100 }\x0` // \\x0 >a13 : any >tag`${ 100 }\x0` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\x0` : "100\\x0" +>`${ 100 }\x0` : string >100 : 100 const a14 = tag`${ 100 }\x00` // \x00 >a14 : any >tag`${ 100 }\x00` : any >tag : (str: any, ...args: any[]) => any ->`${ 100 }\x00` : "100\0" +>`${ 100 }\x00` : string >100 : 100 diff --git a/tests/baselines/reference/isolatedModulesImportConstEnum.js b/tests/baselines/reference/isolatedModulesImportConstEnum.js new file mode 100644 index 0000000000000..6af32fc5e9026 --- /dev/null +++ b/tests/baselines/reference/isolatedModulesImportConstEnum.js @@ -0,0 +1,25 @@ +//// [tests/cases/compiler/isolatedModulesImportConstEnum.ts] //// + +//// [file1.ts] +import { Foo } from './file2'; +console.log(Foo.BAR); + +//// [file2.ts] +export const enum Foo { + BAR, +} + + +//// [file2.js] +"use strict"; +exports.__esModule = true; +exports.Foo = void 0; +var Foo; +(function (Foo) { + Foo[Foo["BAR"] = 0] = "BAR"; +})(Foo = exports.Foo || (exports.Foo = {})); +//// [file1.js] +"use strict"; +exports.__esModule = true; +var file2_1 = require("./file2"); +console.log(file2_1.Foo.BAR); diff --git a/tests/baselines/reference/isolatedModulesImportConstEnum.symbols b/tests/baselines/reference/isolatedModulesImportConstEnum.symbols new file mode 100644 index 0000000000000..797b8825c7d1e --- /dev/null +++ b/tests/baselines/reference/isolatedModulesImportConstEnum.symbols @@ -0,0 +1,20 @@ +=== tests/cases/compiler/file1.ts === +import { Foo } from './file2'; +>Foo : Symbol(Foo, Decl(file1.ts, 0, 8)) + +console.log(Foo.BAR); +>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>console : Symbol(console, Decl(lib.dom.d.ts, --, --)) +>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>Foo.BAR : Symbol(Foo.BAR, Decl(file2.ts, 0, 23)) +>Foo : Symbol(Foo, Decl(file1.ts, 0, 8)) +>BAR : Symbol(Foo.BAR, Decl(file2.ts, 0, 23)) + +=== tests/cases/compiler/file2.ts === +export const enum Foo { +>Foo : Symbol(Foo, Decl(file2.ts, 0, 0)) + + BAR, +>BAR : Symbol(Foo.BAR, Decl(file2.ts, 0, 23)) +} + diff --git a/tests/baselines/reference/isolatedModulesImportConstEnum.types b/tests/baselines/reference/isolatedModulesImportConstEnum.types new file mode 100644 index 0000000000000..70f9856d66393 --- /dev/null +++ b/tests/baselines/reference/isolatedModulesImportConstEnum.types @@ -0,0 +1,21 @@ +=== tests/cases/compiler/file1.ts === +import { Foo } from './file2'; +>Foo : typeof Foo + +console.log(Foo.BAR); +>console.log(Foo.BAR) : void +>console.log : (...data: any[]) => void +>console : Console +>log : (...data: any[]) => void +>Foo.BAR : Foo +>Foo : typeof Foo +>BAR : Foo + +=== tests/cases/compiler/file2.ts === +export const enum Foo { +>Foo : Foo + + BAR, +>BAR : Foo.BAR +} + diff --git a/tests/baselines/reference/isolatedModulesImportConstEnumTypeOnly.js b/tests/baselines/reference/isolatedModulesImportConstEnumTypeOnly.js new file mode 100644 index 0000000000000..3781ecf9eed6d --- /dev/null +++ b/tests/baselines/reference/isolatedModulesImportConstEnumTypeOnly.js @@ -0,0 +1,22 @@ +//// [tests/cases/compiler/isolatedModulesImportConstEnumTypeOnly.ts] //// + +//// [enum.ts] +export const enum Foo { Bar } + +//// [index.ts] +import { Foo } from "./enum"; +function f(foo: Foo) { return; } + + +//// [enum.js] +"use strict"; +exports.__esModule = true; +exports.Foo = void 0; +var Foo; +(function (Foo) { + Foo[Foo["Bar"] = 0] = "Bar"; +})(Foo = exports.Foo || (exports.Foo = {})); +//// [index.js] +"use strict"; +exports.__esModule = true; +function f(foo) { return; } diff --git a/tests/baselines/reference/isolatedModulesImportConstEnumTypeOnly.symbols b/tests/baselines/reference/isolatedModulesImportConstEnumTypeOnly.symbols new file mode 100644 index 0000000000000..52fb92e2c7129 --- /dev/null +++ b/tests/baselines/reference/isolatedModulesImportConstEnumTypeOnly.symbols @@ -0,0 +1,14 @@ +=== tests/cases/compiler/enum.ts === +export const enum Foo { Bar } +>Foo : Symbol(Foo, Decl(enum.ts, 0, 0)) +>Bar : Symbol(Foo.Bar, Decl(enum.ts, 0, 23)) + +=== tests/cases/compiler/index.ts === +import { Foo } from "./enum"; +>Foo : Symbol(Foo, Decl(index.ts, 0, 8)) + +function f(foo: Foo) { return; } +>f : Symbol(f, Decl(index.ts, 0, 29)) +>foo : Symbol(foo, Decl(index.ts, 1, 11)) +>Foo : Symbol(Foo, Decl(index.ts, 0, 8)) + diff --git a/tests/baselines/reference/isolatedModulesImportConstEnumTypeOnly.types b/tests/baselines/reference/isolatedModulesImportConstEnumTypeOnly.types new file mode 100644 index 0000000000000..fea6ef63fee20 --- /dev/null +++ b/tests/baselines/reference/isolatedModulesImportConstEnumTypeOnly.types @@ -0,0 +1,13 @@ +=== tests/cases/compiler/enum.ts === +export const enum Foo { Bar } +>Foo : Foo +>Bar : Foo.Bar + +=== tests/cases/compiler/index.ts === +import { Foo } from "./enum"; +>Foo : typeof Foo + +function f(foo: Foo) { return; } +>f : (foo: Foo) => void +>foo : Foo + diff --git a/tests/baselines/reference/isolatedModulesRequiresPreserveConstEnum.errors.txt b/tests/baselines/reference/isolatedModulesRequiresPreserveConstEnum.errors.txt new file mode 100644 index 0000000000000..70ddd6b8b8b4a --- /dev/null +++ b/tests/baselines/reference/isolatedModulesRequiresPreserveConstEnum.errors.txt @@ -0,0 +1,8 @@ +error TS5091: Option 'preserveConstEnums' cannot be disabled when 'isolatedModules' is enabled. + + +!!! error TS5091: Option 'preserveConstEnums' cannot be disabled when 'isolatedModules' is enabled. +==== tests/cases/compiler/file1.ts (0 errors) ==== + export {}; + + \ No newline at end of file diff --git a/tests/baselines/reference/isolatedModulesRequiresPreserveConstEnum.js b/tests/baselines/reference/isolatedModulesRequiresPreserveConstEnum.js new file mode 100644 index 0000000000000..0691bf23e3870 --- /dev/null +++ b/tests/baselines/reference/isolatedModulesRequiresPreserveConstEnum.js @@ -0,0 +1,8 @@ +//// [file1.ts] +export {}; + + + +//// [file1.js] +"use strict"; +exports.__esModule = true; diff --git a/tests/baselines/reference/isolatedModulesRequiresPreserveConstEnum.symbols b/tests/baselines/reference/isolatedModulesRequiresPreserveConstEnum.symbols new file mode 100644 index 0000000000000..39ef3fa478d07 --- /dev/null +++ b/tests/baselines/reference/isolatedModulesRequiresPreserveConstEnum.symbols @@ -0,0 +1,5 @@ +=== tests/cases/compiler/file1.ts === +export {}; +No type information for this code. +No type information for this code. +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/isolatedModulesRequiresPreserveConstEnum.types b/tests/baselines/reference/isolatedModulesRequiresPreserveConstEnum.types new file mode 100644 index 0000000000000..39ef3fa478d07 --- /dev/null +++ b/tests/baselines/reference/isolatedModulesRequiresPreserveConstEnum.types @@ -0,0 +1,5 @@ +=== tests/cases/compiler/file1.ts === +export {}; +No type information for this code. +No type information for this code. +No type information for this code. \ No newline at end of file diff --git a/tests/baselines/reference/javascriptCommonjsModule.symbols b/tests/baselines/reference/javascriptCommonjsModule.symbols index da5d60593f4c9..30fbf94cb0acf 100644 --- a/tests/baselines/reference/javascriptCommonjsModule.symbols +++ b/tests/baselines/reference/javascriptCommonjsModule.symbols @@ -7,7 +7,7 @@ class Bar extends Foo {} >Foo : Symbol(Foo, Decl(index.js, 0, 0)) module.exports = Bar; ->module.exports : Symbol("tests/cases/compiler/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 2, 24)) >exports : Symbol(export=, Decl(index.js, 2, 24)) >Bar : Symbol(Bar, Decl(index.js, 0, 12)) diff --git a/tests/baselines/reference/javascriptCommonjsModule.types b/tests/baselines/reference/javascriptCommonjsModule.types index 2850541b953b4..d68912be92637 100644 --- a/tests/baselines/reference/javascriptCommonjsModule.types +++ b/tests/baselines/reference/javascriptCommonjsModule.types @@ -9,7 +9,7 @@ class Bar extends Foo {} module.exports = Bar; >module.exports = Bar : typeof Bar >module.exports : typeof Bar ->module : { "\"tests/cases/compiler/index\"": typeof Bar; } +>module : { exports: typeof Bar; } >exports : typeof Bar >Bar : typeof Bar diff --git a/tests/baselines/reference/javascriptImportDefaultBadExport.symbols b/tests/baselines/reference/javascriptImportDefaultBadExport.symbols index b5506996aff79..8e728a46522a1 100644 --- a/tests/baselines/reference/javascriptImportDefaultBadExport.symbols +++ b/tests/baselines/reference/javascriptImportDefaultBadExport.symbols @@ -6,7 +6,7 @@ const alias = {}; >alias : Symbol(alias, Decl(a.js, 3, 5)) module.exports = alias; ->module.exports : Symbol("/a", Decl(a.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(a.js, 0, 0)) >module : Symbol(export=, Decl(a.js, 3, 17)) >exports : Symbol(export=, Decl(a.js, 3, 17)) >alias : Symbol(alias, Decl(a.js, 3, 5)) diff --git a/tests/baselines/reference/javascriptImportDefaultBadExport.types b/tests/baselines/reference/javascriptImportDefaultBadExport.types index c01e329340e4f..e8ff12bd3e9a0 100644 --- a/tests/baselines/reference/javascriptImportDefaultBadExport.types +++ b/tests/baselines/reference/javascriptImportDefaultBadExport.types @@ -9,7 +9,7 @@ const alias = {}; module.exports = alias; >module.exports = alias : {} >module.exports : {} ->module : { "\"/a\"": {}; } +>module : { exports: {}; } >exports : {} >alias : {} diff --git a/tests/baselines/reference/jsDeclarationsClassExtendsVisibility.symbols b/tests/baselines/reference/jsDeclarationsClassExtendsVisibility.symbols index a59d302e7f005..d76e8b90387de 100644 --- a/tests/baselines/reference/jsDeclarationsClassExtendsVisibility.symbols +++ b/tests/baselines/reference/jsDeclarationsClassExtendsVisibility.symbols @@ -19,7 +19,7 @@ class Foo extends Bar {} >Bar : Symbol(Bar, Decl(cls.js, 0, 5)) module.exports = Foo; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/cls", Decl(cls.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(cls.js, 0, 0)) >module : Symbol(export=, Decl(cls.js, 5, 24)) >exports : Symbol(export=, Decl(cls.js, 5, 24)) >Foo : Symbol(Foo, Decl(cls.js, 4, 2)) @@ -28,7 +28,7 @@ module.exports.Strings = Strings; >module.exports.Strings : Symbol(Strings, Decl(cls.js, 6, 21)) >module.exports : Symbol(Strings, Decl(cls.js, 6, 21)) >module : Symbol(module, Decl(cls.js, 5, 24)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/cls", Decl(cls.js, 0, 0)) +>exports : Symbol(module.exports, Decl(cls.js, 0, 0)) >Strings : Symbol(Strings, Decl(cls.js, 6, 21)) >Strings : Symbol(Strings, Decl(cls.js, 1, 5)) @@ -37,7 +37,7 @@ class Bar {} >Bar : Symbol(Bar, Decl(bar.js, 0, 0)) module.exports = Bar; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/bar", Decl(bar.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(bar.js, 0, 0)) >module : Symbol(export=, Decl(bar.js, 0, 12)) >exports : Symbol(export=, Decl(bar.js, 0, 12)) >Bar : Symbol(Bar, Decl(bar.js, 0, 0)) diff --git a/tests/baselines/reference/jsDeclarationsClassExtendsVisibility.types b/tests/baselines/reference/jsDeclarationsClassExtendsVisibility.types index b73577a1133b1..cf4cf2cf8f113 100644 --- a/tests/baselines/reference/jsDeclarationsClassExtendsVisibility.types +++ b/tests/baselines/reference/jsDeclarationsClassExtendsVisibility.types @@ -25,7 +25,7 @@ class Foo extends Bar {} module.exports = Foo; >module.exports = Foo : typeof Foo >module.exports : typeof Foo ->module : { "\"tests/cases/conformance/jsdoc/declarations/cls\"": typeof Foo; } +>module : { exports: typeof Foo; } >exports : typeof Foo >Foo : typeof Foo @@ -33,7 +33,7 @@ module.exports.Strings = Strings; >module.exports.Strings = Strings : { a: string; b: string; } >module.exports.Strings : { a: string; b: string; } >module.exports : typeof Foo ->module : { "\"tests/cases/conformance/jsdoc/declarations/cls\"": typeof Foo; } +>module : { exports: typeof Foo; } >exports : typeof Foo >Strings : { a: string; b: string; } >Strings : { a: string; b: string; } @@ -45,7 +45,7 @@ class Bar {} module.exports = Bar; >module.exports = Bar : typeof Bar >module.exports : typeof Bar ->module : { "\"tests/cases/conformance/jsdoc/declarations/bar\"": typeof Bar; } +>module : { exports: typeof Bar; } >exports : typeof Bar >Bar : typeof Bar diff --git a/tests/baselines/reference/jsDeclarationsClassImplementsGenericsSerialization.js b/tests/baselines/reference/jsDeclarationsClassImplementsGenericsSerialization.js index 04fbe98c54625..285cdae7b42b8 100644 --- a/tests/baselines/reference/jsDeclarationsClassImplementsGenericsSerialization.js +++ b/tests/baselines/reference/jsDeclarationsClassImplementsGenericsSerialization.js @@ -68,4 +68,4 @@ export class Encoder implements IEncoder { */ encode(value: T): Uint8Array; } -export type IEncoder = import("./interface").Encoder; +export type IEncoder = import('./interface').Encoder; diff --git a/tests/baselines/reference/jsDeclarationsClassStatic.symbols b/tests/baselines/reference/jsDeclarationsClassStatic.symbols index 8687099bbe386..635174ee036f5 100644 --- a/tests/baselines/reference/jsDeclarationsClassStatic.symbols +++ b/tests/baselines/reference/jsDeclarationsClassStatic.symbols @@ -28,7 +28,7 @@ const Strings = { } module.exports = Handler; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/source", Decl(source.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(source.js, 0, 0)) >module : Symbol(export=, Decl(source.js, 12, 1)) >exports : Symbol(export=, Decl(source.js, 12, 1)) >Handler : Symbol(Handler, Decl(source.js, 0, 0), Decl(source.js, 7, 1)) @@ -37,7 +37,7 @@ module.exports.Strings = Strings >module.exports.Strings : Symbol(Strings, Decl(source.js, 14, 25)) >module.exports : Symbol(Strings, Decl(source.js, 14, 25)) >module : Symbol(module, Decl(source.js, 12, 1)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/source", Decl(source.js, 0, 0)) +>exports : Symbol(module.exports, Decl(source.js, 0, 0)) >Strings : Symbol(Strings, Decl(source.js, 14, 25)) >Strings : Symbol(Strings, Decl(source.js, 9, 5)) diff --git a/tests/baselines/reference/jsDeclarationsClassStatic.types b/tests/baselines/reference/jsDeclarationsClassStatic.types index 50783314fac53..02473d7523fa5 100644 --- a/tests/baselines/reference/jsDeclarationsClassStatic.types +++ b/tests/baselines/reference/jsDeclarationsClassStatic.types @@ -36,7 +36,7 @@ const Strings = { module.exports = Handler; >module.exports = Handler : typeof Handler >module.exports : typeof Handler ->module : { "\"tests/cases/conformance/jsdoc/declarations/source\"": typeof Handler; } +>module : { exports: typeof Handler; } >exports : typeof Handler >Handler : typeof Handler @@ -44,7 +44,7 @@ module.exports.Strings = Strings >module.exports.Strings = Strings : { a: string; b: string; } >module.exports.Strings : { a: string; b: string; } >module.exports : typeof Handler ->module : { "\"tests/cases/conformance/jsdoc/declarations/source\"": typeof Handler; } +>module : { exports: typeof Handler; } >exports : typeof Handler >Strings : { a: string; b: string; } >Strings : { a: string; b: string; } diff --git a/tests/baselines/reference/jsDeclarationsCommonjsRelativePath.symbols b/tests/baselines/reference/jsDeclarationsCommonjsRelativePath.symbols index f30136c90b8f9..c5f75ca89cb05 100644 --- a/tests/baselines/reference/jsDeclarationsCommonjsRelativePath.symbols +++ b/tests/baselines/reference/jsDeclarationsCommonjsRelativePath.symbols @@ -8,9 +8,9 @@ const Thing = require('./thing').Thing >Thing : Symbol(Thing, Decl(thing.js, 2, 18)) module.exports = { Thing } ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/reexport", Decl(reexport.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(reexport.js, 0, 0)) >module : Symbol(module, Decl(reexport.js, 1, 38)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/reexport", Decl(reexport.js, 0, 0)) +>exports : Symbol(module.exports, Decl(reexport.js, 0, 0)) >Thing : Symbol(Thing, Decl(reexport.js, 2, 18)) === tests/cases/conformance/jsdoc/declarations/thing.js === @@ -19,8 +19,8 @@ class Thing {} >Thing : Symbol(Thing, Decl(thing.js, 0, 13)) module.exports = { Thing } ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/thing", Decl(thing.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(thing.js, 0, 0)) >module : Symbol(module, Decl(thing.js, 1, 14)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/thing", Decl(thing.js, 0, 0)) +>exports : Symbol(module.exports, Decl(thing.js, 0, 0)) >Thing : Symbol(Thing, Decl(thing.js, 2, 18)) diff --git a/tests/baselines/reference/jsDeclarationsCommonjsRelativePath.types b/tests/baselines/reference/jsDeclarationsCommonjsRelativePath.types index 58c3146179968..79a0313df8ba0 100644 --- a/tests/baselines/reference/jsDeclarationsCommonjsRelativePath.types +++ b/tests/baselines/reference/jsDeclarationsCommonjsRelativePath.types @@ -11,10 +11,10 @@ const Thing = require('./thing').Thing >Thing : typeof Thing module.exports = { Thing } ->module.exports = { Thing } : typeof import("tests/cases/conformance/jsdoc/declarations/reexport") ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/reexport") ->module : { "\"tests/cases/conformance/jsdoc/declarations/reexport\"": typeof import("tests/cases/conformance/jsdoc/declarations/reexport"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/reexport") +>module.exports = { Thing } : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{ Thing } : { Thing: typeof Thing; } >Thing : typeof Thing @@ -26,10 +26,10 @@ class Thing {} >Thing : Thing module.exports = { Thing } ->module.exports = { Thing } : typeof import("tests/cases/conformance/jsdoc/declarations/thing") ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/thing") ->module : { "\"tests/cases/conformance/jsdoc/declarations/thing\"": typeof import("tests/cases/conformance/jsdoc/declarations/thing"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/thing") +>module.exports = { Thing } : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{ Thing } : { Thing: typeof Thing; } >Thing : typeof Thing diff --git a/tests/baselines/reference/jsDeclarationsComputedNames.symbols b/tests/baselines/reference/jsDeclarationsComputedNames.symbols index 2abc98e4edfc3..ae30cbffc1cfb 100644 --- a/tests/baselines/reference/jsDeclarationsComputedNames.symbols +++ b/tests/baselines/reference/jsDeclarationsComputedNames.symbols @@ -8,7 +8,7 @@ const InnerSym = Symbol(); >Symbol : Symbol(Symbol, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) module.exports = { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 1, 26)) >exports : Symbol(export=, Decl(index.js, 1, 26)) diff --git a/tests/baselines/reference/jsDeclarationsComputedNames.types b/tests/baselines/reference/jsDeclarationsComputedNames.types index 02e1788a3ea72..557d32c54ac9c 100644 --- a/tests/baselines/reference/jsDeclarationsComputedNames.types +++ b/tests/baselines/reference/jsDeclarationsComputedNames.types @@ -12,7 +12,7 @@ const InnerSym = Symbol(); module.exports = { >module.exports = { [TopLevelSym](x = 12) { return x; }, items: { [InnerSym]: (arg = {x: 12}) => arg.x }} : { [TopLevelSym](x?: number): number; items: { [InnerSym]: (arg?: { x: number; }) => number; }; } >module.exports : { [TopLevelSym](x?: number): number; items: { [InnerSym]: (arg?: { x: number; }) => number; }; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": { [TopLevelSym](x?: number): number; items: { [InnerSym]: (arg?: { x: number; }) => number; }; }; } +>module : { exports: { [TopLevelSym](x?: number): number; items: { [InnerSym]: (arg?: { x: number; }) => number; }; }; } >exports : { [TopLevelSym](x?: number): number; items: { [InnerSym]: (arg?: { x: number; }) => number; }; } >{ [TopLevelSym](x = 12) { return x; }, items: { [InnerSym]: (arg = {x: 12}) => arg.x }} : { [TopLevelSym](x?: number): number; items: { [InnerSym]: (arg?: { x: number; }) => number; }; } diff --git a/tests/baselines/reference/jsDeclarationsCrossfileMerge.symbols b/tests/baselines/reference/jsDeclarationsCrossfileMerge.symbols index 859c94328a408..5abae5d2f6acd 100644 --- a/tests/baselines/reference/jsDeclarationsCrossfileMerge.symbols +++ b/tests/baselines/reference/jsDeclarationsCrossfileMerge.symbols @@ -5,7 +5,7 @@ const m = require("./exporter"); >"./exporter" : Symbol(m, Decl(exporter.js, 0, 0)) module.exports = m.default; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 0, 32)) >exports : Symbol(export=, Decl(index.js, 0, 32)) >m.default : Symbol(m.default, Decl(exporter.js, 0, 22)) @@ -16,7 +16,7 @@ module.exports.memberName = "thing"; >module.exports.memberName : Symbol(memberName, Decl(index.js, 2, 27)) >module.exports : Symbol(memberName, Decl(index.js, 2, 27)) >module : Symbol(module, Decl(index.js, 0, 32)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >memberName : Symbol(memberName, Decl(index.js, 2, 27)) === tests/cases/conformance/jsdoc/declarations/exporter.js === diff --git a/tests/baselines/reference/jsDeclarationsCrossfileMerge.types b/tests/baselines/reference/jsDeclarationsCrossfileMerge.types index 83e978857ee34..77735e52df0f6 100644 --- a/tests/baselines/reference/jsDeclarationsCrossfileMerge.types +++ b/tests/baselines/reference/jsDeclarationsCrossfileMerge.types @@ -8,7 +8,7 @@ const m = require("./exporter"); module.exports = m.default; >module.exports = m.default : typeof m.default >module.exports : typeof m.default ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof m.default; } +>module : { exports: typeof m.default; } >exports : typeof m.default >m.default : { (): void; memberName: string; } >m : typeof m @@ -18,7 +18,7 @@ module.exports.memberName = "thing"; >module.exports.memberName = "thing" : "thing" >module.exports.memberName : string >module.exports : typeof m.default ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof m.default; } +>module : { exports: typeof m.default; } >exports : typeof m.default >memberName : string >"thing" : "thing" diff --git a/tests/baselines/reference/jsDeclarationsDocCommentsOnConsts.symbols b/tests/baselines/reference/jsDeclarationsDocCommentsOnConsts.symbols index f59770772576f..626e62530cc23 100644 --- a/tests/baselines/reference/jsDeclarationsDocCommentsOnConsts.symbols +++ b/tests/baselines/reference/jsDeclarationsDocCommentsOnConsts.symbols @@ -19,9 +19,9 @@ function b() { } module.exports = {x, b} ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index1", Decl(index1.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index1.js, 0, 0)) >module : Symbol(module, Decl(index1.js, 12, 1)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index1", Decl(index1.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index1.js, 0, 0)) >x : Symbol(x, Decl(index1.js, 14, 18)) >b : Symbol(b, Decl(index1.js, 14, 20)) diff --git a/tests/baselines/reference/jsDeclarationsDocCommentsOnConsts.types b/tests/baselines/reference/jsDeclarationsDocCommentsOnConsts.types index 295015d90f368..77b15177e6e94 100644 --- a/tests/baselines/reference/jsDeclarationsDocCommentsOnConsts.types +++ b/tests/baselines/reference/jsDeclarationsDocCommentsOnConsts.types @@ -23,10 +23,10 @@ function b() { } module.exports = {x, b} ->module.exports = {x, b} : typeof import("tests/cases/conformance/jsdoc/declarations/index1") ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index1") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index1\"": typeof import("tests/cases/conformance/jsdoc/declarations/index1"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index1") +>module.exports = {x, b} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{x, b} : { x: (a: any) => string; b: () => number; } >x : (a: any) => string >b : () => number diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedClassExpression.symbols b/tests/baselines/reference/jsDeclarationsExportAssignedClassExpression.symbols index 3552f73f4a515..dad52ee5af6a2 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedClassExpression.symbols +++ b/tests/baselines/reference/jsDeclarationsExportAssignedClassExpression.symbols @@ -1,6 +1,6 @@ === tests/cases/conformance/jsdoc/declarations/index.js === module.exports = class Thing { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 0, 0)) >exports : Symbol(export=, Decl(index.js, 0, 0)) >Thing : Symbol(Thing, Decl(index.js, 0, 16)) diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedClassExpression.types b/tests/baselines/reference/jsDeclarationsExportAssignedClassExpression.types index 301d4f4adc528..6eceea32fd2a2 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedClassExpression.types +++ b/tests/baselines/reference/jsDeclarationsExportAssignedClassExpression.types @@ -2,7 +2,7 @@ module.exports = class Thing { >module.exports = class Thing { /** * @param {number} p */ constructor(p) { this.t = 12 + p; }} : typeof import("tests/cases/conformance/jsdoc/declarations/index") >module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } +>module : { exports: typeof import("tests/cases/conformance/jsdoc/declarations/index"); } >exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") >class Thing { /** * @param {number} p */ constructor(p) { this.t = 12 + p; }} : typeof import("tests/cases/conformance/jsdoc/declarations/index") >Thing : typeof import("tests/cases/conformance/jsdoc/declarations/index") diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionAnonymous.symbols b/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionAnonymous.symbols index b4d32907ff62f..35d8ed6240f46 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionAnonymous.symbols +++ b/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionAnonymous.symbols @@ -1,6 +1,6 @@ === tests/cases/conformance/jsdoc/declarations/index.js === module.exports = class { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 0, 0)) >exports : Symbol(export=, Decl(index.js, 0, 0)) diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionAnonymous.types b/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionAnonymous.types index dc75cbed876fd..1712ef5170cda 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionAnonymous.types +++ b/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionAnonymous.types @@ -2,7 +2,7 @@ module.exports = class { >module.exports = class { /** * @param {number} p */ constructor(p) { this.t = 12 + p; }} : typeof import("tests/cases/conformance/jsdoc/declarations/index") >module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } +>module : { exports: typeof import("tests/cases/conformance/jsdoc/declarations/index"); } >exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") >class { /** * @param {number} p */ constructor(p) { this.t = 12 + p; }} : typeof import("tests/cases/conformance/jsdoc/declarations/index") diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionAnonymousWithSub.symbols b/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionAnonymousWithSub.symbols index aa5df49712f63..2af24b70c592f 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionAnonymousWithSub.symbols +++ b/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionAnonymousWithSub.symbols @@ -1,6 +1,6 @@ === tests/cases/conformance/jsdoc/declarations/index.js === module.exports = class { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 0, 0)) >exports : Symbol(export=, Decl(index.js, 0, 0)) @@ -21,7 +21,7 @@ module.exports.Sub = class { >module.exports.Sub : Symbol(Sub, Decl(index.js, 7, 1)) >module.exports : Symbol(Sub, Decl(index.js, 7, 1)) >module : Symbol(module, Decl(index.js, 0, 0), Decl(index.js, 10, 27)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >Sub : Symbol(Sub, Decl(index.js, 7, 1)) constructor() { @@ -29,9 +29,9 @@ module.exports.Sub = class { >this.instance : Symbol(Sub.instance, Decl(index.js, 9, 19)) >this : Symbol(Sub, Decl(index.js, 8, 20)) >instance : Symbol(Sub.instance, Decl(index.js, 9, 19)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 0), Decl(index.js, 10, 27)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) } } diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionAnonymousWithSub.types b/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionAnonymousWithSub.types index 904bbe069441a..d5a96c5d90a9c 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionAnonymousWithSub.types +++ b/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionAnonymousWithSub.types @@ -2,7 +2,7 @@ module.exports = class { >module.exports = class { /** * @param {number} p */ constructor(p) { this.t = 12 + p; }} : typeof import("tests/cases/conformance/jsdoc/declarations/index") >module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } +>module : { exports: typeof import("tests/cases/conformance/jsdoc/declarations/index"); } >exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") >class { /** * @param {number} p */ constructor(p) { this.t = 12 + p; }} : typeof import("tests/cases/conformance/jsdoc/declarations/index") @@ -26,7 +26,7 @@ module.exports.Sub = class { >module.exports.Sub = class { constructor() { this.instance = new module.exports(10); }} : typeof Sub >module.exports.Sub : typeof Sub >module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } +>module : { exports: typeof import("tests/cases/conformance/jsdoc/declarations/index"); } >exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") >Sub : typeof Sub >class { constructor() { this.instance = new module.exports(10); }} : typeof Sub @@ -39,7 +39,7 @@ module.exports.Sub = class { >instance : any >new module.exports(10) : import("tests/cases/conformance/jsdoc/declarations/index") >module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } +>module : { exports: typeof import("tests/cases/conformance/jsdoc/declarations/index"); } >exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") >10 : 10 } diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionShadowing.symbols b/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionShadowing.symbols index a911c06ee2ea5..9ca396855371c 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionShadowing.symbols +++ b/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionShadowing.symbols @@ -13,7 +13,7 @@ class Q { >x : Symbol(Q.x, Decl(index.js, 3, 9)) } module.exports = class Q { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 5, 1)) >exports : Symbol(export=, Decl(index.js, 5, 1)) >Q : Symbol(Q, Decl(index.js, 6, 16)) @@ -30,7 +30,7 @@ module.exports.Another = Q; >module.exports.Another : Symbol(Another, Decl(index.js, 10, 1)) >module.exports : Symbol(Another, Decl(index.js, 10, 1)) >module : Symbol(module, Decl(index.js, 5, 1)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >Another : Symbol(Another, Decl(index.js, 10, 1)) >Q : Symbol(Q, Decl(index.js, 2, 1)) diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionShadowing.types b/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionShadowing.types index 36fdb5bfdc4e3..b2f0063ed4f19 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionShadowing.types +++ b/tests/baselines/reference/jsDeclarationsExportAssignedClassExpressionShadowing.types @@ -17,7 +17,7 @@ class Q { module.exports = class Q { >module.exports = class Q { constructor() { this.x = new A(); }} : typeof import("tests/cases/conformance/jsdoc/declarations/index") >module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } +>module : { exports: typeof import("tests/cases/conformance/jsdoc/declarations/index"); } >exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") >class Q { constructor() { this.x = new A(); }} : typeof import("tests/cases/conformance/jsdoc/declarations/index") >Q : typeof import("tests/cases/conformance/jsdoc/declarations/index") @@ -36,7 +36,7 @@ module.exports.Another = Q; >module.exports.Another = Q : typeof Q >module.exports.Another : typeof Q >module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } +>module : { exports: typeof import("tests/cases/conformance/jsdoc/declarations/index"); } >exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") >Another : typeof Q >Q : typeof Q diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance1.symbols b/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance1.symbols index b2812517acfd0..548c12ef22f39 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance1.symbols +++ b/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance1.symbols @@ -3,7 +3,7 @@ class Foo {} >Foo : Symbol(Foo, Decl(index.js, 0, 0)) module.exports = new Foo(); ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 0, 12)) >exports : Symbol(export=, Decl(index.js, 0, 12)) >Foo : Symbol(Foo, Decl(index.js, 0, 0)) diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance1.types b/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance1.types index 868d6e684c6d5..9a14b3a44d9eb 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance1.types +++ b/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance1.types @@ -5,7 +5,7 @@ class Foo {} module.exports = new Foo(); >module.exports = new Foo() : Foo >module.exports : Foo ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": Foo; } +>module : { exports: Foo; } >exports : Foo >new Foo() : Foo >Foo : typeof Foo diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance2.symbols b/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance2.symbols index bf9e5186a9bae..adc1711a2a02e 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance2.symbols +++ b/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance2.symbols @@ -10,7 +10,7 @@ class Foo { } module.exports = new Foo(); ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 3, 1)) >exports : Symbol(export=, Decl(index.js, 3, 1)) >Foo : Symbol(Foo, Decl(index.js, 0, 0)) diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance2.types b/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance2.types index dda0c2e18a9b8..9f2d7f05726c3 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance2.types +++ b/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance2.types @@ -14,7 +14,7 @@ class Foo { module.exports = new Foo(); >module.exports = new Foo() : Foo >module.exports : Foo ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": Foo; } +>module : { exports: Foo; } >exports : Foo >new Foo() : Foo >Foo : typeof Foo diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance3.symbols b/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance3.symbols index 1da8f49afe8d0..fd3de426f08c9 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance3.symbols +++ b/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance3.symbols @@ -10,7 +10,7 @@ class Foo { } module.exports = new Foo(); ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 3, 1)) >exports : Symbol(export=, Decl(index.js, 3, 1)) >Foo : Symbol(Foo, Decl(index.js, 0, 0)) @@ -19,6 +19,6 @@ module.exports.additional = 20; >module.exports.additional : Symbol(additional, Decl(index.js, 5, 27)) >module.exports : Symbol(additional, Decl(index.js, 5, 27)) >module : Symbol(module, Decl(index.js, 3, 1)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >additional : Symbol(additional, Decl(index.js, 5, 27)) diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance3.types b/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance3.types index ee1de06b04e53..ec7ab8a9a3ac6 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance3.types +++ b/tests/baselines/reference/jsDeclarationsExportAssignedClassInstance3.types @@ -14,7 +14,7 @@ class Foo { module.exports = new Foo(); >module.exports = new Foo() : { member: number; additional: number; } >module.exports : { member: number; additional: number; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": { member: number; additional: number; }; } +>module : { exports: { member: number; additional: number; }; } >exports : { member: number; additional: number; } >new Foo() : Foo >Foo : typeof Foo @@ -23,7 +23,7 @@ module.exports.additional = 20; >module.exports.additional = 20 : 20 >module.exports.additional : number >module.exports : { member: number; additional: number; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": { member: number; additional: number; }; } +>module : { exports: { member: number; additional: number; }; } >exports : { member: number; additional: number; } >additional : number >20 : 20 diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunction.symbols b/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunction.symbols index 77c74ae16ecfe..faca3eb2c96b0 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunction.symbols +++ b/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunction.symbols @@ -4,7 +4,7 @@ module.exports.MyClass = function() { >module.exports.MyClass : Symbol(MyClass, Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0), Decl(jsDeclarationsExportAssignedConstructorFunction.js, 4, 15)) >module.exports : Symbol(MyClass, Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0), Decl(jsDeclarationsExportAssignedConstructorFunction.js, 4, 15)) >module : Symbol(module, Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunction", Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0)) +>exports : Symbol(module.exports, Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0)) >MyClass : Symbol(MyClass, Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0), Decl(jsDeclarationsExportAssignedConstructorFunction.js, 4, 15)) this.x = 1 @@ -15,9 +15,9 @@ module.exports.MyClass = function() { module.exports.MyClass.prototype = { >module.exports.MyClass.prototype : Symbol(MyClass.prototype, Decl(jsDeclarationsExportAssignedConstructorFunction.js, 3, 1)) >module.exports.MyClass : Symbol(MyClass, Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0), Decl(jsDeclarationsExportAssignedConstructorFunction.js, 4, 15)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunction", Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0)) >module : Symbol(module, Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunction", Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0)) +>exports : Symbol(module.exports, Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0)) >MyClass : Symbol(MyClass, Decl(jsDeclarationsExportAssignedConstructorFunction.js, 0, 0), Decl(jsDeclarationsExportAssignedConstructorFunction.js, 4, 15)) >prototype : Symbol(MyClass.prototype, Decl(jsDeclarationsExportAssignedConstructorFunction.js, 3, 1)) diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunction.types b/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunction.types index d7f0ad5272155..b79b7229109a3 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunction.types +++ b/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunction.types @@ -3,9 +3,9 @@ module.exports.MyClass = function() { >module.exports.MyClass = function() { this.x = 1} : typeof MyClass >module.exports.MyClass : typeof MyClass ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunction") ->module : { "\"tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunction\"": typeof import("tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunction"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunction") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >MyClass : typeof MyClass >function() { this.x = 1} : typeof MyClass @@ -20,9 +20,9 @@ module.exports.MyClass.prototype = { >module.exports.MyClass.prototype = { a: function() { }} : { a: () => void; } >module.exports.MyClass.prototype : { a: () => void; } >module.exports.MyClass : typeof MyClass ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunction") ->module : { "\"tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunction\"": typeof import("tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunction"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunction") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >MyClass : typeof MyClass >prototype : { a: () => void; } >{ a: function() { }} : { a: () => void; } diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunctionWithSub.symbols b/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunctionWithSub.symbols index 44f5388809448..ffbf6b104ca40 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunctionWithSub.symbols +++ b/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunctionWithSub.symbols @@ -3,7 +3,7 @@ * @param {number} p */ module.exports = function (p) { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunctionWithSub", Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) >module : Symbol(export=, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) >exports : Symbol(export=, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) >p : Symbol(p, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 3, 27)) @@ -18,23 +18,23 @@ module.exports.Sub = function() { >module.exports.Sub : Symbol(Sub, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 5, 1), Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 9, 15)) >module.exports : Symbol(Sub, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 5, 1), Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 9, 15)) >module : Symbol(module, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0), Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 7, 23)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunctionWithSub", Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) +>exports : Symbol(module.exports, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) >Sub : Symbol(Sub, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 5, 1), Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 9, 15)) this.instance = new module.exports(10); >this.instance : Symbol(Sub.instance, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 6, 33)) >this : Symbol(Sub, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 6, 20)) >instance : Symbol(Sub.instance, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 6, 33)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunctionWithSub", Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) >module : Symbol(module, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0), Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 7, 23)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunctionWithSub", Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) +>exports : Symbol(module.exports, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) } module.exports.Sub.prototype = { } >module.exports.Sub.prototype : Symbol(Sub.prototype, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 8, 1)) >module.exports.Sub : Symbol(Sub, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 5, 1), Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 9, 15)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunctionWithSub", Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) >module : Symbol(module, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0), Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 7, 23)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunctionWithSub", Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) +>exports : Symbol(module.exports, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 0, 0)) >Sub : Symbol(Sub, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 5, 1), Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 9, 15)) >prototype : Symbol(Sub.prototype, Decl(jsDeclarationsExportAssignedConstructorFunctionWithSub.js, 8, 1)) diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunctionWithSub.types b/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunctionWithSub.types index ce8f71cd81cfe..86bafadc9089e 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunctionWithSub.types +++ b/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunctionWithSub.types @@ -5,7 +5,7 @@ module.exports = function (p) { >module.exports = function (p) { this.t = 12 + p;} : { (p: number): void; new (p: number): exports; Sub: typeof Sub; } >module.exports : { (p: number): void; new (p: number): exports; Sub: typeof Sub; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunctionWithSub\"": { (p: number): void; new (p: number): exports; Sub: typeof Sub; }; } +>module : { exports: { (p: number): void; new (p: number): exports; Sub: typeof Sub; }; } >exports : { (p: number): void; new (p: number): exports; Sub: typeof Sub; } >function (p) { this.t = 12 + p;} : typeof exports >p : number @@ -23,7 +23,7 @@ module.exports.Sub = function() { >module.exports.Sub = function() { this.instance = new module.exports(10);} : typeof Sub >module.exports.Sub : typeof Sub >module.exports : { (p: number): void; new (p: number): exports; Sub: typeof Sub; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunctionWithSub\"": { (p: number): void; new (p: number): exports; Sub: typeof Sub; }; } +>module : { exports: { (p: number): void; new (p: number): exports; Sub: typeof Sub; }; } >exports : { (p: number): void; new (p: number): exports; Sub: typeof Sub; } >Sub : typeof Sub >function() { this.instance = new module.exports(10);} : typeof Sub @@ -35,7 +35,7 @@ module.exports.Sub = function() { >instance : any >new module.exports(10) : exports >module.exports : { (p: number): void; new (p: number): exports; Sub: typeof Sub; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunctionWithSub\"": { (p: number): void; new (p: number): exports; Sub: typeof Sub; }; } +>module : { exports: { (p: number): void; new (p: number): exports; Sub: typeof Sub; }; } >exports : { (p: number): void; new (p: number): exports; Sub: typeof Sub; } >10 : 10 } @@ -44,7 +44,7 @@ module.exports.Sub.prototype = { } >module.exports.Sub.prototype : {} >module.exports.Sub : typeof Sub >module.exports : { (p: number): void; new (p: number): exports; Sub: typeof Sub; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/jsDeclarationsExportAssignedConstructorFunctionWithSub\"": { (p: number): void; new (p: number): exports; Sub: typeof Sub; }; } +>module : { exports: { (p: number): void; new (p: number): exports; Sub: typeof Sub; }; } >exports : { (p: number): void; new (p: number): exports; Sub: typeof Sub; } >Sub : typeof Sub >prototype : {} diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedVisibility.symbols b/tests/baselines/reference/jsDeclarationsExportAssignedVisibility.symbols index e939df536ffa1..6fb12e0a9ebd3 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedVisibility.symbols +++ b/tests/baselines/reference/jsDeclarationsExportAssignedVisibility.symbols @@ -17,14 +17,14 @@ class Container { } module.exports = Container; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 6, 1)) >exports : Symbol(export=, Decl(index.js, 6, 1)) >Container : Symbol(Container, Decl(index.js, 0, 29)) === tests/cases/conformance/jsdoc/declarations/obj.js === module.exports = class Obj { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/obj", Decl(obj.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(obj.js, 0, 0)) >module : Symbol(export=, Decl(obj.js, 0, 0)) >exports : Symbol(export=, Decl(obj.js, 0, 0)) >Obj : Symbol(Obj, Decl(obj.js, 0, 16)) diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedVisibility.types b/tests/baselines/reference/jsDeclarationsExportAssignedVisibility.types index 179947956bee7..82d2ea30b94ed 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedVisibility.types +++ b/tests/baselines/reference/jsDeclarationsExportAssignedVisibility.types @@ -22,7 +22,7 @@ class Container { module.exports = Container; >module.exports = Container : typeof Container >module.exports : typeof Container ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof Container; } +>module : { exports: typeof Container; } >exports : typeof Container >Container : typeof Container @@ -30,7 +30,7 @@ module.exports = Container; module.exports = class Obj { >module.exports = class Obj { constructor() { this.x = 12; }} : typeof import("tests/cases/conformance/jsdoc/declarations/obj") >module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/obj") ->module : { "\"tests/cases/conformance/jsdoc/declarations/obj\"": typeof import("tests/cases/conformance/jsdoc/declarations/obj"); } +>module : { exports: typeof import("tests/cases/conformance/jsdoc/declarations/obj"); } >exports : typeof import("tests/cases/conformance/jsdoc/declarations/obj") >class Obj { constructor() { this.x = 12; }} : typeof import("tests/cases/conformance/jsdoc/declarations/obj") >Obj : typeof import("tests/cases/conformance/jsdoc/declarations/obj") diff --git a/tests/baselines/reference/jsDeclarationsExportAssignmentExpressionPlusSecondary.symbols b/tests/baselines/reference/jsDeclarationsExportAssignmentExpressionPlusSecondary.symbols index 4d79913433181..b17ccca925be3 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignmentExpressionPlusSecondary.symbols +++ b/tests/baselines/reference/jsDeclarationsExportAssignmentExpressionPlusSecondary.symbols @@ -10,7 +10,7 @@ const Strings = { }; module.exports = { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 3, 2)) >exports : Symbol(export=, Decl(index.js, 3, 2)) @@ -31,7 +31,7 @@ module.exports.Strings = Strings; >module.exports.Strings : Symbol(Strings, Decl(index.js, 10, 2)) >module.exports : Symbol(Strings, Decl(index.js, 10, 2)) >module : Symbol(module, Decl(index.js, 3, 2)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >Strings : Symbol(Strings, Decl(index.js, 10, 2)) >Strings : Symbol(Strings, Decl(index.js, 0, 5)) diff --git a/tests/baselines/reference/jsDeclarationsExportAssignmentExpressionPlusSecondary.types b/tests/baselines/reference/jsDeclarationsExportAssignmentExpressionPlusSecondary.types index 62c5a6dbe0e1f..746706d761f0f 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignmentExpressionPlusSecondary.types +++ b/tests/baselines/reference/jsDeclarationsExportAssignmentExpressionPlusSecondary.types @@ -15,7 +15,7 @@ const Strings = { module.exports = { >module.exports = { thing: "ok", also: "ok", desc: { item: "ok" }} : { thing: string; also: string; desc: { item: string; }; Strings: { a: string; b: string; }; } >module.exports : { thing: string; also: string; desc: { item: string; }; Strings: { a: string; b: string; }; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": { thing: string; also: string; desc: { item: string; }; Strings: { a: string; b: string; }; }; } +>module : { exports: { thing: string; also: string; desc: { item: string; }; Strings: { a: string; b: string; }; }; } >exports : { thing: string; also: string; desc: { item: string; }; Strings: { a: string; b: string; }; } >{ thing: "ok", also: "ok", desc: { item: "ok" }} : { thing: string; also: string; desc: { item: string; }; } @@ -40,7 +40,7 @@ module.exports.Strings = Strings; >module.exports.Strings = Strings : { a: string; b: string; } >module.exports.Strings : { a: string; b: string; } >module.exports : { thing: string; also: string; desc: { item: string; }; Strings: { a: string; b: string; }; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": { thing: string; also: string; desc: { item: string; }; Strings: { a: string; b: string; }; }; } +>module : { exports: { thing: string; also: string; desc: { item: string; }; Strings: { a: string; b: string; }; }; } >exports : { thing: string; also: string; desc: { item: string; }; Strings: { a: string; b: string; }; } >Strings : { a: string; b: string; } >Strings : { a: string; b: string; } diff --git a/tests/baselines/reference/jsDeclarationsExportAssignmentWithKeywordName.symbols b/tests/baselines/reference/jsDeclarationsExportAssignmentWithKeywordName.symbols index 182a64ba32f7c..663302c925b27 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignmentWithKeywordName.symbols +++ b/tests/baselines/reference/jsDeclarationsExportAssignmentWithKeywordName.symbols @@ -3,7 +3,7 @@ var x = 12; >x : Symbol(x, Decl(index.js, 0, 3)) module.exports = { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 0, 11)) >exports : Symbol(export=, Decl(index.js, 0, 11)) diff --git a/tests/baselines/reference/jsDeclarationsExportAssignmentWithKeywordName.types b/tests/baselines/reference/jsDeclarationsExportAssignmentWithKeywordName.types index f482fa6f2eb46..58970a4491bfc 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignmentWithKeywordName.types +++ b/tests/baselines/reference/jsDeclarationsExportAssignmentWithKeywordName.types @@ -6,7 +6,7 @@ var x = 12; module.exports = { >module.exports = { extends: 'base', more: { others: ['strs'] }, x} : { extends: string; more: { others: string[]; }; x: number; } >module.exports : { extends: string; more: { others: string[]; }; x: number; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": { extends: string; more: { others: string[]; }; x: number; }; } +>module : { exports: { extends: string; more: { others: string[]; }; x: number; }; } >exports : { extends: string; more: { others: string[]; }; x: number; } >{ extends: 'base', more: { others: ['strs'] }, x} : { extends: string; more: { others: string[]; }; x: number; } diff --git a/tests/baselines/reference/jsDeclarationsExportDefinePropertyEmit.symbols b/tests/baselines/reference/jsDeclarationsExportDefinePropertyEmit.symbols index 03cf1ce41b5e0..e61546206e1c7 100644 --- a/tests/baselines/reference/jsDeclarationsExportDefinePropertyEmit.symbols +++ b/tests/baselines/reference/jsDeclarationsExportDefinePropertyEmit.symbols @@ -3,9 +3,9 @@ Object.defineProperty(module.exports, "a", { value: function a() {} }); >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 22), Decl(index.js, 31, 56), Decl(index.js, 53, 52), Decl(index.js, 56, 52)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >"a" : Symbol(a, Decl(index.js, 0, 0)) >value : Symbol(value, Decl(index.js, 0, 44)) >a : Symbol(a, Decl(index.js, 0, 51)) @@ -14,9 +14,9 @@ Object.defineProperty(module.exports, "b", { value: function b() {} }); >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 22), Decl(index.js, 31, 56), Decl(index.js, 53, 52), Decl(index.js, 56, 52)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >"b" : Symbol(b, Decl(index.js, 0, 71), Decl(index.js, 3, 37)) >value : Symbol(value, Decl(index.js, 2, 44)) >b : Symbol(b, Decl(index.js, 2, 51)) @@ -26,9 +26,9 @@ Object.defineProperty(module.exports.b, "cat", { value: "cat" }); >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >module.exports.b : Symbol(b, Decl(index.js, 0, 71), Decl(index.js, 3, 37)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 22), Decl(index.js, 31, 56), Decl(index.js, 53, 52), Decl(index.js, 56, 52)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >b : Symbol(b, Decl(index.js, 0, 71), Decl(index.js, 3, 37)) >"cat" : Symbol(b.cat, Decl(index.js, 2, 71)) >value : Symbol(value, Decl(index.js, 3, 48)) @@ -47,9 +47,9 @@ Object.defineProperty(module.exports, "d", { value: d }); >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 22), Decl(index.js, 31, 56), Decl(index.js, 53, 52), Decl(index.js, 56, 52)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >"d" : Symbol(d, Decl(index.js, 10, 51)) >value : Symbol(value, Decl(index.js, 11, 44)) >d : Symbol(d, Decl(index.js, 3, 65)) @@ -70,9 +70,9 @@ Object.defineProperty(module.exports, "e", { value: e }); >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 22), Decl(index.js, 31, 56), Decl(index.js, 53, 52), Decl(index.js, 56, 52)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >"e" : Symbol(e, Decl(index.js, 20, 51)) >value : Symbol(value, Decl(index.js, 21, 44)) >e : Symbol(e, Decl(index.js, 11, 57)) @@ -92,9 +92,9 @@ Object.defineProperty(module.exports, "f", { value: f }); >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 22), Decl(index.js, 31, 56), Decl(index.js, 53, 52), Decl(index.js, 56, 52)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >"f" : Symbol(f, Decl(index.js, 29, 1), Decl(index.js, 31, 37)) >value : Symbol(value, Decl(index.js, 30, 44)) >f : Symbol(f, Decl(index.js, 21, 57)) @@ -104,16 +104,16 @@ Object.defineProperty(module.exports.f, "self", { value: module.exports.f }); >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >module.exports.f : Symbol(f, Decl(index.js, 29, 1), Decl(index.js, 31, 37)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 22), Decl(index.js, 31, 56), Decl(index.js, 53, 52), Decl(index.js, 56, 52)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >f : Symbol(f, Decl(index.js, 29, 1), Decl(index.js, 31, 37)) >"self" : Symbol(f.self, Decl(index.js, 30, 57)) >value : Symbol(value, Decl(index.js, 31, 49)) >module.exports.f : Symbol(f, Decl(index.js, 29, 1), Decl(index.js, 31, 37)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 22), Decl(index.js, 31, 56), Decl(index.js, 53, 52), Decl(index.js, 56, 52)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >f : Symbol(f, Decl(index.js, 29, 1), Decl(index.js, 31, 37)) /** @@ -137,9 +137,9 @@ Object.defineProperty(module.exports, "g", { value: g }); >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 22), Decl(index.js, 31, 56), Decl(index.js, 53, 52), Decl(index.js, 56, 52)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >"g" : Symbol(g, Decl(index.js, 39, 1)) >value : Symbol(value, Decl(index.js, 40, 44)) >g : Symbol(g, Decl(index.js, 31, 77)) @@ -166,9 +166,9 @@ Object.defineProperty(module.exports, "h", { value: hh }); >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 22), Decl(index.js, 31, 56), Decl(index.js, 53, 52), Decl(index.js, 56, 52)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >"h" : Symbol(h, Decl(index.js, 49, 1)) >value : Symbol(value, Decl(index.js, 50, 44)) >hh : Symbol(hh, Decl(index.js, 40, 57)) @@ -177,9 +177,9 @@ Object.defineProperty(module.exports, "i", { value: function i(){} }); >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 22), Decl(index.js, 31, 56), Decl(index.js, 53, 52), Decl(index.js, 56, 52)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >"i" : Symbol(i, Decl(index.js, 50, 58)) >value : Symbol(value, Decl(index.js, 52, 44)) >i : Symbol(i, Decl(index.js, 52, 51)) @@ -188,15 +188,15 @@ Object.defineProperty(module.exports, "ii", { value: module.exports.i }); >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 22), Decl(index.js, 31, 56), Decl(index.js, 53, 52), Decl(index.js, 56, 52)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >"ii" : Symbol(ii, Decl(index.js, 52, 70)) >value : Symbol(value, Decl(index.js, 53, 45)) >module.exports.i : Symbol(i, Decl(index.js, 50, 58)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 22), Decl(index.js, 31, 56), Decl(index.js, 53, 52), Decl(index.js, 56, 52)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >i : Symbol(i, Decl(index.js, 50, 58)) // note that this last one doesn't make much sense in cjs, since exports aren't hoisted bindings @@ -204,24 +204,24 @@ Object.defineProperty(module.exports, "jj", { value: module.exports.j }); >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 22), Decl(index.js, 31, 56), Decl(index.js, 53, 52), Decl(index.js, 56, 52)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >"jj" : Symbol(jj, Decl(index.js, 53, 73)) >value : Symbol(value, Decl(index.js, 56, 45)) >module.exports.j : Symbol(j, Decl(index.js, 56, 73)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 22), Decl(index.js, 31, 56), Decl(index.js, 53, 52), Decl(index.js, 56, 52)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >j : Symbol(j, Decl(index.js, 56, 73)) Object.defineProperty(module.exports, "j", { value: function j() {} }); >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 22), Decl(index.js, 31, 56), Decl(index.js, 53, 52), Decl(index.js, 56, 52)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >"j" : Symbol(j, Decl(index.js, 56, 73)) >value : Symbol(value, Decl(index.js, 57, 44)) >j : Symbol(j, Decl(index.js, 57, 51)) diff --git a/tests/baselines/reference/jsDeclarationsExportDefinePropertyEmit.types b/tests/baselines/reference/jsDeclarationsExportDefinePropertyEmit.types index 9328ad0feec6e..ca0f272f55a52 100644 --- a/tests/baselines/reference/jsDeclarationsExportDefinePropertyEmit.types +++ b/tests/baselines/reference/jsDeclarationsExportDefinePropertyEmit.types @@ -4,9 +4,9 @@ Object.defineProperty(module.exports, "a", { value: function a() {} }); >Object.defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >"a" : "a" >{ value: function a() {} } : { value: () => void; } >value : () => void @@ -18,9 +18,9 @@ Object.defineProperty(module.exports, "b", { value: function b() {} }); >Object.defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >"b" : "b" >{ value: function b() {} } : { value: () => void; } >value : () => void @@ -33,9 +33,9 @@ Object.defineProperty(module.exports.b, "cat", { value: "cat" }); >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >module.exports.b : () => void ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >b : () => void >"cat" : "cat" >{ value: "cat" } : { value: string; } @@ -59,9 +59,9 @@ Object.defineProperty(module.exports, "d", { value: d }); >Object.defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >"d" : "d" >{ value: d } : { value: (a: number, b: number) => string; } >value : (a: number, b: number) => string @@ -86,9 +86,9 @@ Object.defineProperty(module.exports, "e", { value: e }); >Object.defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >"e" : "e" >{ value: e } : { value: (a: T, b: U) => T & U; } >value : (a: T, b: U) => T & U @@ -110,9 +110,9 @@ Object.defineProperty(module.exports, "f", { value: f }); >Object.defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >"f" : "f" >{ value: f } : { value: (a: T) => T; } >value : (a: T) => T @@ -124,17 +124,17 @@ Object.defineProperty(module.exports.f, "self", { value: module.exports.f }); >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >module.exports.f : (a: T) => T ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >f : (a: T) => T >"self" : "self" >{ value: module.exports.f } : { value: (a: T) => T; } >value : (a: T) => T >module.exports.f : (a: T) => T ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >f : (a: T) => T /** @@ -161,9 +161,9 @@ Object.defineProperty(module.exports, "g", { value: g }); >Object.defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >"g" : "g" >{ value: g } : { value: (a: { x: string; }, b: { y: () => void; }) => void; } >value : (a: { x: string; }, b: { y: () => void; }) => void @@ -194,9 +194,9 @@ Object.defineProperty(module.exports, "h", { value: hh }); >Object.defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >"h" : "h" >{ value: hh } : { value: (a: { x: string; }, b: { y: () => void; }) => void; } >value : (a: { x: string; }, b: { y: () => void; }) => void @@ -207,9 +207,9 @@ Object.defineProperty(module.exports, "i", { value: function i(){} }); >Object.defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >"i" : "i" >{ value: function i(){} } : { value: () => void; } >value : () => void @@ -221,16 +221,16 @@ Object.defineProperty(module.exports, "ii", { value: module.exports.i }); >Object.defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >"ii" : "ii" >{ value: module.exports.i } : { value: () => void; } >value : () => void >module.exports.i : () => void ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >i : () => void // note that this last one doesn't make much sense in cjs, since exports aren't hoisted bindings @@ -239,16 +239,16 @@ Object.defineProperty(module.exports, "jj", { value: module.exports.j }); >Object.defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >"jj" : "jj" >{ value: module.exports.j } : { value: () => void; } >value : () => void >module.exports.j : () => void ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >j : () => void Object.defineProperty(module.exports, "j", { value: function j() {} }); @@ -256,9 +256,9 @@ Object.defineProperty(module.exports, "j", { value: function j() {} }); >Object.defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >"j" : "j" >{ value: function j() {} } : { value: () => void; } >value : () => void diff --git a/tests/baselines/reference/jsDeclarationsExportDoubleAssignmentInClosure.symbols b/tests/baselines/reference/jsDeclarationsExportDoubleAssignmentInClosure.symbols index 27d5ca6f16f57..ff53604acc823 100644 --- a/tests/baselines/reference/jsDeclarationsExportDoubleAssignmentInClosure.symbols +++ b/tests/baselines/reference/jsDeclarationsExportDoubleAssignmentInClosure.symbols @@ -4,7 +4,7 @@ function foo() { >foo : Symbol(foo, Decl(index.js, 0, 0)) module.exports = exports = function (o) { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 1, 16)) >exports : Symbol(export=, Decl(index.js, 1, 16)) >exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) diff --git a/tests/baselines/reference/jsDeclarationsExportDoubleAssignmentInClosure.types b/tests/baselines/reference/jsDeclarationsExportDoubleAssignmentInClosure.types index dab4aaf35fcf0..10a3aa89276df 100644 --- a/tests/baselines/reference/jsDeclarationsExportDoubleAssignmentInClosure.types +++ b/tests/baselines/reference/jsDeclarationsExportDoubleAssignmentInClosure.types @@ -4,10 +4,10 @@ function foo() { >foo : () => void module.exports = exports = function (o) { ->module.exports = exports = function (o) { return (o == null) ? create(base) : defineProperties(Object(o), descriptors); } : any ->module.exports : any ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": any; } ->exports : any +>module.exports = exports = function (o) { return (o == null) ? create(base) : defineProperties(Object(o), descriptors); } : { (o: any): any; methods: () => void; } +>module.exports : { (o: any): any; methods: () => void; } +>module : { exports: { (o: any): any; methods: () => void; }; } +>exports : { (o: any): any; methods: () => void; } >exports = function (o) { return (o == null) ? create(base) : defineProperties(Object(o), descriptors); } : (o: any) => any >exports : any >function (o) { return (o == null) ? create(base) : defineProperties(Object(o), descriptors); } : (o: any) => any diff --git a/tests/baselines/reference/jsDeclarationsExportForms.symbols b/tests/baselines/reference/jsDeclarationsExportForms.symbols index 9196d1c8a2917..4232aa53158ce 100644 --- a/tests/baselines/reference/jsDeclarationsExportForms.symbols +++ b/tests/baselines/reference/jsDeclarationsExportForms.symbols @@ -49,9 +49,9 @@ const ns = require("./cls"); >"./cls" : Symbol(ns, Decl(cls.js, 0, 0)) module.exports = { ns }; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/cjs", Decl(cjs.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(cjs.js, 0, 0)) >module : Symbol(module, Decl(cjs.js, 0, 28)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/cjs", Decl(cjs.js, 0, 0)) +>exports : Symbol(module.exports, Decl(cjs.js, 0, 0)) >ns : Symbol(ns, Decl(cjs.js, 1, 18)) === tests/cases/conformance/jsdoc/declarations/cjs2.js === @@ -61,7 +61,7 @@ const ns = require("./cls"); >"./cls" : Symbol(ns, Decl(cls.js, 0, 0)) module.exports = ns; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/cjs2", Decl(cjs2.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(cjs2.js, 0, 0)) >module : Symbol(export=, Decl(cjs2.js, 0, 28)) >exports : Symbol(export=, Decl(cjs2.js, 0, 28)) >ns : Symbol(ns, Decl(cjs2.js, 0, 5)) @@ -76,7 +76,7 @@ module.exports.ns = ns; >module.exports.ns : Symbol(ns, Decl(cjs3.js, 0, 28)) >module.exports : Symbol(ns, Decl(cjs3.js, 0, 28)) >module : Symbol(module, Decl(cjs3.js, 0, 28)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/cjs3", Decl(cjs3.js, 0, 0)) +>exports : Symbol(module.exports, Decl(cjs3.js, 0, 0)) >ns : Symbol(ns, Decl(cjs3.js, 0, 28)) >ns : Symbol(ns, Decl(cjs3.js, 0, 5)) @@ -90,7 +90,7 @@ module.exports.names = ns; >module.exports.names : Symbol(names, Decl(cjs4.js, 0, 28)) >module.exports : Symbol(names, Decl(cjs4.js, 0, 28)) >module : Symbol(module, Decl(cjs4.js, 0, 28)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/cjs4", Decl(cjs4.js, 0, 0)) +>exports : Symbol(module.exports, Decl(cjs4.js, 0, 0)) >names : Symbol(names, Decl(cjs4.js, 0, 28)) >ns : Symbol(ns, Decl(cjs4.js, 0, 5)) diff --git a/tests/baselines/reference/jsDeclarationsExportForms.types b/tests/baselines/reference/jsDeclarationsExportForms.types index 301ebc7733155..910f991ef4060 100644 --- a/tests/baselines/reference/jsDeclarationsExportForms.types +++ b/tests/baselines/reference/jsDeclarationsExportForms.types @@ -50,10 +50,10 @@ const ns = require("./cls"); >"./cls" : "./cls" module.exports = { ns }; ->module.exports = { ns } : typeof import("tests/cases/conformance/jsdoc/declarations/cjs") ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/cjs") ->module : { "\"tests/cases/conformance/jsdoc/declarations/cjs\"": typeof import("tests/cases/conformance/jsdoc/declarations/cjs"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/cjs") +>module.exports = { ns } : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{ ns } : { ns: typeof ns; } >ns : typeof ns @@ -67,7 +67,7 @@ const ns = require("./cls"); module.exports = ns; >module.exports = ns : typeof ns >module.exports : typeof ns ->module : { "\"tests/cases/conformance/jsdoc/declarations/cjs2\"": typeof ns; } +>module : { exports: typeof ns; } >exports : typeof ns >ns : typeof ns @@ -81,9 +81,9 @@ const ns = require("./cls"); module.exports.ns = ns; >module.exports.ns = ns : typeof ns >module.exports.ns : typeof ns ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/cjs3") ->module : { "\"tests/cases/conformance/jsdoc/declarations/cjs3\"": typeof import("tests/cases/conformance/jsdoc/declarations/cjs3"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/cjs3") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >ns : typeof ns >ns : typeof ns @@ -97,9 +97,9 @@ const ns = require("./cls"); module.exports.names = ns; >module.exports.names = ns : typeof ns >module.exports.names : typeof ns ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/cjs4") ->module : { "\"tests/cases/conformance/jsdoc/declarations/cjs4\"": typeof import("tests/cases/conformance/jsdoc/declarations/cjs4"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/cjs4") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >names : typeof ns >ns : typeof ns diff --git a/tests/baselines/reference/jsDeclarationsExportSubAssignments.symbols b/tests/baselines/reference/jsDeclarationsExportSubAssignments.symbols index 5939221ce90d0..ab78b88d4c67c 100644 --- a/tests/baselines/reference/jsDeclarationsExportSubAssignments.symbols +++ b/tests/baselines/reference/jsDeclarationsExportSubAssignments.symbols @@ -13,7 +13,7 @@ class Foo {} >Foo : Symbol(Foo, Decl(cls.js, 3, 2)) module.exports = Foo; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/cls", Decl(cls.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(cls.js, 0, 0)) >module : Symbol(export=, Decl(cls.js, 4, 12)) >exports : Symbol(export=, Decl(cls.js, 4, 12)) >Foo : Symbol(Foo, Decl(cls.js, 3, 2)) @@ -22,7 +22,7 @@ module.exports.Strings = Strings; >module.exports.Strings : Symbol(Strings, Decl(cls.js, 5, 21)) >module.exports : Symbol(Strings, Decl(cls.js, 5, 21)) >module : Symbol(module, Decl(cls.js, 4, 12)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/cls", Decl(cls.js, 0, 0)) +>exports : Symbol(module.exports, Decl(cls.js, 0, 0)) >Strings : Symbol(Strings, Decl(cls.js, 5, 21)) >Strings : Symbol(Strings, Decl(cls.js, 0, 5)) diff --git a/tests/baselines/reference/jsDeclarationsExportSubAssignments.types b/tests/baselines/reference/jsDeclarationsExportSubAssignments.types index 7e00db8d97bb6..21fdde314e8cd 100644 --- a/tests/baselines/reference/jsDeclarationsExportSubAssignments.types +++ b/tests/baselines/reference/jsDeclarationsExportSubAssignments.types @@ -18,7 +18,7 @@ class Foo {} module.exports = Foo; >module.exports = Foo : typeof Foo >module.exports : typeof Foo ->module : { "\"tests/cases/conformance/jsdoc/declarations/cls\"": typeof Foo; } +>module : { exports: typeof Foo; } >exports : typeof Foo >Foo : typeof Foo @@ -26,7 +26,7 @@ module.exports.Strings = Strings; >module.exports.Strings = Strings : { a: string; b: string; } >module.exports.Strings : { a: string; b: string; } >module.exports : typeof Foo ->module : { "\"tests/cases/conformance/jsdoc/declarations/cls\"": typeof Foo; } +>module : { exports: typeof Foo; } >exports : typeof Foo >Strings : { a: string; b: string; } >Strings : { a: string; b: string; } diff --git a/tests/baselines/reference/jsDeclarationsExportedClassAliases.symbols b/tests/baselines/reference/jsDeclarationsExportedClassAliases.symbols index c6275c8b5af8d..3c3eb7bd4afda 100644 --- a/tests/baselines/reference/jsDeclarationsExportedClassAliases.symbols +++ b/tests/baselines/reference/jsDeclarationsExportedClassAliases.symbols @@ -6,9 +6,9 @@ const errors = require("./errors"); >"./errors" : Symbol(errors, Decl(errors.js, 0, 0)) module.exports = { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/utils/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 1, 35)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/utils/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) errors >errors : Symbol(errors, Decl(index.js, 3, 18)) @@ -29,9 +29,9 @@ class FancyError extends Error { } module.exports = { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/utils/errors", Decl(errors.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(errors.js, 0, 0)) >module : Symbol(module, Decl(errors.js, 4, 1)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/utils/errors", Decl(errors.js, 0, 0)) +>exports : Symbol(module.exports, Decl(errors.js, 0, 0)) FancyError >FancyError : Symbol(FancyError, Decl(errors.js, 6, 18)) diff --git a/tests/baselines/reference/jsDeclarationsExportedClassAliases.types b/tests/baselines/reference/jsDeclarationsExportedClassAliases.types index 9a2369a46c07f..d30166f32f582 100644 --- a/tests/baselines/reference/jsDeclarationsExportedClassAliases.types +++ b/tests/baselines/reference/jsDeclarationsExportedClassAliases.types @@ -7,10 +7,10 @@ const errors = require("./errors"); >"./errors" : "./errors" module.exports = { ->module.exports = { errors} : typeof import("tests/cases/conformance/jsdoc/declarations/utils/index") ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/utils/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/utils/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/utils/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/utils/index") +>module.exports = { errors} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{ errors} : { errors: typeof errors; } errors @@ -28,16 +28,16 @@ class FancyError extends Error { super(`error with status ${status}`); >super(`error with status ${status}`) : void >super : ErrorConstructor ->`error with status ${status}` : `error with status ${any}` +>`error with status ${status}` : string >status : any } } module.exports = { ->module.exports = { FancyError} : typeof import("tests/cases/conformance/jsdoc/declarations/utils/errors") ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/utils/errors") ->module : { "\"tests/cases/conformance/jsdoc/declarations/utils/errors\"": typeof import("tests/cases/conformance/jsdoc/declarations/utils/errors"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/utils/errors") +>module.exports = { FancyError} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{ FancyError} : { FancyError: typeof FancyError; } FancyError diff --git a/tests/baselines/reference/jsDeclarationsFunctionClassesCjsExportAssignment.symbols b/tests/baselines/reference/jsDeclarationsFunctionClassesCjsExportAssignment.symbols index d667f9d0cc2cd..8ec88e75f402b 100644 --- a/tests/baselines/reference/jsDeclarationsFunctionClassesCjsExportAssignment.symbols +++ b/tests/baselines/reference/jsDeclarationsFunctionClassesCjsExportAssignment.symbols @@ -13,7 +13,7 @@ function Timer(timeout) { >timeout : Symbol(timeout, Decl(timer.js, 3, 15)) } module.exports = Timer; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/timer", Decl(timer.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(timer.js, 0, 0)) >module : Symbol(export=, Decl(timer.js, 5, 1)) >exports : Symbol(export=, Decl(timer.js, 5, 1)) >Timer : Symbol(Timer, Decl(timer.js, 0, 0)) @@ -36,7 +36,7 @@ function Hook(handle) { >handle : Symbol(handle, Decl(hook.js, 6, 14)) } module.exports = Hook; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/hook", Decl(hook.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(hook.js, 0, 0)) >module : Symbol(export=, Decl(hook.js, 8, 1)) >exports : Symbol(export=, Decl(hook.js, 8, 1)) >Hook : Symbol(Hook, Decl(hook.js, 0, 0)) @@ -112,7 +112,7 @@ Context.prototype = { } } module.exports = Context; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/context", Decl(context.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(context.js, 0, 0)) >module : Symbol(export=, Decl(context.js, 46, 1)) >exports : Symbol(export=, Decl(context.js, 46, 1)) >Context : Symbol(Context, Decl(context.js, 0, 0), Decl(context.js, 36, 1)) diff --git a/tests/baselines/reference/jsDeclarationsFunctionClassesCjsExportAssignment.types b/tests/baselines/reference/jsDeclarationsFunctionClassesCjsExportAssignment.types index 3beb66f5ba90f..c854b1514aa23 100644 --- a/tests/baselines/reference/jsDeclarationsFunctionClassesCjsExportAssignment.types +++ b/tests/baselines/reference/jsDeclarationsFunctionClassesCjsExportAssignment.types @@ -16,7 +16,7 @@ function Timer(timeout) { module.exports = Timer; >module.exports = Timer : typeof Timer >module.exports : typeof Timer ->module : { "\"tests/cases/conformance/jsdoc/declarations/timer\"": typeof Timer; } +>module : { exports: typeof Timer; } >exports : typeof Timer >Timer : typeof Timer @@ -41,7 +41,7 @@ function Hook(handle) { module.exports = Hook; >module.exports = Hook : typeof Hook >module.exports : typeof Hook ->module : { "\"tests/cases/conformance/jsdoc/declarations/hook\"": typeof Hook; } +>module : { exports: typeof Hook; } >exports : typeof Hook >Hook : typeof Hook @@ -131,7 +131,7 @@ Context.prototype = { module.exports = Context; >module.exports = Context : { (input: Input): Context; new (input: Input): Context; prototype: { construct(input: Input, handle?: import("tests/cases/conformance/jsdoc/declarations/hook").HookHandler): State; }; } >module.exports : { (input: Input): Context; new (input: Input): Context; prototype: { construct(input: Input, handle?: import("tests/cases/conformance/jsdoc/declarations/hook").HookHandler): State; }; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/context\"": { (input: Input): Context; new (input: Input): Context; prototype: { construct(input: Input, handle?: import("tests/cases/conformance/jsdoc/declarations/hook").HookHandler): State; }; }; } +>module : { exports: { (input: Input): Context; new (input: Input): Context; prototype: { construct(input: Input, handle?: import("tests/cases/conformance/jsdoc/declarations/hook").HookHandler): State; }; }; } >exports : { (input: Input): Context; new (input: Input): Context; prototype: { construct(input: Input, handle?: import("tests/cases/conformance/jsdoc/declarations/hook").HookHandler): State; }; } >Context : typeof Context diff --git a/tests/baselines/reference/jsDeclarationsFunctionPrototypeStatic.symbols b/tests/baselines/reference/jsDeclarationsFunctionPrototypeStatic.symbols index 7618a933e7de9..8ceb0aeeebdd1 100644 --- a/tests/baselines/reference/jsDeclarationsFunctionPrototypeStatic.symbols +++ b/tests/baselines/reference/jsDeclarationsFunctionPrototypeStatic.symbols @@ -1,6 +1,6 @@ === tests/cases/conformance/jsdoc/declarations/source.js === module.exports = MyClass; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/source", Decl(source.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(source.js, 0, 0)) >module : Symbol(export=, Decl(source.js, 0, 0)) >exports : Symbol(export=, Decl(source.js, 0, 0)) >MyClass : Symbol(MyClass, Decl(source.js, 0, 25), Decl(source.js, 2, 21), Decl(source.js, 4, 40)) diff --git a/tests/baselines/reference/jsDeclarationsFunctionPrototypeStatic.types b/tests/baselines/reference/jsDeclarationsFunctionPrototypeStatic.types index 318cf0b2dca4d..c068755f0839c 100644 --- a/tests/baselines/reference/jsDeclarationsFunctionPrototypeStatic.types +++ b/tests/baselines/reference/jsDeclarationsFunctionPrototypeStatic.types @@ -2,7 +2,7 @@ module.exports = MyClass; >module.exports = MyClass : typeof MyClass >module.exports : typeof MyClass ->module : { "\"tests/cases/conformance/jsdoc/declarations/source\"": typeof MyClass; } +>module : { exports: typeof MyClass; } >exports : typeof MyClass >MyClass : typeof MyClass diff --git a/tests/baselines/reference/jsDeclarationsFunctionWithDefaultAssignedMember.symbols b/tests/baselines/reference/jsDeclarationsFunctionWithDefaultAssignedMember.symbols index fa5211a26e117..e3398661b140f 100644 --- a/tests/baselines/reference/jsDeclarationsFunctionWithDefaultAssignedMember.symbols +++ b/tests/baselines/reference/jsDeclarationsFunctionWithDefaultAssignedMember.symbols @@ -15,7 +15,7 @@ foo.default = foo; >foo : Symbol(foo, Decl(index.js, 0, 0), Decl(index.js, 0, 17), Decl(index.js, 2, 14)) module.exports = foo; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 3, 18)) >exports : Symbol(export=, Decl(index.js, 3, 18)) >foo : Symbol(foo, Decl(index.js, 0, 0), Decl(index.js, 0, 17), Decl(index.js, 2, 14)) diff --git a/tests/baselines/reference/jsDeclarationsFunctionWithDefaultAssignedMember.types b/tests/baselines/reference/jsDeclarationsFunctionWithDefaultAssignedMember.types index 00203c61f0e6c..231acbaf88735 100644 --- a/tests/baselines/reference/jsDeclarationsFunctionWithDefaultAssignedMember.types +++ b/tests/baselines/reference/jsDeclarationsFunctionWithDefaultAssignedMember.types @@ -19,7 +19,7 @@ foo.default = foo; module.exports = foo; >module.exports = foo : typeof foo >module.exports : typeof foo ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof foo; } +>module : { exports: typeof foo; } >exports : typeof foo >foo : typeof foo diff --git a/tests/baselines/reference/jsDeclarationsFunctionsCjs.symbols b/tests/baselines/reference/jsDeclarationsFunctionsCjs.symbols index b900de3c1f076..237e2f981ca2f 100644 --- a/tests/baselines/reference/jsDeclarationsFunctionsCjs.symbols +++ b/tests/baselines/reference/jsDeclarationsFunctionsCjs.symbols @@ -3,7 +3,7 @@ module.exports.a = function a() {} >module.exports.a : Symbol(a, Decl(index.js, 0, 0)) >module.exports : Symbol(a, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >a : Symbol(a, Decl(index.js, 0, 0)) >a : Symbol(a, Decl(index.js, 0, 18)) @@ -11,16 +11,16 @@ module.exports.b = function b() {} >module.exports.b : Symbol(b, Decl(index.js, 0, 34), Decl(index.js, 3, 15)) >module.exports : Symbol(b, Decl(index.js, 0, 34), Decl(index.js, 3, 15)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >b : Symbol(b, Decl(index.js, 0, 34), Decl(index.js, 3, 15)) >b : Symbol(b, Decl(index.js, 2, 18)) module.exports.b.cat = "cat"; >module.exports.b.cat : Symbol(b.cat, Decl(index.js, 2, 34)) >module.exports.b : Symbol(b.cat, Decl(index.js, 2, 34)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >b : Symbol(b, Decl(index.js, 0, 34), Decl(index.js, 3, 15)) >cat : Symbol(b.cat, Decl(index.js, 2, 34)) @@ -28,16 +28,16 @@ module.exports.c = function c() {} >module.exports.c : Symbol(c, Decl(index.js, 3, 29), Decl(index.js, 6, 15)) >module.exports : Symbol(c, Decl(index.js, 3, 29), Decl(index.js, 6, 15)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >c : Symbol(c, Decl(index.js, 3, 29), Decl(index.js, 6, 15)) >c : Symbol(c, Decl(index.js, 5, 18)) module.exports.c.Cls = class {} >module.exports.c.Cls : Symbol(c.Cls, Decl(index.js, 5, 34)) >module.exports.c : Symbol(c.Cls, Decl(index.js, 5, 34)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >c : Symbol(c, Decl(index.js, 3, 29), Decl(index.js, 6, 15)) >Cls : Symbol(c.Cls, Decl(index.js, 5, 34)) @@ -50,7 +50,7 @@ module.exports.d = function d(a, b) { return /** @type {*} */(null); } >module.exports.d : Symbol(d, Decl(index.js, 6, 31)) >module.exports : Symbol(d, Decl(index.js, 6, 31)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >d : Symbol(d, Decl(index.js, 6, 31)) >d : Symbol(d, Decl(index.js, 13, 18)) >a : Symbol(a, Decl(index.js, 13, 30)) @@ -66,7 +66,7 @@ module.exports.e = function e(a, b) { return /** @type {*} */(null); } >module.exports.e : Symbol(e, Decl(index.js, 13, 70)) >module.exports : Symbol(e, Decl(index.js, 13, 70)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >e : Symbol(e, Decl(index.js, 13, 70)) >e : Symbol(e, Decl(index.js, 21, 18)) >a : Symbol(a, Decl(index.js, 21, 30)) @@ -80,7 +80,7 @@ module.exports.f = function f(a) { >module.exports.f : Symbol(f, Decl(index.js, 21, 70), Decl(index.js, 30, 15)) >module.exports : Symbol(f, Decl(index.js, 21, 70), Decl(index.js, 30, 15)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >f : Symbol(f, Decl(index.js, 21, 70), Decl(index.js, 30, 15)) >f : Symbol(f, Decl(index.js, 27, 18)) >a : Symbol(a, Decl(index.js, 27, 30)) @@ -91,15 +91,15 @@ module.exports.f = function f(a) { module.exports.f.self = module.exports.f; >module.exports.f.self : Symbol(f.self, Decl(index.js, 29, 1)) >module.exports.f : Symbol(f.self, Decl(index.js, 29, 1)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >f : Symbol(f, Decl(index.js, 21, 70), Decl(index.js, 30, 15)) >self : Symbol(f.self, Decl(index.js, 29, 1)) >module.exports.f : Symbol(f, Decl(index.js, 21, 70), Decl(index.js, 30, 15)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >f : Symbol(f, Decl(index.js, 21, 70), Decl(index.js, 30, 15)) /** @@ -124,7 +124,7 @@ module.exports.g = g; >module.exports.g : Symbol(g, Decl(index.js, 38, 1)) >module.exports : Symbol(g, Decl(index.js, 38, 1)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >g : Symbol(g, Decl(index.js, 38, 1)) >g : Symbol(g, Decl(index.js, 30, 41)) @@ -150,7 +150,7 @@ module.exports.h = hh; >module.exports.h : Symbol(h, Decl(index.js, 48, 1)) >module.exports : Symbol(h, Decl(index.js, 48, 1)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >h : Symbol(h, Decl(index.js, 48, 1)) >hh : Symbol(hh, Decl(index.js, 40, 21)) @@ -158,7 +158,7 @@ module.exports.i = function i() {} >module.exports.i : Symbol(i, Decl(index.js, 50, 22)) >module.exports : Symbol(i, Decl(index.js, 50, 22)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >i : Symbol(i, Decl(index.js, 50, 22)) >i : Symbol(i, Decl(index.js, 52, 18)) @@ -166,12 +166,12 @@ module.exports.ii = module.exports.i; >module.exports.ii : Symbol(ii, Decl(index.js, 52, 34)) >module.exports : Symbol(ii, Decl(index.js, 52, 34)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >ii : Symbol(ii, Decl(index.js, 52, 34)) >module.exports.i : Symbol(i, Decl(index.js, 50, 22)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >i : Symbol(i, Decl(index.js, 50, 22)) // note that this last one doesn't make much sense in cjs, since exports aren't hoisted bindings @@ -179,19 +179,19 @@ module.exports.jj = module.exports.j; >module.exports.jj : Symbol(jj, Decl(index.js, 53, 37)) >module.exports : Symbol(jj, Decl(index.js, 53, 37)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >jj : Symbol(jj, Decl(index.js, 53, 37)) >module.exports.j : Symbol(j, Decl(index.js, 56, 37)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >j : Symbol(j, Decl(index.js, 56, 37)) module.exports.j = function j() {} >module.exports.j : Symbol(j, Decl(index.js, 56, 37)) >module.exports : Symbol(j, Decl(index.js, 56, 37)) >module : Symbol(module, Decl(index.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >j : Symbol(j, Decl(index.js, 56, 37)) >j : Symbol(j, Decl(index.js, 57, 18)) diff --git a/tests/baselines/reference/jsDeclarationsFunctionsCjs.types b/tests/baselines/reference/jsDeclarationsFunctionsCjs.types index 15bba1a331dab..e08e5e1ba87fe 100644 --- a/tests/baselines/reference/jsDeclarationsFunctionsCjs.types +++ b/tests/baselines/reference/jsDeclarationsFunctionsCjs.types @@ -2,9 +2,9 @@ module.exports.a = function a() {} >module.exports.a = function a() {} : () => void >module.exports.a : () => void ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >a : () => void >function a() {} : () => void >a : () => void @@ -12,9 +12,9 @@ module.exports.a = function a() {} module.exports.b = function b() {} >module.exports.b = function b() {} : { (): void; cat: string; } >module.exports.b : { (): void; cat: string; } ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >b : { (): void; cat: string; } >function b() {} : { (): void; cat: string; } >b : { (): void; cat: string; } @@ -23,9 +23,9 @@ module.exports.b.cat = "cat"; >module.exports.b.cat = "cat" : "cat" >module.exports.b.cat : string >module.exports.b : { (): void; cat: string; } ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >b : { (): void; cat: string; } >cat : string >"cat" : "cat" @@ -33,9 +33,9 @@ module.exports.b.cat = "cat"; module.exports.c = function c() {} >module.exports.c = function c() {} : { (): void; Cls: typeof Cls; } >module.exports.c : { (): void; Cls: typeof Cls; } ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >c : { (): void; Cls: typeof Cls; } >function c() {} : { (): void; Cls: typeof Cls; } >c : { (): void; Cls: typeof Cls; } @@ -44,9 +44,9 @@ module.exports.c.Cls = class {} >module.exports.c.Cls = class {} : typeof Cls >module.exports.c.Cls : typeof Cls >module.exports.c : { (): void; Cls: typeof Cls; } ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >c : { (): void; Cls: typeof Cls; } >Cls : typeof Cls >class {} : typeof Cls @@ -59,9 +59,9 @@ module.exports.c.Cls = class {} module.exports.d = function d(a, b) { return /** @type {*} */(null); } >module.exports.d = function d(a, b) { return /** @type {*} */(null); } : (a: number, b: number) => string >module.exports.d : (a: number, b: number) => string ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >d : (a: number, b: number) => string >function d(a, b) { return /** @type {*} */(null); } : (a: number, b: number) => string >d : (a: number, b: number) => string @@ -79,9 +79,9 @@ module.exports.d = function d(a, b) { return /** @type {*} */(null); } module.exports.e = function e(a, b) { return /** @type {*} */(null); } >module.exports.e = function e(a, b) { return /** @type {*} */(null); } : (a: T, b: U) => T & U >module.exports.e : (a: T, b: U) => T & U ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >e : (a: T, b: U) => T & U >function e(a, b) { return /** @type {*} */(null); } : (a: T, b: U) => T & U >e : (a: T, b: U) => T & U @@ -97,9 +97,9 @@ module.exports.e = function e(a, b) { return /** @type {*} */(null); } module.exports.f = function f(a) { >module.exports.f = function f(a) { return a;} : { (a: T): T; self: any; } >module.exports.f : { (a: T): T; self: any; } ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >f : { (a: T): T; self: any; } >function f(a) { return a;} : { (a: T): T; self: any; } >f : { (a: T): T; self: any; } @@ -112,15 +112,15 @@ module.exports.f.self = module.exports.f; >module.exports.f.self = module.exports.f : { (a: T): T; self: any; } >module.exports.f.self : { (a: T): T; self: any; } >module.exports.f : { (a: T): T; self: any; } ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >f : { (a: T): T; self: any; } >self : { (a: T): T; self: any; } >module.exports.f : { (a: T): T; self: any; } ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >f : { (a: T): T; self: any; } /** @@ -146,9 +146,9 @@ function g(a, b) { module.exports.g = g; >module.exports.g = g : (a: { x: string; }, b: { y: { (): void; cat: string; }; }) => void >module.exports.g : (a: { x: string; }, b: { y: { (): void; cat: string; }; }) => void ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >g : (a: { x: string; }, b: { y: { (): void; cat: string; }; }) => void >g : (a: { x: string; }, b: { y: { (): void; cat: string; }; }) => void @@ -175,18 +175,18 @@ function hh(a, b) { module.exports.h = hh; >module.exports.h = hh : (a: { x: string; }, b: { y: { (): void; cat: string; }; }) => void >module.exports.h : (a: { x: string; }, b: { y: { (): void; cat: string; }; }) => void ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >h : (a: { x: string; }, b: { y: { (): void; cat: string; }; }) => void >hh : (a: { x: string; }, b: { y: { (): void; cat: string; }; }) => void module.exports.i = function i() {} >module.exports.i = function i() {} : () => void >module.exports.i : () => void ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >i : () => void >function i() {} : () => void >i : () => void @@ -194,36 +194,36 @@ module.exports.i = function i() {} module.exports.ii = module.exports.i; >module.exports.ii = module.exports.i : () => void >module.exports.ii : () => void ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >ii : () => void >module.exports.i : () => void ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >i : () => void // note that this last one doesn't make much sense in cjs, since exports aren't hoisted bindings module.exports.jj = module.exports.j; >module.exports.jj = module.exports.j : () => void >module.exports.jj : () => void ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >jj : () => void >module.exports.j : () => void ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >j : () => void module.exports.j = function j() {} >module.exports.j = function j() {} : () => void >module.exports.j : () => void ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >j : () => void >function j() {} : () => void >j : () => void diff --git a/tests/baselines/reference/jsDeclarationsImportAliasExposedWithinNamespace.js b/tests/baselines/reference/jsDeclarationsImportAliasExposedWithinNamespace.js index bc85ba95d0de5..cb8fe79110dfe 100644 --- a/tests/baselines/reference/jsDeclarationsImportAliasExposedWithinNamespace.js +++ b/tests/baselines/reference/jsDeclarationsImportAliasExposedWithinNamespace.js @@ -60,7 +60,7 @@ export namespace myTypes { /** * - Prop 1. */ - prop1: typeA; + prop1: myTypes.typeA; /** * - Prop 2. */ diff --git a/tests/baselines/reference/jsDeclarationsImportAliasExposedWithinNamespaceCjs.js b/tests/baselines/reference/jsDeclarationsImportAliasExposedWithinNamespaceCjs.js index f635869cea711..bd27e71768a9e 100644 --- a/tests/baselines/reference/jsDeclarationsImportAliasExposedWithinNamespaceCjs.js +++ b/tests/baselines/reference/jsDeclarationsImportAliasExposedWithinNamespaceCjs.js @@ -68,7 +68,7 @@ export namespace myTypes { /** * - Prop 1. */ - prop1: typeA; + prop1: myTypes.typeA; /** * - Prop 2. */ diff --git a/tests/baselines/reference/jsDeclarationsImportAliasExposedWithinNamespaceCjs.symbols b/tests/baselines/reference/jsDeclarationsImportAliasExposedWithinNamespaceCjs.symbols index 6127c7d6af713..aad4371015d58 100644 --- a/tests/baselines/reference/jsDeclarationsImportAliasExposedWithinNamespaceCjs.symbols +++ b/tests/baselines/reference/jsDeclarationsImportAliasExposedWithinNamespaceCjs.symbols @@ -39,9 +39,9 @@ function testFn(input) { } module.exports = {testFn, testFnTypes}; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/file2", Decl(file2.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(file2.js, 0, 0)) >module : Symbol(module, Decl(file2.js, 25, 1)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/file2", Decl(file2.js, 0, 0)) +>exports : Symbol(module.exports, Decl(file2.js, 0, 0)) >testFn : Symbol(testFn, Decl(file2.js, 27, 18)) >testFnTypes : Symbol(testFnTypes, Decl(file2.js, 27, 25)) diff --git a/tests/baselines/reference/jsDeclarationsImportAliasExposedWithinNamespaceCjs.types b/tests/baselines/reference/jsDeclarationsImportAliasExposedWithinNamespaceCjs.types index df5d014acfdcd..3434daf8b6271 100644 --- a/tests/baselines/reference/jsDeclarationsImportAliasExposedWithinNamespaceCjs.types +++ b/tests/baselines/reference/jsDeclarationsImportAliasExposedWithinNamespaceCjs.types @@ -47,10 +47,10 @@ function testFn(input) { } module.exports = {testFn, testFnTypes}; ->module.exports = {testFn, testFnTypes} : typeof import("tests/cases/conformance/jsdoc/declarations/file2") ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/file2") ->module : { "\"tests/cases/conformance/jsdoc/declarations/file2\"": typeof import("tests/cases/conformance/jsdoc/declarations/file2"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/file2") +>module.exports = {testFn, testFnTypes} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{testFn, testFnTypes} : { testFn: (input: testFnTypes.input) => number; testFnTypes: { [x: string]: any; }; } >testFn : (input: testFnTypes.input) => number >testFnTypes : { [x: string]: any; } diff --git a/tests/baselines/reference/jsDeclarationsImportTypeBundled.symbols b/tests/baselines/reference/jsDeclarationsImportTypeBundled.symbols index 7cf1f7a1b236c..3d5ffe6c367e6 100644 --- a/tests/baselines/reference/jsDeclarationsImportTypeBundled.symbols +++ b/tests/baselines/reference/jsDeclarationsImportTypeBundled.symbols @@ -10,7 +10,7 @@ const x = {x: 12}; >x : Symbol(x, Decl(mod1.js, 6, 11)) module.exports = x; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/folder/mod1", Decl(mod1.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >module : Symbol(export=, Decl(mod1.js, 6, 18)) >exports : Symbol(export=, Decl(mod1.js, 6, 18)) >x : Symbol(x, Decl(mod1.js, 6, 5)) @@ -22,7 +22,7 @@ const items = [{x: 12}]; >x : Symbol(x, Decl(index.js, 1, 16)) module.exports = items; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 1, 24)) >exports : Symbol(export=, Decl(index.js, 1, 24)) >items : Symbol(items, Decl(index.js, 1, 5)) diff --git a/tests/baselines/reference/jsDeclarationsImportTypeBundled.types b/tests/baselines/reference/jsDeclarationsImportTypeBundled.types index 66eca75781248..c11b49b1c27ae 100644 --- a/tests/baselines/reference/jsDeclarationsImportTypeBundled.types +++ b/tests/baselines/reference/jsDeclarationsImportTypeBundled.types @@ -14,7 +14,7 @@ const x = {x: 12}; module.exports = x; >module.exports = x : { x: number; } >module.exports : { x: number; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/folder/mod1\"": { x: number; }; } +>module : { exports: { x: number; }; } >exports : { x: number; } >x : Item @@ -30,7 +30,7 @@ const items = [{x: 12}]; module.exports = items; >module.exports = items : { [n: number]: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; length: number; toString(): string; toLocaleString(): string; pop(): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; push(...items: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]): number; concat(...items: ConcatArray[]): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; concat(...items: (import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item | ConcatArray)[]): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; join(separator?: string): string; reverse(): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; shift(): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; slice(start?: number, end?: number): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; sort(compareFn?: (a: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, b: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item) => number): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; splice(start: number, deleteCount?: number): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; splice(start: number, deleteCount: number, ...items: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; unshift(...items: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]): number; indexOf(searchElement: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, fromIndex?: number): number; lastIndexOf(searchElement: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, fromIndex?: number): number; every(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => void, thisArg?: any): void; map(callbackfn: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => unknown, thisArg?: any): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; reduce(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduce(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, initialValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduce(callbackfn: (previousValue: U, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduceRight(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, initialValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduceRight(callbackfn: (previousValue: U, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => U, initialValue: U): U; } >module.exports : { [n: number]: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; length: number; toString(): string; toLocaleString(): string; pop(): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; push(...items: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]): number; concat(...items: ConcatArray[]): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; concat(...items: (import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item | ConcatArray)[]): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; join(separator?: string): string; reverse(): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; shift(): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; slice(start?: number, end?: number): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; sort(compareFn?: (a: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, b: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item) => number): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; splice(start: number, deleteCount?: number): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; splice(start: number, deleteCount: number, ...items: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; unshift(...items: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]): number; indexOf(searchElement: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, fromIndex?: number): number; lastIndexOf(searchElement: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, fromIndex?: number): number; every(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => void, thisArg?: any): void; map(callbackfn: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => unknown, thisArg?: any): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; reduce(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduce(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, initialValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduce(callbackfn: (previousValue: U, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduceRight(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, initialValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduceRight(callbackfn: (previousValue: U, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => U, initialValue: U): U; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": { [n: number]: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; length: number; toString(): string; toLocaleString(): string; pop(): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; push(...items: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]): number; concat(...items: ConcatArray[]): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; concat(...items: (import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item | ConcatArray)[]): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; join(separator?: string): string; reverse(): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; shift(): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; slice(start?: number, end?: number): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; sort(compareFn?: (a: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, b: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item) => number): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; splice(start: number, deleteCount?: number): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; splice(start: number, deleteCount: number, ...items: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; unshift(...items: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]): number; indexOf(searchElement: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, fromIndex?: number): number; lastIndexOf(searchElement: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, fromIndex?: number): number; every(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => void, thisArg?: any): void; map(callbackfn: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => unknown, thisArg?: any): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; reduce(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduce(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, initialValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduce(callbackfn: (previousValue: U, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduceRight(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, initialValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduceRight(callbackfn: (previousValue: U, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => U, initialValue: U): U; }; } +>module : { exports: { [n: number]: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; length: number; toString(): string; toLocaleString(): string; pop(): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; push(...items: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]): number; concat(...items: ConcatArray[]): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; concat(...items: (import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item | ConcatArray)[]): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; join(separator?: string): string; reverse(): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; shift(): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; slice(start?: number, end?: number): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; sort(compareFn?: (a: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, b: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item) => number): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; splice(start: number, deleteCount?: number): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; splice(start: number, deleteCount: number, ...items: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; unshift(...items: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]): number; indexOf(searchElement: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, fromIndex?: number): number; lastIndexOf(searchElement: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, fromIndex?: number): number; every(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => void, thisArg?: any): void; map(callbackfn: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => unknown, thisArg?: any): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; reduce(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduce(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, initialValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduce(callbackfn: (previousValue: U, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduceRight(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, initialValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduceRight(callbackfn: (previousValue: U, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => U, initialValue: U): U; }; } >exports : { [n: number]: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; length: number; toString(): string; toLocaleString(): string; pop(): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; push(...items: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]): number; concat(...items: ConcatArray[]): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; concat(...items: (import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item | ConcatArray)[]): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; join(separator?: string): string; reverse(): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; shift(): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; slice(start?: number, end?: number): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; sort(compareFn?: (a: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, b: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item) => number): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; splice(start: number, deleteCount?: number): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; splice(start: number, deleteCount: number, ...items: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; unshift(...items: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]): number; indexOf(searchElement: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, fromIndex?: number): number; lastIndexOf(searchElement: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, fromIndex?: number): number; every(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => void, thisArg?: any): void; map(callbackfn: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, index: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => unknown, thisArg?: any): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]; reduce(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduce(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, initialValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduce(callbackfn: (previousValue: U, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduceRight(callbackfn: (previousValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, initialValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item): import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item; reduceRight(callbackfn: (previousValue: U, currentValue: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item, currentIndex: number, array: import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[]) => U, initialValue: U): U; } >items : import("tests/cases/conformance/jsdoc/declarations/folder/mod1").Item[] diff --git a/tests/baselines/reference/jsDeclarationsJson.symbols b/tests/baselines/reference/jsDeclarationsJson.symbols index 9e276decbc6b5..1ce0e71b18819 100644 --- a/tests/baselines/reference/jsDeclarationsJson.symbols +++ b/tests/baselines/reference/jsDeclarationsJson.symbols @@ -5,7 +5,7 @@ const j = require("./obj.json"); >"./obj.json" : Symbol("tests/cases/conformance/jsdoc/declarations/obj", Decl(obj.json, 0, 0)) module.exports = j; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 0, 32)) >exports : Symbol(export=, Decl(index.js, 0, 32)) >j : Symbol(j, Decl(index.js, 0, 5)) diff --git a/tests/baselines/reference/jsDeclarationsJson.types b/tests/baselines/reference/jsDeclarationsJson.types index 3294656ba3302..a7c977ccb45b4 100644 --- a/tests/baselines/reference/jsDeclarationsJson.types +++ b/tests/baselines/reference/jsDeclarationsJson.types @@ -8,7 +8,7 @@ const j = require("./obj.json"); module.exports = j; >module.exports = j : { x: number; y: number; obj: { items: ({ x: number; y?: undefined; err?: undefined; } | { x: number; y: number; err?: undefined; } | { x: number; err: boolean; y?: undefined; })[]; }; } >module.exports : { x: number; y: number; obj: { items: ({ x: number; y?: undefined; err?: undefined; } | { x: number; y: number; err?: undefined; } | { x: number; err: boolean; y?: undefined; })[]; }; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": { x: number; y: number; obj: { items: ({ x: number; y?: undefined; err?: undefined; } | { x: number; y: number; err?: undefined; } | { x: number; err: boolean; y?: undefined; })[]; }; }; } +>module : { exports: { x: number; y: number; obj: { items: ({ x: number; y?: undefined; err?: undefined; } | { x: number; y: number; err?: undefined; } | { x: number; err: boolean; y?: undefined; })[]; }; }; } >exports : { x: number; y: number; obj: { items: ({ x: number; y?: undefined; err?: undefined; } | { x: number; y: number; err?: undefined; } | { x: number; err: boolean; y?: undefined; })[]; }; } >j : { x: number; y: number; obj: { items: ({ x: number; y?: undefined; err?: undefined; } | { x: number; y: number; err?: undefined; } | { x: number; err: boolean; y?: undefined; })[]; }; } diff --git a/tests/baselines/reference/jsDeclarationsPackageJson.symbols b/tests/baselines/reference/jsDeclarationsPackageJson.symbols index 7f09a886bab0a..d64a82ca85c20 100644 --- a/tests/baselines/reference/jsDeclarationsPackageJson.symbols +++ b/tests/baselines/reference/jsDeclarationsPackageJson.symbols @@ -5,7 +5,7 @@ const j = require("./package.json"); >"./package.json" : Symbol("tests/cases/conformance/jsdoc/declarations/package", Decl(package.json, 0, 0)) module.exports = j; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 0, 36)) >exports : Symbol(export=, Decl(index.js, 0, 36)) >j : Symbol(j, Decl(index.js, 0, 5)) diff --git a/tests/baselines/reference/jsDeclarationsPackageJson.types b/tests/baselines/reference/jsDeclarationsPackageJson.types index 46faaf89c8e2f..ce8b380884543 100644 --- a/tests/baselines/reference/jsDeclarationsPackageJson.types +++ b/tests/baselines/reference/jsDeclarationsPackageJson.types @@ -8,7 +8,7 @@ const j = require("./package.json"); module.exports = j; >module.exports = j : { name: string; version: string; description: string; main: string; bin: { cli: string; }; engines: { node: string; }; scripts: { scriptname: string; }; devDependencies: { "@ns/dep": string; }; dependencies: { dep: string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { o: string[]; }; } >module.exports : { name: string; version: string; description: string; main: string; bin: { cli: string; }; engines: { node: string; }; scripts: { scriptname: string; }; devDependencies: { "@ns/dep": string; }; dependencies: { dep: string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { o: string[]; }; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": { name: string; version: string; description: string; main: string; bin: { cli: string; }; engines: { node: string; }; scripts: { scriptname: string; }; devDependencies: { "@ns/dep": string; }; dependencies: { dep: string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { o: string[]; }; }; } +>module : { exports: { name: string; version: string; description: string; main: string; bin: { cli: string; }; engines: { node: string; }; scripts: { scriptname: string; }; devDependencies: { "@ns/dep": string; }; dependencies: { dep: string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { o: string[]; }; }; } >exports : { name: string; version: string; description: string; main: string; bin: { cli: string; }; engines: { node: string; }; scripts: { scriptname: string; }; devDependencies: { "@ns/dep": string; }; dependencies: { dep: string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { o: string[]; }; } >j : { name: string; version: string; description: string; main: string; bin: { cli: string; }; engines: { node: string; }; scripts: { scriptname: string; }; devDependencies: { "@ns/dep": string; }; dependencies: { dep: string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { o: string[]; }; } diff --git a/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit1.errors.txt b/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit1.errors.txt index a231ff1aaf495..882a221dfef9a 100644 --- a/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit1.errors.txt +++ b/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit1.errors.txt @@ -1,4 +1,6 @@ -tests/cases/conformance/jsdoc/declarations/file.js(8,1): error TS9006: Declaration emit for this file requires using private name 'Base' from module '"tests/cases/conformance/jsdoc/declarations/base"'. An explicit type annotation may unblock declaration emit. +tests/cases/conformance/jsdoc/declarations/file.js(1,5): error TS4084: Exported type alias 'BaseFactory' has or is using private name 'Base' from module "tests/cases/conformance/jsdoc/declarations/base". +tests/cases/conformance/jsdoc/declarations/file.js(3,4): error TS4084: Exported type alias 'BaseFactoryFactory' has or is using private name 'Base' from module "tests/cases/conformance/jsdoc/declarations/base". +tests/cases/conformance/jsdoc/declarations/file.js(6,5): error TS4084: Exported type alias 'couldntThinkOfAny' has or is using private name 'Base' from module "tests/cases/conformance/jsdoc/declarations/base". ==== tests/cases/conformance/jsdoc/declarations/base.js (0 errors) ==== @@ -14,8 +16,22 @@ tests/cases/conformance/jsdoc/declarations/file.js(8,1): error TS9006: Declarati module.exports = BaseFactory; -==== tests/cases/conformance/jsdoc/declarations/file.js (1 errors) ==== +==== tests/cases/conformance/jsdoc/declarations/file.js (3 errors) ==== /** @typedef {import('./base')} BaseFactory */ + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4084: Exported type alias 'BaseFactory' has or is using private name 'Base' from module "tests/cases/conformance/jsdoc/declarations/base". + /** + * @callback BaseFactoryFactory + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + * @param {import('./base')} factory + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + */ + ~ +!!! error TS4084: Exported type alias 'BaseFactoryFactory' has or is using private name 'Base' from module "tests/cases/conformance/jsdoc/declarations/base". + /** @enum {import('./base')} */ + ~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS4084: Exported type alias 'couldntThinkOfAny' has or is using private name 'Base' from module "tests/cases/conformance/jsdoc/declarations/base". + const couldntThinkOfAny = {} /** * @@ -23,8 +39,6 @@ tests/cases/conformance/jsdoc/declarations/file.js(8,1): error TS9006: Declarati * @returns {InstanceType} */ const test = (base) => { - ~~~~~ -!!! error TS9006: Declaration emit for this file requires using private name 'Base' from module '"tests/cases/conformance/jsdoc/declarations/base"'. An explicit type annotation may unblock declaration emit. return base; }; \ No newline at end of file diff --git a/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit1.js b/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit1.js index c4a5b8c5018a1..fb4abcb308f4b 100644 --- a/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit1.js +++ b/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit1.js @@ -15,6 +15,12 @@ module.exports = BaseFactory; //// [file.js] /** @typedef {import('./base')} BaseFactory */ +/** + * @callback BaseFactoryFactory + * @param {import('./base')} factory + */ +/** @enum {import('./base')} */ +const couldntThinkOfAny = {} /** * @@ -37,6 +43,12 @@ BaseFactory.Base = Base; module.exports = BaseFactory; //// [file.js] /** @typedef {import('./base')} BaseFactory */ +/** + * @callback BaseFactoryFactory + * @param {import('./base')} factory + */ +/** @enum {import('./base')} */ +const couldntThinkOfAny = {}; /** * * @param {InstanceType} base diff --git a/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit1.symbols b/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit1.symbols index d927bfa797baf..a02e7415afa90 100644 --- a/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit1.symbols +++ b/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit1.symbols @@ -20,13 +20,20 @@ BaseFactory.Base = Base; >Base : Symbol(Base, Decl(base.js, 0, 0)) module.exports = BaseFactory; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/base", Decl(base.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(base.js, 0, 0)) >module : Symbol(export=, Decl(base.js, 8, 24)) >exports : Symbol(export=, Decl(base.js, 8, 24)) >BaseFactory : Symbol(BaseFactory, Decl(base.js, 4, 5), Decl(base.js, 6, 2)) === tests/cases/conformance/jsdoc/declarations/file.js === /** @typedef {import('./base')} BaseFactory */ +/** + * @callback BaseFactoryFactory + * @param {import('./base')} factory + */ +/** @enum {import('./base')} */ +const couldntThinkOfAny = {} +>couldntThinkOfAny : Symbol(couldntThinkOfAny, Decl(file.js, 6, 5), Decl(file.js, 5, 4)) /** * @@ -34,11 +41,11 @@ module.exports = BaseFactory; * @returns {InstanceType} */ const test = (base) => { ->test : Symbol(test, Decl(file.js, 7, 5)) ->base : Symbol(base, Decl(file.js, 7, 14)) +>test : Symbol(test, Decl(file.js, 13, 5)) +>base : Symbol(base, Decl(file.js, 13, 14)) return base; ->base : Symbol(base, Decl(file.js, 7, 14)) +>base : Symbol(base, Decl(file.js, 13, 14)) }; diff --git a/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit1.types b/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit1.types index 0c45177a183b3..154977f9a0697 100644 --- a/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit1.types +++ b/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit1.types @@ -25,12 +25,20 @@ BaseFactory.Base = Base; module.exports = BaseFactory; >module.exports = BaseFactory : { (): Base; Base: typeof Base; } >module.exports : { (): Base; Base: typeof Base; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/base\"": { (): Base; Base: typeof Base; }; } +>module : { exports: { (): Base; Base: typeof Base; }; } >exports : { (): Base; Base: typeof Base; } >BaseFactory : { (): Base; Base: typeof Base; } === tests/cases/conformance/jsdoc/declarations/file.js === /** @typedef {import('./base')} BaseFactory */ +/** + * @callback BaseFactoryFactory + * @param {import('./base')} factory + */ +/** @enum {import('./base')} */ +const couldntThinkOfAny = {} +>couldntThinkOfAny : {} +>{} : {} /** * diff --git a/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit2.symbols b/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit2.symbols index f23f9f84f2d34..01b7c3f4c51d2 100644 --- a/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit2.symbols +++ b/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit2.symbols @@ -20,7 +20,7 @@ BaseFactory.Base = Base; >Base : Symbol(Base, Decl(base.js, 0, 0)) module.exports = BaseFactory; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/base", Decl(base.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(base.js, 0, 0)) >module : Symbol(export=, Decl(base.js, 8, 24)) >exports : Symbol(export=, Decl(base.js, 8, 24)) >BaseFactory : Symbol(BaseFactory, Decl(base.js, 4, 5), Decl(base.js, 6, 2)) diff --git a/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit2.types b/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit2.types index 196e7c7dff00c..49d8472667c44 100644 --- a/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit2.types +++ b/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit2.types @@ -25,7 +25,7 @@ BaseFactory.Base = Base; module.exports = BaseFactory; >module.exports = BaseFactory : { (): Base; Base: typeof Base; } >module.exports : { (): Base; Base: typeof Base; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/base\"": { (): Base; Base: typeof Base; }; } +>module : { exports: { (): Base; Base: typeof Base; }; } >exports : { (): Base; Base: typeof Base; } >BaseFactory : { (): Base; Base: typeof Base; } diff --git a/tests/baselines/reference/jsDeclarationsReactComponents.symbols b/tests/baselines/reference/jsDeclarationsReactComponents.symbols index 43739a502a000..f5f5f935ee683 100644 --- a/tests/baselines/reference/jsDeclarationsReactComponents.symbols +++ b/tests/baselines/reference/jsDeclarationsReactComponents.symbols @@ -12,7 +12,7 @@ const TabbedShowLayout = ({ }) => { return (
    ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) ); }; @@ -56,13 +56,13 @@ const TabbedShowLayout = () => { return (
    ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >className : Symbol(className, Decl(jsDeclarationsReactComponents2.jsx, 6, 12)) >key : Symbol(key, Decl(jsDeclarationsReactComponents2.jsx, 6, 25)) ok
    ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) ); }; @@ -92,13 +92,13 @@ const TabbedShowLayout = () => { return (
    ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >className : Symbol(className, Decl(jsDeclarationsReactComponents3.jsx, 6, 12)) >key : Symbol(key, Decl(jsDeclarationsReactComponents3.jsx, 6, 25)) ok
    ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) ); }; @@ -126,7 +126,7 @@ const TabbedShowLayout = (/** @type {{className: string}}*/prop) => { return (
    ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >className : Symbol(className, Decl(jsDeclarationsReactComponents4.jsx, 3, 12)) >prop.className : Symbol(className, Decl(jsDeclarationsReactComponents4.jsx, 1, 38)) >prop : Symbol(prop, Decl(jsDeclarationsReactComponents4.jsx, 1, 26)) @@ -135,7 +135,7 @@ const TabbedShowLayout = (/** @type {{className: string}}*/prop) => { ok
    ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) ); }; @@ -165,7 +165,7 @@ function Tree({ allowDropOnRoot }) { >allowDropOnRoot : Symbol(allowDropOnRoot, Decl(jsDeclarationsReactComponents5.jsx, 3, 15)) return
    ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) } Tree.propTypes = { diff --git a/tests/baselines/reference/jsDeclarationsReexportAliasesEsModuleInterop.symbols b/tests/baselines/reference/jsDeclarationsReexportAliasesEsModuleInterop.symbols index 221e0bd0d0316..8fcefa3400771 100644 --- a/tests/baselines/reference/jsDeclarationsReexportAliasesEsModuleInterop.symbols +++ b/tests/baselines/reference/jsDeclarationsReexportAliasesEsModuleInterop.symbols @@ -3,7 +3,7 @@ class Foo {} >Foo : Symbol(Foo, Decl(cls.js, 0, 0)) module.exports = Foo; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/cls", Decl(cls.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(cls.js, 0, 0)) >module : Symbol(export=, Decl(cls.js, 0, 12)) >exports : Symbol(export=, Decl(cls.js, 0, 12)) >Foo : Symbol(Foo, Decl(cls.js, 0, 0)) diff --git a/tests/baselines/reference/jsDeclarationsReexportAliasesEsModuleInterop.types b/tests/baselines/reference/jsDeclarationsReexportAliasesEsModuleInterop.types index 8597d00c34a9b..60d4c23c5179f 100644 --- a/tests/baselines/reference/jsDeclarationsReexportAliasesEsModuleInterop.types +++ b/tests/baselines/reference/jsDeclarationsReexportAliasesEsModuleInterop.types @@ -5,7 +5,7 @@ class Foo {} module.exports = Foo; >module.exports = Foo : typeof Foo >module.exports : typeof Foo ->module : { "\"tests/cases/conformance/jsdoc/declarations/cls\"": typeof Foo; } +>module : { exports: typeof Foo; } >exports : typeof Foo >Foo : typeof Foo diff --git a/tests/baselines/reference/jsDeclarationsReexportedCjsAlias.symbols b/tests/baselines/reference/jsDeclarationsReexportedCjsAlias.symbols index 2fbefda6a0b16..1b6a5d0fea4f0 100644 --- a/tests/baselines/reference/jsDeclarationsReexportedCjsAlias.symbols +++ b/tests/baselines/reference/jsDeclarationsReexportedCjsAlias.symbols @@ -7,9 +7,9 @@ const { SomeClass, SomeClass: Another } = require('./lib'); >'./lib' : Symbol("tests/cases/conformance/jsdoc/declarations/lib", Decl(lib.js, 0, 0)) module.exports = { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/main", Decl(main.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(main.js, 0, 0)) >module : Symbol(module, Decl(main.js, 0, 59)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/main", Decl(main.js, 0, 0)) +>exports : Symbol(module.exports, Decl(main.js, 0, 0)) SomeClass, >SomeClass : Symbol(SomeClass, Decl(main.js, 2, 18)) @@ -41,9 +41,9 @@ class SomeClass { } module.exports = { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/lib", Decl(lib.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(lib.js, 0, 0)) >module : Symbol(module, Decl(lib.js, 11, 1)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/lib", Decl(lib.js, 0, 0)) +>exports : Symbol(module.exports, Decl(lib.js, 0, 0)) bar, >bar : Symbol(bar, Decl(lib.js, 13, 18)) diff --git a/tests/baselines/reference/jsDeclarationsReexportedCjsAlias.types b/tests/baselines/reference/jsDeclarationsReexportedCjsAlias.types index 55e56a9d2e5ef..ec3f3f47f3fbc 100644 --- a/tests/baselines/reference/jsDeclarationsReexportedCjsAlias.types +++ b/tests/baselines/reference/jsDeclarationsReexportedCjsAlias.types @@ -8,10 +8,10 @@ const { SomeClass, SomeClass: Another } = require('./lib'); >'./lib' : "./lib" module.exports = { ->module.exports = { SomeClass, Another} : typeof import("tests/cases/conformance/jsdoc/declarations/main") ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/main") ->module : { "\"tests/cases/conformance/jsdoc/declarations/main\"": typeof import("tests/cases/conformance/jsdoc/declarations/main"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/main") +>module.exports = { SomeClass, Another} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{ SomeClass, Another} : { SomeClass: typeof SomeClass; Another: typeof SomeClass; } SomeClass, @@ -46,10 +46,10 @@ class SomeClass { } module.exports = { ->module.exports = { bar, SomeClass} : typeof import("tests/cases/conformance/jsdoc/declarations/lib") ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/lib") ->module : { "\"tests/cases/conformance/jsdoc/declarations/lib\"": typeof import("tests/cases/conformance/jsdoc/declarations/lib"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/lib") +>module.exports = { bar, SomeClass} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{ bar, SomeClass} : { bar: (a: string) => string; SomeClass: typeof SomeClass; } bar, diff --git a/tests/baselines/reference/jsDeclarationsReferenceToClassInstanceCrossFile.symbols b/tests/baselines/reference/jsDeclarationsReferenceToClassInstanceCrossFile.symbols index 570f2dc9e2570..a645f55f6f66e 100644 --- a/tests/baselines/reference/jsDeclarationsReferenceToClassInstanceCrossFile.symbols +++ b/tests/baselines/reference/jsDeclarationsReferenceToClassInstanceCrossFile.symbols @@ -34,9 +34,9 @@ class Rectangle { } module.exports = { Rectangle }; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/rectangle", Decl(rectangle.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(rectangle.js, 0, 0)) >module : Symbol(module, Decl(rectangle.js, 4, 1)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/rectangle", Decl(rectangle.js, 0, 0)) +>exports : Symbol(module.exports, Decl(rectangle.js, 0, 0)) >Rectangle : Symbol(Rectangle, Decl(rectangle.js, 6, 18)) === tests/cases/conformance/jsdoc/declarations/index.js === @@ -84,8 +84,8 @@ class Render { } module.exports = { Render }; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 20, 1)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >Render : Symbol(Render, Decl(index.js, 22, 18)) diff --git a/tests/baselines/reference/jsDeclarationsReferenceToClassInstanceCrossFile.types b/tests/baselines/reference/jsDeclarationsReferenceToClassInstanceCrossFile.types index 9ec6c7e94f651..5b90275da04c5 100644 --- a/tests/baselines/reference/jsDeclarationsReferenceToClassInstanceCrossFile.types +++ b/tests/baselines/reference/jsDeclarationsReferenceToClassInstanceCrossFile.types @@ -41,10 +41,10 @@ class Rectangle { } module.exports = { Rectangle }; ->module.exports = { Rectangle } : typeof import("tests/cases/conformance/jsdoc/declarations/rectangle") ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/rectangle") ->module : { "\"tests/cases/conformance/jsdoc/declarations/rectangle\"": typeof import("tests/cases/conformance/jsdoc/declarations/rectangle"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/rectangle") +>module.exports = { Rectangle } : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{ Rectangle } : { Rectangle: typeof Rectangle; } >Rectangle : typeof Rectangle @@ -98,10 +98,10 @@ class Render { } module.exports = { Render }; ->module.exports = { Render } : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports = { Render } : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{ Render } : { Render: typeof Render; } >Render : typeof Render diff --git a/tests/baselines/reference/jsDeclarationsTypeAliases.symbols b/tests/baselines/reference/jsDeclarationsTypeAliases.symbols index 55e7851cc03f9..eb0d5dd3173f5 100644 --- a/tests/baselines/reference/jsDeclarationsTypeAliases.symbols +++ b/tests/baselines/reference/jsDeclarationsTypeAliases.symbols @@ -49,9 +49,9 @@ class ExportedThing { >z : Symbol(ExportedThing.z, Decl(mixed.js, 10, 21)) } module.exports = { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/mixed", Decl(mixed.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mixed.js, 0, 0)) >module : Symbol(module, Decl(mixed.js, 12, 1)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/mixed", Decl(mixed.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mixed.js, 0, 0)) doTheThing, >doTheThing : Symbol(doTheThing, Decl(mixed.js, 13, 18)) diff --git a/tests/baselines/reference/jsDeclarationsTypeAliases.types b/tests/baselines/reference/jsDeclarationsTypeAliases.types index 4684b9e6b6934..a9e5e74f004cb 100644 --- a/tests/baselines/reference/jsDeclarationsTypeAliases.types +++ b/tests/baselines/reference/jsDeclarationsTypeAliases.types @@ -53,10 +53,10 @@ class ExportedThing { >"ok" : "ok" } module.exports = { ->module.exports = { doTheThing, ExportedThing,} : typeof import("tests/cases/conformance/jsdoc/declarations/mixed") ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/mixed") ->module : { "\"tests/cases/conformance/jsdoc/declarations/mixed\"": typeof import("tests/cases/conformance/jsdoc/declarations/mixed"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/mixed") +>module.exports = { doTheThing, ExportedThing,} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{ doTheThing, ExportedThing,} : { doTheThing: (x: number) => SomeType; ExportedThing: typeof ExportedThing; } doTheThing, diff --git a/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration.symbols b/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration.symbols index 96a988e2e113b..b09982ed21170 100644 --- a/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration.symbols +++ b/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration.symbols @@ -18,7 +18,7 @@ const items = []; >items : Symbol(items, Decl(index.js, 1, 5)) module.exports = items; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 1, 17)) >exports : Symbol(export=, Decl(index.js, 1, 17)) >items : Symbol(items, Decl(index.js, 1, 5)) diff --git a/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration.types b/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration.types index 9ff78e86ea80f..47b41068bce61 100644 --- a/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration.types +++ b/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration.types @@ -18,7 +18,7 @@ const items = []; module.exports = items; >module.exports = items : { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; [Symbol.iterator](): IterableIterator; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; } >module.exports : { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; [Symbol.iterator](): IterableIterator; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; [Symbol.iterator](): IterableIterator; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; }; } +>module : { exports: { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; [Symbol.iterator](): IterableIterator; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; }; } >exports : { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; [Symbol.iterator](): IterableIterator; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; } >items : Item[] diff --git a/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration2.symbols b/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration2.symbols index 283b16b647a8d..079eff57aa612 100644 --- a/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration2.symbols +++ b/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration2.symbols @@ -5,7 +5,7 @@ const items = require("./some-mod")(); >"./some-mod" : Symbol("tests/cases/conformance/jsdoc/declarations/some-mod", Decl(some-mod.d.ts, 0, 0)) module.exports = items; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 0, 38)) >exports : Symbol(export=, Decl(index.js, 0, 38)) >items : Symbol(items, Decl(index.js, 0, 5)) diff --git a/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration2.types b/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration2.types index 3675a48b2d9f8..1f003fc726cb8 100644 --- a/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration2.types +++ b/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration2.types @@ -9,7 +9,7 @@ const items = require("./some-mod")(); module.exports = items; >module.exports = items : { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; [Symbol.iterator](): IterableIterator; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; } >module.exports : { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; [Symbol.iterator](): IterableIterator; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; [Symbol.iterator](): IterableIterator; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; }; } +>module : { exports: { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; [Symbol.iterator](): IterableIterator; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; }; } >exports : { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; [Symbol.iterator](): IterableIterator; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; } >items : Item[] diff --git a/tests/baselines/reference/jsDeclarationsTypeReferences.symbols b/tests/baselines/reference/jsDeclarationsTypeReferences.symbols index 8c71d9870235a..0975f66f4708e 100644 --- a/tests/baselines/reference/jsDeclarationsTypeReferences.symbols +++ b/tests/baselines/reference/jsDeclarationsTypeReferences.symbols @@ -13,9 +13,9 @@ const thing = new Something(); >Something : Symbol(Something, Decl(index.js, 2, 5)) module.exports = { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 4, 30)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) thing >thing : Symbol(thing, Decl(index.js, 6, 18)) diff --git a/tests/baselines/reference/jsDeclarationsTypeReferences.types b/tests/baselines/reference/jsDeclarationsTypeReferences.types index 3f78aaa5274cd..6696dfdbeaf3d 100644 --- a/tests/baselines/reference/jsDeclarationsTypeReferences.types +++ b/tests/baselines/reference/jsDeclarationsTypeReferences.types @@ -15,10 +15,10 @@ const thing = new Something(); >Something : typeof Something module.exports = { ->module.exports = { thing} : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports = { thing} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{ thing} : { thing: Something; } thing diff --git a/tests/baselines/reference/jsDeclarationsTypeReferences2.symbols b/tests/baselines/reference/jsDeclarationsTypeReferences2.symbols index 6134c32050e61..04db53fcb70f5 100644 --- a/tests/baselines/reference/jsDeclarationsTypeReferences2.symbols +++ b/tests/baselines/reference/jsDeclarationsTypeReferences2.symbols @@ -13,9 +13,9 @@ const thing = a + m >m : Symbol(m, Decl(index.js, 0, 9)) module.exports = { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 2, 19)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) thing >thing : Symbol(thing, Decl(index.js, 4, 18)) diff --git a/tests/baselines/reference/jsDeclarationsTypeReferences2.types b/tests/baselines/reference/jsDeclarationsTypeReferences2.types index aaa5c5618b840..01ee23c555392 100644 --- a/tests/baselines/reference/jsDeclarationsTypeReferences2.types +++ b/tests/baselines/reference/jsDeclarationsTypeReferences2.types @@ -15,10 +15,10 @@ const thing = a + m >m : number module.exports = { ->module.exports = { thing} : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports = { thing} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{ thing} : { thing: number; } thing diff --git a/tests/baselines/reference/jsDeclarationsTypeReferences3.symbols b/tests/baselines/reference/jsDeclarationsTypeReferences3.symbols index 018debbe2277f..079178bd4927a 100644 --- a/tests/baselines/reference/jsDeclarationsTypeReferences3.symbols +++ b/tests/baselines/reference/jsDeclarationsTypeReferences3.symbols @@ -12,15 +12,15 @@ module.exports.A = {} >module.exports.A : Symbol(A, Decl(index.js, 2, 42), Decl(index.js, 4, 15)) >module.exports : Symbol(A, Decl(index.js, 2, 42), Decl(index.js, 4, 15)) >module : Symbol(module, Decl(index.js, 2, 42)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >A : Symbol(A, Decl(index.js, 2, 42), Decl(index.js, 4, 15)) module.exports.A.B = { >module.exports.A.B : Symbol(A.B, Decl(index.js, 3, 21)) >module.exports.A : Symbol(A.B, Decl(index.js, 3, 21)) ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(module, Decl(index.js, 2, 42)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>exports : Symbol(module.exports, Decl(index.js, 0, 0)) >A : Symbol(A, Decl(index.js, 2, 42), Decl(index.js, 4, 15)) >B : Symbol(A.B, Decl(index.js, 3, 21)) diff --git a/tests/baselines/reference/jsDeclarationsTypeReferences3.types b/tests/baselines/reference/jsDeclarationsTypeReferences3.types index bb41517417b59..8e19fc9fbf344 100644 --- a/tests/baselines/reference/jsDeclarationsTypeReferences3.types +++ b/tests/baselines/reference/jsDeclarationsTypeReferences3.types @@ -12,9 +12,9 @@ const Something = require("fs").Something; module.exports.A = {} >module.exports.A = {} : typeof A >module.exports.A : typeof A ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >A : typeof A >{} : {} @@ -22,9 +22,9 @@ module.exports.A.B = { >module.exports.A.B = { thing: new Something()} : { thing: Something; } >module.exports.A.B : { thing: Something; } >module.exports.A : typeof A ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof import("tests/cases/conformance/jsdoc/declarations/index"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/index") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >A : typeof A >B : { thing: Something; } >{ thing: new Something()} : { thing: Something; } diff --git a/tests/baselines/reference/jsDeclarationsTypedefAndImportTypes.symbols b/tests/baselines/reference/jsDeclarationsTypedefAndImportTypes.symbols index 4a4fb51c1d3dc..f54c73d5354bf 100644 --- a/tests/baselines/reference/jsDeclarationsTypedefAndImportTypes.symbols +++ b/tests/baselines/reference/jsDeclarationsTypedefAndImportTypes.symbols @@ -15,7 +15,7 @@ class Conn { } module.exports = Conn; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/conn", Decl(conn.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(conn.js, 0, 0)) >module : Symbol(export=, Decl(conn.js, 8, 1)) >exports : Symbol(export=, Decl(conn.js, 8, 1)) >Conn : Symbol(Conn, Decl(conn.js, 0, 0)) @@ -51,9 +51,9 @@ class Wrap { } module.exports = { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/usage", Decl(usage.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(usage.js, 0, 0)) >module : Symbol(module, Decl(usage.js, 13, 1)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/usage", Decl(usage.js, 0, 0)) +>exports : Symbol(module.exports, Decl(usage.js, 0, 0)) Wrap >Wrap : Symbol(Wrap, Decl(usage.js, 15, 18)) diff --git a/tests/baselines/reference/jsDeclarationsTypedefAndImportTypes.types b/tests/baselines/reference/jsDeclarationsTypedefAndImportTypes.types index 906bdf516b25b..39c4eec9d19f8 100644 --- a/tests/baselines/reference/jsDeclarationsTypedefAndImportTypes.types +++ b/tests/baselines/reference/jsDeclarationsTypedefAndImportTypes.types @@ -18,7 +18,7 @@ class Conn { module.exports = Conn; >module.exports = Conn : typeof Conn >module.exports : typeof Conn ->module : { "\"tests/cases/conformance/jsdoc/declarations/conn\"": typeof Conn; } +>module : { exports: typeof Conn; } >exports : typeof Conn >Conn : typeof Conn @@ -56,10 +56,10 @@ class Wrap { } module.exports = { ->module.exports = { Wrap} : typeof import("tests/cases/conformance/jsdoc/declarations/usage") ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/usage") ->module : { "\"tests/cases/conformance/jsdoc/declarations/usage\"": typeof import("tests/cases/conformance/jsdoc/declarations/usage"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/usage") +>module.exports = { Wrap} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{ Wrap} : { Wrap: typeof Wrap; } Wrap diff --git a/tests/baselines/reference/jsDeclarationsTypedefPropertyAndExportAssignment.symbols b/tests/baselines/reference/jsDeclarationsTypedefPropertyAndExportAssignment.symbols index 8ff603449906b..c41b8b567f1b8 100644 --- a/tests/baselines/reference/jsDeclarationsTypedefPropertyAndExportAssignment.symbols +++ b/tests/baselines/reference/jsDeclarationsTypedefPropertyAndExportAssignment.symbols @@ -28,7 +28,7 @@ class MainThreadTasks { } module.exports = MainThreadTasks; ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/index", Decl(index.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) >module : Symbol(export=, Decl(index.js, 18, 1)) >exports : Symbol(export=, Decl(index.js, 18, 1)) >MainThreadTasks : Symbol(MainThreadTasks, Decl(index.js, 0, 61)) @@ -76,9 +76,9 @@ const taskNameToGroup = {}; >taskNameToGroup : Symbol(taskNameToGroup, Decl(module.js, 24, 5)) module.exports = { ->module.exports : Symbol("tests/cases/conformance/jsdoc/declarations/module", Decl(module.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(module.js, 0, 0)) >module : Symbol(module, Decl(module.js, 24, 27)) ->exports : Symbol("tests/cases/conformance/jsdoc/declarations/module", Decl(module.js, 0, 0)) +>exports : Symbol(module.exports, Decl(module.js, 0, 0)) taskGroups, >taskGroups : Symbol(taskGroups, Decl(module.js, 26, 18)) diff --git a/tests/baselines/reference/jsDeclarationsTypedefPropertyAndExportAssignment.types b/tests/baselines/reference/jsDeclarationsTypedefPropertyAndExportAssignment.types index f3556aae0a4ae..f79cf2ecd15a8 100644 --- a/tests/baselines/reference/jsDeclarationsTypedefPropertyAndExportAssignment.types +++ b/tests/baselines/reference/jsDeclarationsTypedefPropertyAndExportAssignment.types @@ -31,7 +31,7 @@ class MainThreadTasks { module.exports = MainThreadTasks; >module.exports = MainThreadTasks : typeof MainThreadTasks >module.exports : typeof MainThreadTasks ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": typeof MainThreadTasks; } +>module : { exports: typeof MainThreadTasks; } >exports : typeof MainThreadTasks >MainThreadTasks : typeof MainThreadTasks @@ -86,10 +86,10 @@ const taskNameToGroup = {}; >{} : {} module.exports = { ->module.exports = { taskGroups, taskNameToGroup,} : typeof import("tests/cases/conformance/jsdoc/declarations/module") ->module.exports : typeof import("tests/cases/conformance/jsdoc/declarations/module") ->module : { "\"tests/cases/conformance/jsdoc/declarations/module\"": typeof import("tests/cases/conformance/jsdoc/declarations/module"); } ->exports : typeof import("tests/cases/conformance/jsdoc/declarations/module") +>module.exports = { taskGroups, taskNameToGroup,} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{ taskGroups, taskNameToGroup,} : { taskGroups: { parseHTML: { id: "parseHTML"; label: string; }; styleLayout: { id: "styleLayout"; label: string; }; }; taskNameToGroup: { [x: string]: TaskGroup; }; } taskGroups, diff --git a/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation.symbols b/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation.symbols index fbdb5079a30e6..faf6568b3b186 100644 --- a/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation.symbols +++ b/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation.symbols @@ -8,9 +8,9 @@ class Abcde { } module.exports = { ->module.exports : Symbol("/test", Decl(test.js, 0, 0), Decl(index.ts, 0, 31)) +>module.exports : Symbol("/test.js", Decl(test.js, 0, 0), Decl(index.ts, 0, 31)) >module : Symbol(module, Decl(test.js, 3, 1)) ->exports : Symbol("/test", Decl(test.js, 0, 0), Decl(index.ts, 0, 31)) +>exports : Symbol("/test.js", Decl(test.js, 0, 0), Decl(index.ts, 0, 31)) Abcde >Abcde : Symbol(Abcde, Decl(test.js, 5, 18)) diff --git a/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation.types b/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation.types index 3fad5767c4810..7bf746fe8658e 100644 --- a/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation.types +++ b/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation.types @@ -8,10 +8,10 @@ class Abcde { } module.exports = { ->module.exports = { Abcde} : typeof import("/test") ->module.exports : typeof import("/test") ->module : { "\"/test\"": typeof import("/test"); } ->exports : typeof import("/test") +>module.exports = { Abcde} : typeof module."./test" +>module.exports : typeof module."./test" +>module : { exports: typeof module."./test"; } +>exports : typeof module."./test" >{ Abcde} : { Abcde: typeof Abcde; } Abcde diff --git a/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation2.symbols b/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation2.symbols index 02da41d876c2d..6acf6ed809528 100644 --- a/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation2.symbols +++ b/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation2.symbols @@ -1,6 +1,6 @@ === /test.js === module.exports = { ->module.exports : Symbol("/test", Decl(test.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(test.js, 0, 0)) >module : Symbol("/test.js", Decl(test.js, 0, 0), Decl(index.ts, 0, 27)) >exports : Symbol("/test.js", Decl(test.js, 0, 0), Decl(index.ts, 0, 27)) diff --git a/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation2.types b/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation2.types index fa6e940f60b9e..dac05b430c3c0 100644 --- a/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation2.types +++ b/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation2.types @@ -2,7 +2,7 @@ module.exports = { >module.exports = { a: "ok"} : { a: string | number; } >module.exports : { a: string | number; } ->module : { "\"/test\"": { a: string | number; }; } +>module : { exports: { a: string | number; }; } >exports : { a: string | number; } >{ a: "ok"} : { a: string; } diff --git a/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation3.symbols b/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation3.symbols index c56d389851016..bf6d3fd676e5d 100644 --- a/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation3.symbols +++ b/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation3.symbols @@ -3,11 +3,11 @@ module.exports.x = 1; >module.exports.x : Symbol(x, Decl(x.js, 0, 0), Decl(y.d.ts, 0, 0)) >module.exports : Symbol(x, Decl(x.js, 0, 0), Decl(y.d.ts, 0, 0)) >module : Symbol(module, Decl(x.js, 0, 0)) ->exports : Symbol("/x", Decl(x.js, 0, 0)) +>exports : Symbol(module.exports, Decl(x.js, 0, 0)) >x : Symbol(x, Decl(x.js, 0, 0), Decl(y.d.ts, 0, 0)) module.exports = require("./y.js"); ->module.exports : Symbol("/x", Decl(x.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(x.js, 0, 0)) >module : Symbol(export=, Decl(x.js, 0, 21)) >exports : Symbol(export=, Decl(x.js, 0, 21)) >require : Symbol(require) diff --git a/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation3.types b/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation3.types index 6c66c601ffccb..d940bfd36890c 100644 --- a/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation3.types +++ b/tests/baselines/reference/jsExportMemberMergedWithModuleAugmentation3.types @@ -3,7 +3,7 @@ module.exports.x = 1; >module.exports.x = 1 : 1 >module.exports.x : number >module.exports : typeof import("/y") ->module : { "\"/x\"": typeof import("/y"); } +>module : { exports: typeof import("/y"); } >exports : typeof import("/y") >x : number >1 : 1 @@ -11,7 +11,7 @@ module.exports.x = 1; module.exports = require("./y.js"); >module.exports = require("./y.js") : typeof import("/y") >module.exports : typeof import("/y") ->module : { "\"/x\"": typeof import("/y"); } +>module : { exports: typeof import("/y"); } >exports : typeof import("/y") >require("./y.js") : typeof import("/y") >require : any diff --git a/tests/baselines/reference/jsFileClassPropertyInitalizationInObjectLiteral.symbols b/tests/baselines/reference/jsFileClassPropertyInitalizationInObjectLiteral.symbols index 3b1f9b780f996..9585ec717a4ee 100644 --- a/tests/baselines/reference/jsFileClassPropertyInitalizationInObjectLiteral.symbols +++ b/tests/baselines/reference/jsFileClassPropertyInitalizationInObjectLiteral.symbols @@ -1,6 +1,6 @@ === tests/cases/compiler/foo.js === module.exports = function () { ->module.exports : Symbol("tests/cases/compiler/foo", Decl(foo.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(foo.js, 0, 0)) >module : Symbol(export=, Decl(foo.js, 0, 0)) >exports : Symbol(export=, Decl(foo.js, 0, 0)) diff --git a/tests/baselines/reference/jsFileClassPropertyInitalizationInObjectLiteral.types b/tests/baselines/reference/jsFileClassPropertyInitalizationInObjectLiteral.types index c480a6e2556bb..52922bcefb6c0 100644 --- a/tests/baselines/reference/jsFileClassPropertyInitalizationInObjectLiteral.types +++ b/tests/baselines/reference/jsFileClassPropertyInitalizationInObjectLiteral.types @@ -2,7 +2,7 @@ module.exports = function () { >module.exports = function () { class A { } return { c: A.b = 1, }} : () => { c: number; } >module.exports : () => { c: number; } ->module : { "\"tests/cases/compiler/foo\"": () => { c: number; }; } +>module : { exports: () => { c: number; }; } >exports : () => { c: number; } >function () { class A { } return { c: A.b = 1, }} : () => { c: number; } diff --git a/tests/baselines/reference/jsdocImportType.symbols b/tests/baselines/reference/jsdocImportType.symbols index aeb548cd84fea..51860f3f941ec 100644 --- a/tests/baselines/reference/jsdocImportType.symbols +++ b/tests/baselines/reference/jsdocImportType.symbols @@ -49,7 +49,7 @@ class Chunk { } } module.exports = Chunk; ->module.exports : Symbol("tests/cases/conformance/jsdoc/mod1", Decl(mod1.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >module : Symbol(export=, Decl(mod1.js, 5, 1)) >exports : Symbol(export=, Decl(mod1.js, 5, 1)) >Chunk : Symbol(Chunk, Decl(mod1.js, 0, 0)) diff --git a/tests/baselines/reference/jsdocImportType.types b/tests/baselines/reference/jsdocImportType.types index b5703459955c3..51387f6c09ac7 100644 --- a/tests/baselines/reference/jsdocImportType.types +++ b/tests/baselines/reference/jsdocImportType.types @@ -54,7 +54,7 @@ class Chunk { module.exports = Chunk; >module.exports = Chunk : typeof Chunk >module.exports : typeof Chunk ->module : { "\"tests/cases/conformance/jsdoc/mod1\"": typeof Chunk; } +>module : { exports: typeof Chunk; } >exports : typeof Chunk >Chunk : typeof Chunk diff --git a/tests/baselines/reference/jsdocImportType2.symbols b/tests/baselines/reference/jsdocImportType2.symbols index cecfd006ea89c..1db0262b4d947 100644 --- a/tests/baselines/reference/jsdocImportType2.symbols +++ b/tests/baselines/reference/jsdocImportType2.symbols @@ -39,7 +39,7 @@ declare var module: { exports: any }; === tests/cases/conformance/jsdoc/mod1.js === /// module.exports = class Chunk { ->module.exports : Symbol("tests/cases/conformance/jsdoc/mod1", Decl(mod1.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >module : Symbol(export=, Decl(mod1.js, 0, 0)) >exports : Symbol(export=, Decl(mod1.js, 0, 0)) >Chunk : Symbol(Chunk, Decl(mod1.js, 1, 16)) diff --git a/tests/baselines/reference/jsdocImportType2.types b/tests/baselines/reference/jsdocImportType2.types index b966871b9eff3..76fe7c688ff9f 100644 --- a/tests/baselines/reference/jsdocImportType2.types +++ b/tests/baselines/reference/jsdocImportType2.types @@ -42,7 +42,7 @@ declare var module: { exports: any }; module.exports = class Chunk { >module.exports = class Chunk { constructor() { this.chunk = 1; }} : typeof import("tests/cases/conformance/jsdoc/mod1") >module.exports : typeof import("tests/cases/conformance/jsdoc/mod1") ->module : { "\"tests/cases/conformance/jsdoc/mod1\"": typeof import("tests/cases/conformance/jsdoc/mod1"); } +>module : { exports: typeof import("tests/cases/conformance/jsdoc/mod1"); } >exports : typeof import("tests/cases/conformance/jsdoc/mod1") >class Chunk { constructor() { this.chunk = 1; }} : typeof import("tests/cases/conformance/jsdoc/mod1") >Chunk : typeof import("tests/cases/conformance/jsdoc/mod1") diff --git a/tests/baselines/reference/jsdocImportTypeReferenceToClassAlias.symbols b/tests/baselines/reference/jsdocImportTypeReferenceToClassAlias.symbols index c62d8e0676fa5..443724ba82558 100644 --- a/tests/baselines/reference/jsdocImportTypeReferenceToClassAlias.symbols +++ b/tests/baselines/reference/jsdocImportTypeReferenceToClassAlias.symbols @@ -9,7 +9,7 @@ module.exports.C = C >module.exports.C : Symbol(C, Decl(mod1.js, 2, 1)) >module.exports : Symbol(C, Decl(mod1.js, 2, 1)) >module : Symbol(module, Decl(mod1.js, 2, 1)) ->exports : Symbol("tests/cases/conformance/jsdoc/mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >C : Symbol(C, Decl(mod1.js, 2, 1)) >C : Symbol(C, Decl(mod1.js, 0, 0)) diff --git a/tests/baselines/reference/jsdocImportTypeReferenceToClassAlias.types b/tests/baselines/reference/jsdocImportTypeReferenceToClassAlias.types index 0c6d7515d300e..d848122724d07 100644 --- a/tests/baselines/reference/jsdocImportTypeReferenceToClassAlias.types +++ b/tests/baselines/reference/jsdocImportTypeReferenceToClassAlias.types @@ -8,9 +8,9 @@ class C { module.exports.C = C >module.exports.C = C : typeof C >module.exports.C : typeof C ->module.exports : typeof import("tests/cases/conformance/jsdoc/mod1") ->module : { "\"tests/cases/conformance/jsdoc/mod1\"": typeof import("tests/cases/conformance/jsdoc/mod1"); } ->exports : typeof import("tests/cases/conformance/jsdoc/mod1") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >C : typeof C >C : typeof C diff --git a/tests/baselines/reference/jsdocTypeFromChainedAssignment2.symbols b/tests/baselines/reference/jsdocTypeFromChainedAssignment2.symbols index 646159ed41957..36dc09ed45448 100644 --- a/tests/baselines/reference/jsdocTypeFromChainedAssignment2.symbols +++ b/tests/baselines/reference/jsdocTypeFromChainedAssignment2.symbols @@ -44,12 +44,12 @@ module.exports.h = module.exports.i = function hi(mom) { >module.exports.h : Symbol(h, Decl(mod.js, 3, 1)) >module.exports : Symbol(h, Decl(mod.js, 3, 1)) >module : Symbol(module, Decl(mod.js, 3, 1)) ->exports : Symbol("tests/cases/conformance/jsdoc/mod", Decl(mod.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod.js, 0, 0)) >h : Symbol(h, Decl(mod.js, 3, 1)) >module.exports.i : Symbol(i, Decl(mod.js, 5, 18)) >module.exports : Symbol(i, Decl(mod.js, 5, 18)) >module : Symbol(module, Decl(mod.js, 3, 1)) ->exports : Symbol("tests/cases/conformance/jsdoc/mod", Decl(mod.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod.js, 0, 0)) >i : Symbol(i, Decl(mod.js, 5, 18)) >hi : Symbol(hi, Decl(mod.js, 5, 37)) >mom : Symbol(mom, Decl(mod.js, 5, 50)) diff --git a/tests/baselines/reference/jsdocTypeFromChainedAssignment2.types b/tests/baselines/reference/jsdocTypeFromChainedAssignment2.types index 9950788aa5743..aa98e4d224be7 100644 --- a/tests/baselines/reference/jsdocTypeFromChainedAssignment2.types +++ b/tests/baselines/reference/jsdocTypeFromChainedAssignment2.types @@ -20,17 +20,17 @@ mod.g('also no') >'also no' : "also no" mod.h(0) ->mod.h(0) : `hi, ${string}!` ->mod.h : (mom: string) => `hi, ${string}!` +>mod.h(0) : string +>mod.h : (mom: string) => string >mod : typeof mod ->h : (mom: string) => `hi, ${string}!` +>h : (mom: string) => string >0 : 0 mod.i(1) ->mod.i(1) : `hi, ${string}!` ->mod.i : (mom: string) => `hi, ${string}!` +>mod.i(1) : string +>mod.i : (mom: string) => string >mod : typeof mod ->i : (mom: string) => `hi, ${string}!` +>i : (mom: string) => string >1 : 1 === tests/cases/conformance/jsdoc/mod.js === @@ -55,24 +55,24 @@ exports.f = exports.g = function fg(n) { } /** @param {string} mom */ module.exports.h = module.exports.i = function hi(mom) { ->module.exports.h = module.exports.i = function hi(mom) { return `hi, ${mom}!`;} : (mom: string) => `hi, ${string}!` ->module.exports.h : (mom: string) => `hi, ${string}!` ->module.exports : typeof import("tests/cases/conformance/jsdoc/mod") ->module : { "\"tests/cases/conformance/jsdoc/mod\"": typeof import("tests/cases/conformance/jsdoc/mod"); } ->exports : typeof import("tests/cases/conformance/jsdoc/mod") ->h : (mom: string) => `hi, ${string}!` ->module.exports.i = function hi(mom) { return `hi, ${mom}!`;} : (mom: string) => `hi, ${string}!` ->module.exports.i : (mom: string) => `hi, ${string}!` ->module.exports : typeof import("tests/cases/conformance/jsdoc/mod") ->module : { "\"tests/cases/conformance/jsdoc/mod\"": typeof import("tests/cases/conformance/jsdoc/mod"); } ->exports : typeof import("tests/cases/conformance/jsdoc/mod") ->i : (mom: string) => `hi, ${string}!` ->function hi(mom) { return `hi, ${mom}!`;} : (mom: string) => `hi, ${string}!` ->hi : (mom: string) => `hi, ${string}!` +>module.exports.h = module.exports.i = function hi(mom) { return `hi, ${mom}!`;} : (mom: string) => string +>module.exports.h : (mom: string) => string +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports +>h : (mom: string) => string +>module.exports.i = function hi(mom) { return `hi, ${mom}!`;} : (mom: string) => string +>module.exports.i : (mom: string) => string +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports +>i : (mom: string) => string +>function hi(mom) { return `hi, ${mom}!`;} : (mom: string) => string +>hi : (mom: string) => string >mom : string return `hi, ${mom}!`; ->`hi, ${mom}!` : `hi, ${string}!` +>`hi, ${mom}!` : string >mom : string } diff --git a/tests/baselines/reference/jsdocTypeReferenceExports.symbols b/tests/baselines/reference/jsdocTypeReferenceExports.symbols index 0ae0a5e73a7e2..2e008b9a62f4e 100644 --- a/tests/baselines/reference/jsdocTypeReferenceExports.symbols +++ b/tests/baselines/reference/jsdocTypeReferenceExports.symbols @@ -1,8 +1,8 @@ === tests/cases/conformance/jsdoc/bug27342.js === module.exports = {} ->module.exports : Symbol("tests/cases/conformance/jsdoc/bug27342", Decl(bug27342.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(bug27342.js, 0, 0)) >module : Symbol(module, Decl(bug27342.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/jsdoc/bug27342", Decl(bug27342.js, 0, 0)) +>exports : Symbol(module.exports, Decl(bug27342.js, 0, 0)) /** * @type {exports} diff --git a/tests/baselines/reference/jsdocTypeReferenceExports.types b/tests/baselines/reference/jsdocTypeReferenceExports.types index cc0fd402cdbd2..c141fec60db22 100644 --- a/tests/baselines/reference/jsdocTypeReferenceExports.types +++ b/tests/baselines/reference/jsdocTypeReferenceExports.types @@ -1,9 +1,9 @@ === tests/cases/conformance/jsdoc/bug27342.js === module.exports = {} ->module.exports = {} : typeof import("tests/cases/conformance/jsdoc/bug27342") ->module.exports : typeof import("tests/cases/conformance/jsdoc/bug27342") ->module : { "\"tests/cases/conformance/jsdoc/bug27342\"": typeof import("tests/cases/conformance/jsdoc/bug27342"); } ->exports : typeof import("tests/cases/conformance/jsdoc/bug27342") +>module.exports = {} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{} : {} /** diff --git a/tests/baselines/reference/jsdocTypeReferenceToImportOfClassExpression.symbols b/tests/baselines/reference/jsdocTypeReferenceToImportOfClassExpression.symbols index e077215aeddbf..26d216ce83ad1 100644 --- a/tests/baselines/reference/jsdocTypeReferenceToImportOfClassExpression.symbols +++ b/tests/baselines/reference/jsdocTypeReferenceToImportOfClassExpression.symbols @@ -7,7 +7,7 @@ const MW = require("./MW"); /** @typedef {number} Cictema */ module.exports = class MC { ->module.exports : Symbol("tests/cases/conformance/jsdoc/MC", Decl(MC.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(MC.js, 0, 0)) >module : Symbol(export=, Decl(MC.js, 0, 27)) >exports : Symbol(export=, Decl(MC.js, 0, 27)) >MC : Symbol(MC, Decl(MC.js, 4, 16)) @@ -42,7 +42,7 @@ class MW { } module.exports = MW; ->module.exports : Symbol("tests/cases/conformance/jsdoc/MW", Decl(MW.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(MW.js, 0, 0)) >module : Symbol(export=, Decl(MW.js, 9, 1)) >exports : Symbol(export=, Decl(MW.js, 9, 1)) >MW : Symbol(MW, Decl(MW.js, 0, 0)) diff --git a/tests/baselines/reference/jsdocTypeReferenceToImportOfClassExpression.types b/tests/baselines/reference/jsdocTypeReferenceToImportOfClassExpression.types index 144cd81db37f2..b42dcf9bc5886 100644 --- a/tests/baselines/reference/jsdocTypeReferenceToImportOfClassExpression.types +++ b/tests/baselines/reference/jsdocTypeReferenceToImportOfClassExpression.types @@ -10,7 +10,7 @@ const MW = require("./MW"); module.exports = class MC { >module.exports = class MC { watch() { return new MW(this); }} : typeof import("tests/cases/conformance/jsdoc/MC") >module.exports : typeof import("tests/cases/conformance/jsdoc/MC") ->module : { "\"tests/cases/conformance/jsdoc/MC\"": typeof import("tests/cases/conformance/jsdoc/MC"); } +>module : { exports: typeof import("tests/cases/conformance/jsdoc/MC"); } >exports : typeof import("tests/cases/conformance/jsdoc/MC") >class MC { watch() { return new MW(this); }} : typeof import("tests/cases/conformance/jsdoc/MC") >MC : typeof import("tests/cases/conformance/jsdoc/MC") @@ -49,7 +49,7 @@ class MW { module.exports = MW; >module.exports = MW : typeof MW >module.exports : typeof MW ->module : { "\"tests/cases/conformance/jsdoc/MW\"": typeof MW; } +>module : { exports: typeof MW; } >exports : typeof MW >MW : typeof MW diff --git a/tests/baselines/reference/jsdocTypeReferenceToImportOfFunctionExpression.symbols b/tests/baselines/reference/jsdocTypeReferenceToImportOfFunctionExpression.symbols index d34dcbdaf10af..c903517abac42 100644 --- a/tests/baselines/reference/jsdocTypeReferenceToImportOfFunctionExpression.symbols +++ b/tests/baselines/reference/jsdocTypeReferenceToImportOfFunctionExpression.symbols @@ -8,7 +8,7 @@ const MW = require("./MW"); /** @class */ module.exports = function MC() { ->module.exports : Symbol("tests/cases/conformance/jsdoc/MC", Decl(MC.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(MC.js, 0, 0)) >module : Symbol(export=, Decl(MC.js, 0, 27)) >exports : Symbol(export=, Decl(MC.js, 0, 27)) >MC : Symbol(MC, Decl(MC.js, 5, 16)) @@ -44,7 +44,7 @@ class MW { } module.exports = MW; ->module.exports : Symbol("tests/cases/conformance/jsdoc/MW", Decl(MW.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(MW.js, 0, 0)) >module : Symbol(export=, Decl(MW.js, 9, 1)) >exports : Symbol(export=, Decl(MW.js, 9, 1)) >MW : Symbol(MW, Decl(MW.js, 0, 0)) diff --git a/tests/baselines/reference/jsdocTypeReferenceToImportOfFunctionExpression.types b/tests/baselines/reference/jsdocTypeReferenceToImportOfFunctionExpression.types index 5f88193871f50..f28d7e5e87e58 100644 --- a/tests/baselines/reference/jsdocTypeReferenceToImportOfFunctionExpression.types +++ b/tests/baselines/reference/jsdocTypeReferenceToImportOfFunctionExpression.types @@ -11,7 +11,7 @@ const MW = require("./MW"); module.exports = function MC() { >module.exports = function MC() { /** @type {any} */ var x = {} return new MW(x);} : { (): MW; new (): MC; } >module.exports : { (): MW; new (): MC; } ->module : { "\"tests/cases/conformance/jsdoc/MC\"": { (): MW; new (): MC; }; } +>module : { exports: { (): MW; new (): MC; }; } >exports : { (): MW; new (): MC; } >function MC() { /** @type {any} */ var x = {} return new MW(x);} : typeof MC >MC : typeof MC @@ -52,7 +52,7 @@ class MW { module.exports = MW; >module.exports = MW : typeof MW >module.exports : typeof MW ->module : { "\"tests/cases/conformance/jsdoc/MW\"": typeof MW; } +>module : { exports: typeof MW; } >exports : typeof MW >MW : typeof MW diff --git a/tests/baselines/reference/jsxChildrenSingleChildConfusableWithMultipleChildrenNoError.symbols b/tests/baselines/reference/jsxChildrenSingleChildConfusableWithMultipleChildrenNoError.symbols index 93737d2a6f8a0..b71806c0fd0d8 100644 --- a/tests/baselines/reference/jsxChildrenSingleChildConfusableWithMultipleChildrenNoError.symbols +++ b/tests/baselines/reference/jsxChildrenSingleChildConfusableWithMultipleChildrenNoError.symbols @@ -23,7 +23,7 @@ function TabLayout(props: Props) { >Props : Symbol(Props, Decl(jsxChildrenSingleChildConfusableWithMultipleChildrenNoError.tsx, 4, 36)) return
    ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) } export class App extends React.Component<{}> { @@ -40,10 +40,10 @@ export class App extends React.Component<{}> { {[ ['Users',
    ], ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) ['Products',
    ] ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) ]} diff --git a/tests/baselines/reference/jsxComplexSignatureHasApplicabilityError.symbols b/tests/baselines/reference/jsxComplexSignatureHasApplicabilityError.symbols index fb4c9ee121385..5898f14113507 100644 --- a/tests/baselines/reference/jsxComplexSignatureHasApplicabilityError.symbols +++ b/tests/baselines/reference/jsxComplexSignatureHasApplicabilityError.symbols @@ -183,8 +183,8 @@ export type ValueComponentType = React.ComponentTypeHandlerRendererResult : Symbol(HandlerRendererResult, Decl(jsxComplexSignatureHasApplicabilityError.tsx, 53, 106)) ->JSX : Symbol(JSX, Decl(react16.d.ts, 2367, 12)) ->Element : Symbol(JSX.Element, Decl(react16.d.ts, 2368, 23)) +>JSX : Symbol(JSX, Decl(react16.d.ts, 2493, 12)) +>Element : Symbol(JSX.Element, Decl(react16.d.ts, 2494, 23)) // Handlers export type FocusOptionHandler = (option: Option) => void; @@ -1005,8 +1005,8 @@ export interface ReactSelectProps extends React.PropsnoResultsText : Symbol(ReactSelectProps.noResultsText, Decl(jsxComplexSignatureHasApplicabilityError.tsx, 438, 18)) ->JSX : Symbol(JSX, Decl(react16.d.ts, 2367, 12)) ->Element : Symbol(JSX.Element, Decl(react16.d.ts, 2368, 23)) +>JSX : Symbol(JSX, Decl(react16.d.ts, 2493, 12)) +>Element : Symbol(JSX.Element, Decl(react16.d.ts, 2494, 23)) /** * onBlur handler: function (event) {} @@ -1146,8 +1146,8 @@ export interface ReactSelectProps extends React.Propsplaceholder : Symbol(ReactSelectProps.placeholder, Decl(jsxComplexSignatureHasApplicabilityError.tsx, 524, 22)) ->JSX : Symbol(JSX, Decl(react16.d.ts, 2367, 12)) ->Element : Symbol(JSX.Element, Decl(react16.d.ts, 2368, 23)) +>JSX : Symbol(JSX, Decl(react16.d.ts, 2493, 12)) +>Element : Symbol(JSX.Element, Decl(react16.d.ts, 2494, 23)) /** * whether the selected option is removed from the dropdown on multi selects diff --git a/tests/baselines/reference/jsxDeclarationsWithEsModuleInteropNoCrash.symbols b/tests/baselines/reference/jsxDeclarationsWithEsModuleInteropNoCrash.symbols index 1efb61e125860..d0b4ea17dcec2 100644 --- a/tests/baselines/reference/jsxDeclarationsWithEsModuleInteropNoCrash.symbols +++ b/tests/baselines/reference/jsxDeclarationsWithEsModuleInteropNoCrash.symbols @@ -30,9 +30,9 @@ function Foo({ bar }) { >bar : Symbol(bar, Decl(jsxDeclarationsWithEsModuleInteropNoCrash.jsx, 12, 14)) return
    {bar}
    ; ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >bar : Symbol(bar, Decl(jsxDeclarationsWithEsModuleInteropNoCrash.jsx, 12, 14)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) } Foo.propTypes = propTypes; diff --git a/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react).symbols b/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react).symbols index f8c95e444e28b..d60398280eeb7 100644 --- a/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react).symbols +++ b/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react).symbols @@ -18,11 +18,11 @@ function Wrapper(props: Props) { >Props : Symbol(Props, Decl(jsxEmptyExpressionNotCountedAsChild.tsx, 1, 30)) return
    {props.children}
    ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >props.children : Symbol(Props.children, Decl(jsxEmptyExpressionNotCountedAsChild.tsx, 3, 17)) >props : Symbol(props, Decl(jsxEmptyExpressionNotCountedAsChild.tsx, 7, 17)) >children : Symbol(Props.children, Decl(jsxEmptyExpressionNotCountedAsChild.tsx, 3, 17)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) } const element = ( @@ -33,8 +33,8 @@ const element = ( {/* comment */}
    Hello
    ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >Wrapper : Symbol(Wrapper, Decl(jsxEmptyExpressionNotCountedAsChild.tsx, 5, 1)) diff --git a/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react-jsx).symbols b/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react-jsx).symbols index f8c95e444e28b..d60398280eeb7 100644 --- a/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react-jsx).symbols +++ b/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react-jsx).symbols @@ -18,11 +18,11 @@ function Wrapper(props: Props) { >Props : Symbol(Props, Decl(jsxEmptyExpressionNotCountedAsChild.tsx, 1, 30)) return
    {props.children}
    ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >props.children : Symbol(Props.children, Decl(jsxEmptyExpressionNotCountedAsChild.tsx, 3, 17)) >props : Symbol(props, Decl(jsxEmptyExpressionNotCountedAsChild.tsx, 7, 17)) >children : Symbol(Props.children, Decl(jsxEmptyExpressionNotCountedAsChild.tsx, 3, 17)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) } const element = ( @@ -33,8 +33,8 @@ const element = ( {/* comment */}
    Hello
    ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >Wrapper : Symbol(Wrapper, Decl(jsxEmptyExpressionNotCountedAsChild.tsx, 5, 1)) diff --git a/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react-jsxdev).symbols b/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react-jsxdev).symbols index f8c95e444e28b..d60398280eeb7 100644 --- a/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react-jsxdev).symbols +++ b/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react-jsxdev).symbols @@ -18,11 +18,11 @@ function Wrapper(props: Props) { >Props : Symbol(Props, Decl(jsxEmptyExpressionNotCountedAsChild.tsx, 1, 30)) return
    {props.children}
    ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >props.children : Symbol(Props.children, Decl(jsxEmptyExpressionNotCountedAsChild.tsx, 3, 17)) >props : Symbol(props, Decl(jsxEmptyExpressionNotCountedAsChild.tsx, 7, 17)) >children : Symbol(Props.children, Decl(jsxEmptyExpressionNotCountedAsChild.tsx, 3, 17)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) } const element = ( @@ -33,8 +33,8 @@ const element = ( {/* comment */}
    Hello
    ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >Wrapper : Symbol(Wrapper, Decl(jsxEmptyExpressionNotCountedAsChild.tsx, 5, 1)) diff --git a/tests/baselines/reference/jsxFragmentFactoryNoUnusedLocals.symbols b/tests/baselines/reference/jsxFragmentFactoryNoUnusedLocals.symbols index cbd2a790aaffa..ad5eefe8a8a02 100644 --- a/tests/baselines/reference/jsxFragmentFactoryNoUnusedLocals.symbols +++ b/tests/baselines/reference/jsxFragmentFactoryNoUnusedLocals.symbols @@ -22,18 +22,18 @@ export function Counter({ count = 0 }: CounterProps) { return <>

    {cnt}

    ->p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2467, 102)) +>p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2593, 102)) >cnt : Symbol(cnt, Decl(jsxFragmentFactoryNoUnusedLocals.tsx, 8, 11)) ->p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2467, 102)) +>p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2593, 102)) ->button : Symbol(JSX.IntrinsicElements.button, Decl(react16.d.ts, 2406, 96)) +>button : Symbol(JSX.IntrinsicElements.button, Decl(react16.d.ts, 2532, 96)) >onClick : Symbol(onClick, Decl(jsxFragmentFactoryNoUnusedLocals.tsx, 11, 15)) >setCnt : Symbol(setCnt, Decl(jsxFragmentFactoryNoUnusedLocals.tsx, 8, 15)) >prev : Symbol(prev, Decl(jsxFragmentFactoryNoUnusedLocals.tsx, 11, 39)) >prev : Symbol(prev, Decl(jsxFragmentFactoryNoUnusedLocals.tsx, 11, 39)) >type : Symbol(type, Decl(jsxFragmentFactoryNoUnusedLocals.tsx, 11, 58)) ->button : Symbol(JSX.IntrinsicElements.button, Decl(react16.d.ts, 2406, 96)) +>button : Symbol(JSX.IntrinsicElements.button, Decl(react16.d.ts, 2532, 96)) } diff --git a/tests/baselines/reference/jsxImportForSideEffectsNonExtantNoError.symbols b/tests/baselines/reference/jsxImportForSideEffectsNonExtantNoError.symbols index f64e0072861f5..bac91088acf24 100644 --- a/tests/baselines/reference/jsxImportForSideEffectsNonExtantNoError.symbols +++ b/tests/baselines/reference/jsxImportForSideEffectsNonExtantNoError.symbols @@ -7,6 +7,6 @@ import "./App.css"; // doesn't actually exist const tag =
    ; >tag : Symbol(tag, Decl(jsxImportForSideEffectsNonExtantNoError.tsx, 5, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) diff --git a/tests/baselines/reference/jsxIntrinsicElementsTypeArgumentErrors.symbols b/tests/baselines/reference/jsxIntrinsicElementsTypeArgumentErrors.symbols index 0f00830ff3836..f7d660158aa40 100644 --- a/tests/baselines/reference/jsxIntrinsicElementsTypeArgumentErrors.symbols +++ b/tests/baselines/reference/jsxIntrinsicElementsTypeArgumentErrors.symbols @@ -6,58 +6,58 @@ import * as React from "react"; // opening + closing const a = >
    ; // empty type args >a : Symbol(a, Decl(jsxIntrinsicElementsTypeArgumentErrors.tsx, 4, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) const b = >
    ; // trailing comma type args >b : Symbol(b, Decl(jsxIntrinsicElementsTypeArgumentErrors.tsx, 6, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) const c = >
    ; // nonexistant type args >c : Symbol(c, Decl(jsxIntrinsicElementsTypeArgumentErrors.tsx, 8, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) const d = >>
    ; // nested missing type args >d : Symbol(d, Decl(jsxIntrinsicElementsTypeArgumentErrors.tsx, 10, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) const e = >>
    ; // existing but incorrect nested type args >e : Symbol(e, Decl(jsxIntrinsicElementsTypeArgumentErrors.tsx, 12, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >Record : Symbol(Record, Decl(lib.es5.d.ts, --, --)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) const f = >
; // existing type argument with no internal issues >f : Symbol(f, Decl(jsxIntrinsicElementsTypeArgumentErrors.tsx, 14, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) // self-closing const g = />; // empty type args >g : Symbol(g, Decl(jsxIntrinsicElementsTypeArgumentErrors.tsx, 17, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) const h = />; // trailing comma type args >h : Symbol(h, Decl(jsxIntrinsicElementsTypeArgumentErrors.tsx, 19, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) const i = />; // nonexistant type args >i : Symbol(i, Decl(jsxIntrinsicElementsTypeArgumentErrors.tsx, 21, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) const j = >/>; // nested missing type args >j : Symbol(j, Decl(jsxIntrinsicElementsTypeArgumentErrors.tsx, 23, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) const k = >/>; // existing but incorrect nested type args >k : Symbol(k, Decl(jsxIntrinsicElementsTypeArgumentErrors.tsx, 25, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >Record : Symbol(Record, Decl(lib.es5.d.ts, --, --)) const l = />; // existing type argument with no internal issues >l : Symbol(l, Decl(jsxIntrinsicElementsTypeArgumentErrors.tsx, 27, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) diff --git a/tests/baselines/reference/jsxIssuesErrorWhenTagExpectsTooManyArguments.symbols b/tests/baselines/reference/jsxIssuesErrorWhenTagExpectsTooManyArguments.symbols index ce2ae27e6e285..04fbef1f422b5 100644 --- a/tests/baselines/reference/jsxIssuesErrorWhenTagExpectsTooManyArguments.symbols +++ b/tests/baselines/reference/jsxIssuesErrorWhenTagExpectsTooManyArguments.symbols @@ -20,8 +20,8 @@ function MyComp4(props: MyProps, context: any, bad: any, verybad: any) { >verybad : Symbol(verybad, Decl(jsxIssuesErrorWhenTagExpectsTooManyArguments.tsx, 8, 56)) return
; ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) } function MyComp3(props: MyProps, context: any, bad: any) { >MyComp3 : Symbol(MyComp3, Decl(jsxIssuesErrorWhenTagExpectsTooManyArguments.tsx, 10, 1)) @@ -31,8 +31,8 @@ function MyComp3(props: MyProps, context: any, bad: any) { >bad : Symbol(bad, Decl(jsxIssuesErrorWhenTagExpectsTooManyArguments.tsx, 11, 46)) return
; ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) } function MyComp2(props: MyProps, context: any) { >MyComp2 : Symbol(MyComp2, Decl(jsxIssuesErrorWhenTagExpectsTooManyArguments.tsx, 13, 1)) @@ -41,8 +41,8 @@ function MyComp2(props: MyProps, context: any) { >context : Symbol(context, Decl(jsxIssuesErrorWhenTagExpectsTooManyArguments.tsx, 14, 32)) return
->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) } const a = ; // using `MyComp` as a component should error - it expects more arguments than react provides @@ -66,8 +66,8 @@ declare function MyTagWithOptionalNonJSXBits(props: MyProps, context: any, nonRe >MyProps : Symbol(MyProps, Decl(jsxIssuesErrorWhenTagExpectsTooManyArguments.tsx, 2, 31)) >context : Symbol(context, Decl(jsxIssuesErrorWhenTagExpectsTooManyArguments.tsx, 22, 60)) >nonReactArg : Symbol(nonReactArg, Decl(jsxIssuesErrorWhenTagExpectsTooManyArguments.tsx, 22, 74)) ->JSX : Symbol(JSX, Decl(react16.d.ts, 2367, 12)) ->Element : Symbol(JSX.Element, Decl(react16.d.ts, 2368, 23)) +>JSX : Symbol(JSX, Decl(react16.d.ts, 2493, 12)) +>Element : Symbol(JSX.Element, Decl(react16.d.ts, 2494, 23)) const d = ; // Technically OK, but probably questionable >d : Symbol(d, Decl(jsxIssuesErrorWhenTagExpectsTooManyArguments.tsx, 23, 5)) diff --git a/tests/baselines/reference/jsxJsxsCjsTransformChildren(jsx=react-jsx).symbols b/tests/baselines/reference/jsxJsxsCjsTransformChildren(jsx=react-jsx).symbols index 9bdb4e987b5cd..5215f7f5980ed 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformChildren(jsx=react-jsx).symbols +++ b/tests/baselines/reference/jsxJsxsCjsTransformChildren(jsx=react-jsx).symbols @@ -2,8 +2,8 @@ /// const a =
text
; >a : Symbol(a, Decl(jsxJsxsCjsTransformChildren.tsx, 1, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) export {}; diff --git a/tests/baselines/reference/jsxJsxsCjsTransformChildren(jsx=react-jsxdev).symbols b/tests/baselines/reference/jsxJsxsCjsTransformChildren(jsx=react-jsxdev).symbols index 9bdb4e987b5cd..5215f7f5980ed 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformChildren(jsx=react-jsxdev).symbols +++ b/tests/baselines/reference/jsxJsxsCjsTransformChildren(jsx=react-jsxdev).symbols @@ -2,8 +2,8 @@ /// const a =
text
; >a : Symbol(a, Decl(jsxJsxsCjsTransformChildren.tsx, 1, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) export {}; diff --git a/tests/baselines/reference/jsxJsxsCjsTransformCustomImport(jsx=react-jsx).symbols b/tests/baselines/reference/jsxJsxsCjsTransformCustomImport(jsx=react-jsx).symbols index adc13ae6506c8..bf77d75b070ca 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformCustomImport(jsx=react-jsx).symbols +++ b/tests/baselines/reference/jsxJsxsCjsTransformCustomImport(jsx=react-jsx).symbols @@ -4,14 +4,14 @@ const a = <> >a : Symbol(a, Decl(jsxJsxsCjsTransformCustomImport.tsx, 1, 5))

->p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2467, 102)) ->p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2467, 102)) +>p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2593, 102)) +>p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2593, 102)) text
->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >className : Symbol(className, Decl(jsxJsxsCjsTransformCustomImport.tsx, 4, 6)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) diff --git a/tests/baselines/reference/jsxJsxsCjsTransformCustomImport(jsx=react-jsxdev).symbols b/tests/baselines/reference/jsxJsxsCjsTransformCustomImport(jsx=react-jsxdev).symbols index adc13ae6506c8..bf77d75b070ca 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformCustomImport(jsx=react-jsxdev).symbols +++ b/tests/baselines/reference/jsxJsxsCjsTransformCustomImport(jsx=react-jsxdev).symbols @@ -4,14 +4,14 @@ const a = <> >a : Symbol(a, Decl(jsxJsxsCjsTransformCustomImport.tsx, 1, 5))

->p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2467, 102)) ->p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2467, 102)) +>p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2593, 102)) +>p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2593, 102)) text
->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >className : Symbol(className, Decl(jsxJsxsCjsTransformCustomImport.tsx, 4, 6)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) diff --git a/tests/baselines/reference/jsxJsxsCjsTransformCustomImportPragma(jsx=react-jsx).symbols b/tests/baselines/reference/jsxJsxsCjsTransformCustomImportPragma(jsx=react-jsx).symbols index c4bd360c1a3ea..3605d596d4792 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformCustomImportPragma(jsx=react-jsx).symbols +++ b/tests/baselines/reference/jsxJsxsCjsTransformCustomImportPragma(jsx=react-jsx).symbols @@ -6,14 +6,14 @@ const a = <> >a : Symbol(a, Decl(react.tsx, 3, 5))

->p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2467, 102)) ->p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2467, 102)) +>p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2593, 102)) +>p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2593, 102)) text
->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >className : Symbol(className, Decl(react.tsx, 6, 6)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) @@ -25,14 +25,14 @@ const a = <> >a : Symbol(a, Decl(preact.tsx, 2, 5))

->p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2467, 102)) ->p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2467, 102)) +>p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2593, 102)) +>p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2593, 102)) text
->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >className : Symbol(className, Decl(preact.tsx, 5, 6)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) diff --git a/tests/baselines/reference/jsxJsxsCjsTransformCustomImportPragma(jsx=react-jsxdev).symbols b/tests/baselines/reference/jsxJsxsCjsTransformCustomImportPragma(jsx=react-jsxdev).symbols index c4bd360c1a3ea..3605d596d4792 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformCustomImportPragma(jsx=react-jsxdev).symbols +++ b/tests/baselines/reference/jsxJsxsCjsTransformCustomImportPragma(jsx=react-jsxdev).symbols @@ -6,14 +6,14 @@ const a = <> >a : Symbol(a, Decl(react.tsx, 3, 5))

->p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2467, 102)) ->p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2467, 102)) +>p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2593, 102)) +>p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2593, 102)) text
->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >className : Symbol(className, Decl(react.tsx, 6, 6)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) @@ -25,14 +25,14 @@ const a = <> >a : Symbol(a, Decl(preact.tsx, 2, 5))

->p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2467, 102)) ->p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2467, 102)) +>p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2593, 102)) +>p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2593, 102)) text
->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >className : Symbol(className, Decl(preact.tsx, 5, 6)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) diff --git a/tests/baselines/reference/jsxJsxsCjsTransformKeyProp(jsx=react-jsx).symbols b/tests/baselines/reference/jsxJsxsCjsTransformKeyProp(jsx=react-jsx).symbols index 2dada593db2fa..2fc0a754ceba1 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformKeyProp(jsx=react-jsx).symbols +++ b/tests/baselines/reference/jsxJsxsCjsTransformKeyProp(jsx=react-jsx).symbols @@ -6,17 +6,17 @@ const props = { answer: 42 } const a =
text
; >a : Symbol(a, Decl(jsxJsxsCjsTransformKeyProp.tsx, 2, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >key : Symbol(key, Decl(jsxJsxsCjsTransformKeyProp.tsx, 2, 14)) >props : Symbol(props, Decl(jsxJsxsCjsTransformKeyProp.tsx, 1, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) const b =
text
; >b : Symbol(b, Decl(jsxJsxsCjsTransformKeyProp.tsx, 3, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >props : Symbol(props, Decl(jsxJsxsCjsTransformKeyProp.tsx, 1, 5)) >key : Symbol(key, Decl(jsxJsxsCjsTransformKeyProp.tsx, 3, 25)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) export {}; diff --git a/tests/baselines/reference/jsxJsxsCjsTransformKeyProp(jsx=react-jsxdev).symbols b/tests/baselines/reference/jsxJsxsCjsTransformKeyProp(jsx=react-jsxdev).symbols index 2dada593db2fa..2fc0a754ceba1 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformKeyProp(jsx=react-jsxdev).symbols +++ b/tests/baselines/reference/jsxJsxsCjsTransformKeyProp(jsx=react-jsxdev).symbols @@ -6,17 +6,17 @@ const props = { answer: 42 } const a =
text
; >a : Symbol(a, Decl(jsxJsxsCjsTransformKeyProp.tsx, 2, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >key : Symbol(key, Decl(jsxJsxsCjsTransformKeyProp.tsx, 2, 14)) >props : Symbol(props, Decl(jsxJsxsCjsTransformKeyProp.tsx, 1, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) const b =
text
; >b : Symbol(b, Decl(jsxJsxsCjsTransformKeyProp.tsx, 3, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >props : Symbol(props, Decl(jsxJsxsCjsTransformKeyProp.tsx, 1, 5)) >key : Symbol(key, Decl(jsxJsxsCjsTransformKeyProp.tsx, 3, 25)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) export {}; diff --git a/tests/baselines/reference/jsxJsxsCjsTransformKeyPropCustomImport(jsx=react-jsx).symbols b/tests/baselines/reference/jsxJsxsCjsTransformKeyPropCustomImport(jsx=react-jsx).symbols index 801d791f75ef1..d6c5fbdcc50fb 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformKeyPropCustomImport(jsx=react-jsx).symbols +++ b/tests/baselines/reference/jsxJsxsCjsTransformKeyPropCustomImport(jsx=react-jsx).symbols @@ -6,17 +6,17 @@ const props = { answer: 42 } const a =
text
; >a : Symbol(a, Decl(jsxJsxsCjsTransformKeyPropCustomImport.tsx, 2, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >key : Symbol(key, Decl(jsxJsxsCjsTransformKeyPropCustomImport.tsx, 2, 14)) >props : Symbol(props, Decl(jsxJsxsCjsTransformKeyPropCustomImport.tsx, 1, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) const b =
text
; >b : Symbol(b, Decl(jsxJsxsCjsTransformKeyPropCustomImport.tsx, 3, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >props : Symbol(props, Decl(jsxJsxsCjsTransformKeyPropCustomImport.tsx, 1, 5)) >key : Symbol(key, Decl(jsxJsxsCjsTransformKeyPropCustomImport.tsx, 3, 25)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) export {}; diff --git a/tests/baselines/reference/jsxJsxsCjsTransformKeyPropCustomImport(jsx=react-jsxdev).symbols b/tests/baselines/reference/jsxJsxsCjsTransformKeyPropCustomImport(jsx=react-jsxdev).symbols index 801d791f75ef1..d6c5fbdcc50fb 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformKeyPropCustomImport(jsx=react-jsxdev).symbols +++ b/tests/baselines/reference/jsxJsxsCjsTransformKeyPropCustomImport(jsx=react-jsxdev).symbols @@ -6,17 +6,17 @@ const props = { answer: 42 } const a =
text
; >a : Symbol(a, Decl(jsxJsxsCjsTransformKeyPropCustomImport.tsx, 2, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >key : Symbol(key, Decl(jsxJsxsCjsTransformKeyPropCustomImport.tsx, 2, 14)) >props : Symbol(props, Decl(jsxJsxsCjsTransformKeyPropCustomImport.tsx, 1, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) const b =
text
; >b : Symbol(b, Decl(jsxJsxsCjsTransformKeyPropCustomImport.tsx, 3, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >props : Symbol(props, Decl(jsxJsxsCjsTransformKeyPropCustomImport.tsx, 1, 5)) >key : Symbol(key, Decl(jsxJsxsCjsTransformKeyPropCustomImport.tsx, 3, 25)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) export {}; diff --git a/tests/baselines/reference/jsxJsxsCjsTransformKeyPropCustomImportPragma(jsx=react-jsx).symbols b/tests/baselines/reference/jsxJsxsCjsTransformKeyPropCustomImportPragma(jsx=react-jsx).symbols index 433cf36d0b5d2..20b34e4ce457c 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformKeyPropCustomImportPragma(jsx=react-jsx).symbols +++ b/tests/baselines/reference/jsxJsxsCjsTransformKeyPropCustomImportPragma(jsx=react-jsx).symbols @@ -8,17 +8,17 @@ const props2 = { answer: 42 } const a2 =
text
; >a2 : Symbol(a2, Decl(react.tsx, 4, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >key : Symbol(key, Decl(react.tsx, 4, 15)) >props2 : Symbol(props2, Decl(react.tsx, 3, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) const b2 =
text
; >b2 : Symbol(b2, Decl(react.tsx, 5, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >props2 : Symbol(props2, Decl(react.tsx, 3, 5)) >key : Symbol(key, Decl(react.tsx, 5, 27)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) export {}; @@ -31,17 +31,17 @@ const props = { answer: 42 } const a =
text
; >a : Symbol(a, Decl(preact.tsx, 3, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >key : Symbol(key, Decl(preact.tsx, 3, 14)) >props : Symbol(props, Decl(preact.tsx, 2, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) const b =
text
; >b : Symbol(b, Decl(preact.tsx, 4, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >props : Symbol(props, Decl(preact.tsx, 2, 5)) >key : Symbol(key, Decl(preact.tsx, 4, 25)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) export {}; diff --git a/tests/baselines/reference/jsxJsxsCjsTransformKeyPropCustomImportPragma(jsx=react-jsxdev).symbols b/tests/baselines/reference/jsxJsxsCjsTransformKeyPropCustomImportPragma(jsx=react-jsxdev).symbols index 433cf36d0b5d2..20b34e4ce457c 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformKeyPropCustomImportPragma(jsx=react-jsxdev).symbols +++ b/tests/baselines/reference/jsxJsxsCjsTransformKeyPropCustomImportPragma(jsx=react-jsxdev).symbols @@ -8,17 +8,17 @@ const props2 = { answer: 42 } const a2 =
text
; >a2 : Symbol(a2, Decl(react.tsx, 4, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >key : Symbol(key, Decl(react.tsx, 4, 15)) >props2 : Symbol(props2, Decl(react.tsx, 3, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) const b2 =
text
; >b2 : Symbol(b2, Decl(react.tsx, 5, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >props2 : Symbol(props2, Decl(react.tsx, 3, 5)) >key : Symbol(key, Decl(react.tsx, 5, 27)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) export {}; @@ -31,17 +31,17 @@ const props = { answer: 42 } const a =
text
; >a : Symbol(a, Decl(preact.tsx, 3, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >key : Symbol(key, Decl(preact.tsx, 3, 14)) >props : Symbol(props, Decl(preact.tsx, 2, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) const b =
text
; >b : Symbol(b, Decl(preact.tsx, 4, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >props : Symbol(props, Decl(preact.tsx, 2, 5)) >key : Symbol(key, Decl(preact.tsx, 4, 25)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) export {}; diff --git a/tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsx).symbols b/tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsx).symbols index a5b6314f416f0..76380055b9466 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsx).symbols +++ b/tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsx).symbols @@ -9,13 +9,13 @@ console.log( >log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114))
->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114))
->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) ) @@ -25,16 +25,16 @@ console.log( >log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114))
->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114))
->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114))
->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) ) @@ -44,19 +44,19 @@ console.log( >log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) {[1, 2].map(i =>
{i}
)} >[1, 2].map : Symbol(Array.map, Decl(lib.es5.d.ts, --, --)) >map : Symbol(Array.map, Decl(lib.es5.d.ts, --, --)) >i : Symbol(i, Decl(jsxJsxsCjsTransformNestedSelfClosingChild.tsx, 18, 16)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >key : Symbol(key, Decl(jsxJsxsCjsTransformNestedSelfClosingChild.tsx, 18, 25)) >i : Symbol(i, Decl(jsxJsxsCjsTransformNestedSelfClosingChild.tsx, 18, 16)) >i : Symbol(i, Decl(jsxJsxsCjsTransformNestedSelfClosingChild.tsx, 18, 16)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114))
->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) ) diff --git a/tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsxdev).symbols b/tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsxdev).symbols index a5b6314f416f0..76380055b9466 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsxdev).symbols +++ b/tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsxdev).symbols @@ -9,13 +9,13 @@ console.log( >log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114))
->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114))
->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) ) @@ -25,16 +25,16 @@ console.log( >log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114))
->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114))
->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114))
->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) ) @@ -44,19 +44,19 @@ console.log( >log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) {[1, 2].map(i =>
{i}
)} >[1, 2].map : Symbol(Array.map, Decl(lib.es5.d.ts, --, --)) >map : Symbol(Array.map, Decl(lib.es5.d.ts, --, --)) >i : Symbol(i, Decl(jsxJsxsCjsTransformNestedSelfClosingChild.tsx, 18, 16)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) >key : Symbol(key, Decl(jsxJsxsCjsTransformNestedSelfClosingChild.tsx, 18, 25)) >i : Symbol(i, Decl(jsxJsxsCjsTransformNestedSelfClosingChild.tsx, 18, 16)) >i : Symbol(i, Decl(jsxJsxsCjsTransformNestedSelfClosingChild.tsx, 18, 16)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114))
->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) ) diff --git a/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNames(jsx=react-jsx).symbols b/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNames(jsx=react-jsx).symbols index f9c6220bda54d..46b6e95d0d43d 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNames(jsx=react-jsx).symbols +++ b/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNames(jsx=react-jsx).symbols @@ -2,7 +2,7 @@ /// const a =
>a : Symbol(a, Decl(jsxJsxsCjsTransformSubstitutesNames.tsx, 1, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) export {}; diff --git a/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNames(jsx=react-jsxdev).symbols b/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNames(jsx=react-jsxdev).symbols index f9c6220bda54d..46b6e95d0d43d 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNames(jsx=react-jsxdev).symbols +++ b/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNames(jsx=react-jsxdev).symbols @@ -2,7 +2,7 @@ /// const a =
>a : Symbol(a, Decl(jsxJsxsCjsTransformSubstitutesNames.tsx, 1, 5)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) export {}; diff --git a/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNamesFragment(jsx=react-jsx).symbols b/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNamesFragment(jsx=react-jsx).symbols index 900b88a374742..a3705840eafd9 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNamesFragment(jsx=react-jsx).symbols +++ b/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNamesFragment(jsx=react-jsx).symbols @@ -4,13 +4,13 @@ const a = <> >a : Symbol(a, Decl(jsxJsxsCjsTransformSubstitutesNamesFragment.tsx, 1, 5))

->p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2467, 102)) ->p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2467, 102)) +>p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2593, 102)) +>p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2593, 102)) text
->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) diff --git a/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNamesFragment(jsx=react-jsxdev).symbols b/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNamesFragment(jsx=react-jsxdev).symbols index 900b88a374742..a3705840eafd9 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNamesFragment(jsx=react-jsxdev).symbols +++ b/tests/baselines/reference/jsxJsxsCjsTransformSubstitutesNamesFragment(jsx=react-jsxdev).symbols @@ -4,13 +4,13 @@ const a = <> >a : Symbol(a, Decl(jsxJsxsCjsTransformSubstitutesNamesFragment.tsx, 1, 5))

->p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2467, 102)) ->p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2467, 102)) +>p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2593, 102)) +>p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2593, 102)) text
->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) diff --git a/tests/baselines/reference/jsxLibraryManagedAttributesUnusedGeneric.js b/tests/baselines/reference/jsxLibraryManagedAttributesUnusedGeneric.js new file mode 100644 index 0000000000000..d994e109fecf6 --- /dev/null +++ b/tests/baselines/reference/jsxLibraryManagedAttributesUnusedGeneric.js @@ -0,0 +1,34 @@ +//// [jsxLibraryManagedAttributesUnusedGeneric.tsx] +// @ts-ignore +import React from 'react' + +declare const jsx: typeof React.createElement +namespace jsx { + export namespace JSX { + export interface Element {} + export interface ElementClass {} + export interface ElementAttributesProperty {} + export interface ElementChildrenAttribute {} + export interface IntrinsicAttributes {} + export interface IntrinsicClassAttributes {} + export type IntrinsicElements = { + div: { className: string } + } + // Works + // export type LibraryManagedAttributes = P & { css: string }; + + // Equivalent to above, but fails + export type WithCSSProp

= P & { css: string } + export type LibraryManagedAttributes = WithCSSProp

+ + } +} + +declare const Comp: (p: { className?: string }) => null + +; + +//// [jsxLibraryManagedAttributesUnusedGeneric.js] +"use strict"; +exports.__esModule = true; +jsx(Comp, { css: "color:hotpink;" }); diff --git a/tests/baselines/reference/jsxLibraryManagedAttributesUnusedGeneric.symbols b/tests/baselines/reference/jsxLibraryManagedAttributesUnusedGeneric.symbols new file mode 100644 index 0000000000000..648be8bafaef1 --- /dev/null +++ b/tests/baselines/reference/jsxLibraryManagedAttributesUnusedGeneric.symbols @@ -0,0 +1,70 @@ +=== tests/cases/compiler/jsxLibraryManagedAttributesUnusedGeneric.tsx === +// @ts-ignore +import React from 'react' +>React : Symbol(React, Decl(jsxLibraryManagedAttributesUnusedGeneric.tsx, 1, 6)) + +declare const jsx: typeof React.createElement +>jsx : Symbol(jsx, Decl(jsxLibraryManagedAttributesUnusedGeneric.tsx, 3, 13), Decl(jsxLibraryManagedAttributesUnusedGeneric.tsx, 3, 45)) +>React : Symbol(React, Decl(jsxLibraryManagedAttributesUnusedGeneric.tsx, 1, 6)) + +namespace jsx { +>jsx : Symbol(jsx, Decl(jsxLibraryManagedAttributesUnusedGeneric.tsx, 3, 13), Decl(jsxLibraryManagedAttributesUnusedGeneric.tsx, 3, 45)) + + export namespace JSX { +>JSX : Symbol(JSX, Decl(jsxLibraryManagedAttributesUnusedGeneric.tsx, 4, 15)) + + export interface Element {} +>Element : Symbol(Element, Decl(jsxLibraryManagedAttributesUnusedGeneric.tsx, 5, 26)) + + export interface ElementClass {} +>ElementClass : Symbol(ElementClass, Decl(jsxLibraryManagedAttributesUnusedGeneric.tsx, 6, 35)) + + export interface ElementAttributesProperty {} +>ElementAttributesProperty : Symbol(ElementAttributesProperty, Decl(jsxLibraryManagedAttributesUnusedGeneric.tsx, 7, 40)) + + export interface ElementChildrenAttribute {} +>ElementChildrenAttribute : Symbol(ElementChildrenAttribute, Decl(jsxLibraryManagedAttributesUnusedGeneric.tsx, 8, 53)) + + export interface IntrinsicAttributes {} +>IntrinsicAttributes : Symbol(IntrinsicAttributes, Decl(jsxLibraryManagedAttributesUnusedGeneric.tsx, 9, 52)) + + export interface IntrinsicClassAttributes {} +>IntrinsicClassAttributes : Symbol(IntrinsicClassAttributes, Decl(jsxLibraryManagedAttributesUnusedGeneric.tsx, 10, 47)) +>T : Symbol(T, Decl(jsxLibraryManagedAttributesUnusedGeneric.tsx, 11, 50)) + + export type IntrinsicElements = { +>IntrinsicElements : Symbol(IntrinsicElements, Decl(jsxLibraryManagedAttributesUnusedGeneric.tsx, 11, 55)) + + div: { className: string } +>div : Symbol(div, Decl(jsxLibraryManagedAttributesUnusedGeneric.tsx, 12, 41)) +>className : Symbol(className, Decl(jsxLibraryManagedAttributesUnusedGeneric.tsx, 13, 18)) + } + // Works + // export type LibraryManagedAttributes = P & { css: string }; + + // Equivalent to above, but fails + export type WithCSSProp

= P & { css: string } +>WithCSSProp : Symbol(WithCSSProp, Decl(jsxLibraryManagedAttributesUnusedGeneric.tsx, 14, 9)) +>P : Symbol(P, Decl(jsxLibraryManagedAttributesUnusedGeneric.tsx, 19, 32)) +>P : Symbol(P, Decl(jsxLibraryManagedAttributesUnusedGeneric.tsx, 19, 32)) +>css : Symbol(css, Decl(jsxLibraryManagedAttributesUnusedGeneric.tsx, 19, 42)) + + export type LibraryManagedAttributes = WithCSSProp

+>LibraryManagedAttributes : Symbol(LibraryManagedAttributes, Decl(jsxLibraryManagedAttributesUnusedGeneric.tsx, 19, 56)) +>C : Symbol(C, Decl(jsxLibraryManagedAttributesUnusedGeneric.tsx, 20, 45)) +>P : Symbol(P, Decl(jsxLibraryManagedAttributesUnusedGeneric.tsx, 20, 47)) +>WithCSSProp : Symbol(WithCSSProp, Decl(jsxLibraryManagedAttributesUnusedGeneric.tsx, 14, 9)) +>P : Symbol(P, Decl(jsxLibraryManagedAttributesUnusedGeneric.tsx, 20, 47)) + + } +} + +declare const Comp: (p: { className?: string }) => null +>Comp : Symbol(Comp, Decl(jsxLibraryManagedAttributesUnusedGeneric.tsx, 25, 13)) +>p : Symbol(p, Decl(jsxLibraryManagedAttributesUnusedGeneric.tsx, 25, 21)) +>className : Symbol(className, Decl(jsxLibraryManagedAttributesUnusedGeneric.tsx, 25, 25)) + +; +>Comp : Symbol(Comp, Decl(jsxLibraryManagedAttributesUnusedGeneric.tsx, 25, 13)) +>css : Symbol(css, Decl(jsxLibraryManagedAttributesUnusedGeneric.tsx, 27, 6)) + diff --git a/tests/baselines/reference/jsxLibraryManagedAttributesUnusedGeneric.types b/tests/baselines/reference/jsxLibraryManagedAttributesUnusedGeneric.types new file mode 100644 index 0000000000000..46f0e28a4b31a --- /dev/null +++ b/tests/baselines/reference/jsxLibraryManagedAttributesUnusedGeneric.types @@ -0,0 +1,51 @@ +=== tests/cases/compiler/jsxLibraryManagedAttributesUnusedGeneric.tsx === +// @ts-ignore +import React from 'react' +>React : any + +declare const jsx: typeof React.createElement +>jsx : error +>React.createElement : error +>React : any +>createElement : any + +namespace jsx { + export namespace JSX { + export interface Element {} + export interface ElementClass {} + export interface ElementAttributesProperty {} + export interface ElementChildrenAttribute {} + export interface IntrinsicAttributes {} + export interface IntrinsicClassAttributes {} + export type IntrinsicElements = { +>IntrinsicElements : IntrinsicElements + + div: { className: string } +>div : { className: string; } +>className : string + } + // Works + // export type LibraryManagedAttributes = P & { css: string }; + + // Equivalent to above, but fails + export type WithCSSProp

= P & { css: string } +>WithCSSProp : WithCSSProp

+>css : string + + export type LibraryManagedAttributes = WithCSSProp

+>LibraryManagedAttributes : LibraryManagedAttributes + + } +} + +declare const Comp: (p: { className?: string }) => null +>Comp : (p: { className?: string;}) => null +>p : { className?: string; } +>className : string +>null : null + +; +> : jsx.JSX.Element +>Comp : (p: { className?: string; }) => null +>css : string + diff --git a/tests/baselines/reference/jsxPartialSpread.symbols b/tests/baselines/reference/jsxPartialSpread.symbols index 7b0a171064992..bb7321d0022a6 100644 --- a/tests/baselines/reference/jsxPartialSpread.symbols +++ b/tests/baselines/reference/jsxPartialSpread.symbols @@ -4,8 +4,8 @@ const Select = (p: {value?: unknown}) =>

; >Select : Symbol(Select, Decl(jsxPartialSpread.tsx, 1, 5)) >p : Symbol(p, Decl(jsxPartialSpread.tsx, 1, 16)) >value : Symbol(value, Decl(jsxPartialSpread.tsx, 1, 20)) ->p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2467, 102)) ->p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2467, 102)) +>p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2593, 102)) +>p : Symbol(JSX.IntrinsicElements.p, Decl(react16.d.ts, 2593, 102)) import React from 'react'; >React : Symbol(React, Decl(jsxPartialSpread.tsx, 2, 6)) diff --git a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport2.errors.txt b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport2.errors.txt index b02b8989d4910..1d5eef72deb69 100644 --- a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport2.errors.txt +++ b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport2.errors.txt @@ -1,7 +1,7 @@ -tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2.js(5,1): error TS7053: Element implicitly has an 'any' type because expression of type 'unique symbol' can't be used to index type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2")'. - Property '[_sym]' does not exist on type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2")'. -tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2.js(6,1): error TS7053: Element implicitly has an 'any' type because expression of type '"my-fake-sym"' can't be used to index type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2")'. - Property 'my-fake-sym' does not exist on type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2")'. +tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2.js(5,1): error TS7053: Element implicitly has an 'any' type because expression of type 'unique symbol' can't be used to index type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2.js")'. + Property '[_sym]' does not exist on type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2.js")'. +tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2.js(6,1): error TS7053: Element implicitly has an 'any' type because expression of type '"my-fake-sym"' can't be used to index type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2.js")'. + Property 'my-fake-sym' does not exist on type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2.js")'. tests/cases/conformance/salsa/usage.js(2,11): error TS7053: Element implicitly has an 'any' type because expression of type '"my-fake-sym"' can't be used to index type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2")'. Property 'my-fake-sym' does not exist on type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2")'. tests/cases/conformance/salsa/usage.js(3,11): error TS7053: Element implicitly has an 'any' type because expression of type 'unique symbol' can't be used to index type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2")'. @@ -26,10 +26,10 @@ tests/cases/conformance/salsa/usage.js(3,11): error TS7053: Element implicitly h module.exports[_sym] = "ok"; ~~~~~~~~~~~~~~~~~~~~ -!!! error TS7053: Element implicitly has an 'any' type because expression of type 'unique symbol' can't be used to index type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2")'. -!!! error TS7053: Property '[_sym]' does not exist on type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2")'. +!!! error TS7053: Element implicitly has an 'any' type because expression of type 'unique symbol' can't be used to index type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2.js")'. +!!! error TS7053: Property '[_sym]' does not exist on type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2.js")'. module.exports[_str] = "ok"; ~~~~~~~~~~~~~~~~~~~~ -!!! error TS7053: Element implicitly has an 'any' type because expression of type '"my-fake-sym"' can't be used to index type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2")'. -!!! error TS7053: Property 'my-fake-sym' does not exist on type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2")'. +!!! error TS7053: Element implicitly has an 'any' type because expression of type '"my-fake-sym"' can't be used to index type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2.js")'. +!!! error TS7053: Property 'my-fake-sym' does not exist on type 'typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2.js")'. module.exports.S = _sym; \ No newline at end of file diff --git a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport2.symbols b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport2.symbols index 5c252fe3db692..f529eb75d033b 100644 --- a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport2.symbols +++ b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport2.symbols @@ -25,22 +25,22 @@ const _str = "my-fake-sym"; >_str : Symbol(_str, Decl(lateBoundAssignmentDeclarationSupport2.js, 2, 5)) module.exports[_sym] = "ok"; ->module.exports : Symbol("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2", Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) >module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport2.js, 5, 28)) ->exports : Symbol("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2", Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) +>exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) >_sym : Symbol(_sym, Decl(lateBoundAssignmentDeclarationSupport2.js, 1, 5)) module.exports[_str] = "ok"; ->module.exports : Symbol("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2", Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) >module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport2.js, 5, 28)) ->exports : Symbol("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2", Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) +>exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) >_str : Symbol(_str, Decl(lateBoundAssignmentDeclarationSupport2.js, 2, 5)) module.exports.S = _sym; >module.exports.S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport2.js, 5, 28)) >module.exports : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport2.js, 5, 28)) >module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport2.js, 5, 28)) ->exports : Symbol("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2", Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) +>exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport2.js, 0, 0)) >S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport2.js, 5, 28)) >_sym : Symbol(_sym, Decl(lateBoundAssignmentDeclarationSupport2.js, 1, 5)) diff --git a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport2.types b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport2.types index 818a0ab212ed8..264a0dcc1747b 100644 --- a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport2.types +++ b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport2.types @@ -33,27 +33,27 @@ const _str = "my-fake-sym"; module.exports[_sym] = "ok"; >module.exports[_sym] = "ok" : "ok" >module.exports[_sym] : any ->module.exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2") ->module : { "\"tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2\"": typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2"); } ->exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >_sym : unique symbol >"ok" : "ok" module.exports[_str] = "ok"; >module.exports[_str] = "ok" : "ok" >module.exports[_str] : any ->module.exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2") ->module : { "\"tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2\"": typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2"); } ->exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >_str : "my-fake-sym" >"ok" : "ok" module.exports.S = _sym; >module.exports.S = _sym : unique symbol >module.exports.S : unique symbol ->module.exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2") ->module : { "\"tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2\"": typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2"); } ->exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport2") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >S : unique symbol >_sym : unique symbol diff --git a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport3.symbols b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport3.symbols index 3a9c558d36042..956fbaf97280b 100644 --- a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport3.symbols +++ b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport3.symbols @@ -28,9 +28,9 @@ Object.defineProperty(module.exports, _sym, { value: "ok" }); >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->module.exports : Symbol("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport3", Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) >module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport3.js, 5, 61)) ->exports : Symbol("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport3", Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) +>exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) >_sym : Symbol(_sym, Decl(lateBoundAssignmentDeclarationSupport3.js, 1, 5)) >value : Symbol(value, Decl(lateBoundAssignmentDeclarationSupport3.js, 4, 45)) @@ -38,9 +38,9 @@ Object.defineProperty(module.exports, _str, { value: "ok" }); >Object.defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) >Object : Symbol(Object, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) >defineProperty : Symbol(ObjectConstructor.defineProperty, Decl(lib.es5.d.ts, --, --)) ->module.exports : Symbol("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport3", Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) >module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport3.js, 5, 61)) ->exports : Symbol("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport3", Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) +>exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) >_str : Symbol(_str, Decl(lateBoundAssignmentDeclarationSupport3.js, 2, 5)) >value : Symbol(value, Decl(lateBoundAssignmentDeclarationSupport3.js, 5, 45)) @@ -48,7 +48,7 @@ module.exports.S = _sym; >module.exports.S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport3.js, 5, 61)) >module.exports : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport3.js, 5, 61)) >module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport3.js, 5, 61)) ->exports : Symbol("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport3", Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) +>exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport3.js, 0, 0)) >S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport3.js, 5, 61)) >_sym : Symbol(_sym, Decl(lateBoundAssignmentDeclarationSupport3.js, 1, 5)) diff --git a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport3.types b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport3.types index 8fc76045c486c..5909bdbaa63f4 100644 --- a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport3.types +++ b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport3.types @@ -35,9 +35,9 @@ Object.defineProperty(module.exports, _sym, { value: "ok" }); >Object.defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any ->module.exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport3") ->module : { "\"tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport3\"": typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport3"); } ->exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport3") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >_sym : unique symbol >{ value: "ok" } : { value: string; } >value : string @@ -48,9 +48,9 @@ Object.defineProperty(module.exports, _str, { value: "ok" }); >Object.defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any >Object : ObjectConstructor >defineProperty : (o: any, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => any ->module.exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport3") ->module : { "\"tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport3\"": typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport3"); } ->exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport3") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >_str : "my-fake-sym" >{ value: "ok" } : { value: string; } >value : string @@ -59,9 +59,9 @@ Object.defineProperty(module.exports, _str, { value: "ok" }); module.exports.S = _sym; >module.exports.S = _sym : unique symbol >module.exports.S : unique symbol ->module.exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport3") ->module : { "\"tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport3\"": typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport3"); } ->exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport3") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >S : unique symbol >_sym : unique symbol diff --git a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport4.symbols b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport4.symbols index fd52892f5a509..818026bbf4046 100644 --- a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport4.symbols +++ b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport4.symbols @@ -63,7 +63,7 @@ module.exports.F = F; >module.exports.F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport4.js, 10, 22)) >module.exports : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport4.js, 10, 22)) >module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport4.js, 10, 22)) ->exports : Symbol("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport4", Decl(lateBoundAssignmentDeclarationSupport4.js, 0, 0)) +>exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport4.js, 0, 0)) >F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport4.js, 10, 22)) >F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport4.js, 2, 27)) @@ -71,7 +71,7 @@ module.exports.S = _sym; >module.exports.S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport4.js, 11, 21)) >module.exports : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport4.js, 11, 21)) >module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport4.js, 10, 22)) ->exports : Symbol("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport4", Decl(lateBoundAssignmentDeclarationSupport4.js, 0, 0)) +>exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport4.js, 0, 0)) >S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport4.js, 11, 21)) >_sym : Symbol(_sym, Decl(lateBoundAssignmentDeclarationSupport4.js, 1, 5)) diff --git a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport4.types b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport4.types index ab76826b9a4cc..d35ba15c485da 100644 --- a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport4.types +++ b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport4.types @@ -78,18 +78,18 @@ const _z = inst[_sym]; module.exports.F = F; >module.exports.F = F : typeof F >module.exports.F : typeof F ->module.exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport4") ->module : { "\"tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport4\"": typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport4"); } ->exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport4") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >F : typeof F >F : typeof F module.exports.S = _sym; >module.exports.S = _sym : unique symbol >module.exports.S : unique symbol ->module.exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport4") ->module : { "\"tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport4\"": typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport4"); } ->exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport4") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >S : unique symbol >_sym : unique symbol diff --git a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport5.symbols b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport5.symbols index 90a1f464648ca..3eacc09891cee 100644 --- a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport5.symbols +++ b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport5.symbols @@ -64,7 +64,7 @@ module.exports.F = F; >module.exports.F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport5.js, 12, 22)) >module.exports : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport5.js, 12, 22)) >module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport5.js, 12, 22)) ->exports : Symbol("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport5", Decl(lateBoundAssignmentDeclarationSupport5.js, 0, 0)) +>exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport5.js, 0, 0)) >F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport5.js, 12, 22)) >F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport5.js, 2, 27), Decl(lateBoundAssignmentDeclarationSupport5.js, 5, 1)) @@ -72,7 +72,7 @@ module.exports.S = _sym; >module.exports.S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport5.js, 13, 21)) >module.exports : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport5.js, 13, 21)) >module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport5.js, 12, 22)) ->exports : Symbol("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport5", Decl(lateBoundAssignmentDeclarationSupport5.js, 0, 0)) +>exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport5.js, 0, 0)) >S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport5.js, 13, 21)) >_sym : Symbol(_sym, Decl(lateBoundAssignmentDeclarationSupport5.js, 1, 5)) diff --git a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport5.types b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport5.types index ec6fbfadb2aac..3335150d8a6a5 100644 --- a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport5.types +++ b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport5.types @@ -77,18 +77,18 @@ const _z = inst[_sym]; module.exports.F = F; >module.exports.F = F : typeof F >module.exports.F : typeof F ->module.exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport5") ->module : { "\"tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport5\"": typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport5"); } ->exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport5") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >F : typeof F >F : typeof F module.exports.S = _sym; >module.exports.S = _sym : unique symbol >module.exports.S : unique symbol ->module.exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport5") ->module : { "\"tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport5\"": typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport5"); } ->exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport5") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >S : unique symbol >_sym : unique symbol diff --git a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport6.symbols b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport6.symbols index f4feb41d11d40..d36c2500c4a74 100644 --- a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport6.symbols +++ b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport6.symbols @@ -77,7 +77,7 @@ module.exports.F = F; >module.exports.F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport6.js, 11, 22)) >module.exports : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport6.js, 11, 22)) >module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport6.js, 11, 22)) ->exports : Symbol("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport6", Decl(lateBoundAssignmentDeclarationSupport6.js, 0, 0)) +>exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport6.js, 0, 0)) >F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport6.js, 11, 22)) >F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport6.js, 2, 27)) @@ -85,7 +85,7 @@ module.exports.S = _sym; >module.exports.S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport6.js, 12, 21)) >module.exports : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport6.js, 12, 21)) >module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport6.js, 11, 22)) ->exports : Symbol("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport6", Decl(lateBoundAssignmentDeclarationSupport6.js, 0, 0)) +>exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport6.js, 0, 0)) >S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport6.js, 12, 21)) >_sym : Symbol(_sym, Decl(lateBoundAssignmentDeclarationSupport6.js, 1, 5)) diff --git a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport6.types b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport6.types index 8de2b0c0555da..31b00f9cd7719 100644 --- a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport6.types +++ b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport6.types @@ -95,18 +95,18 @@ const _z = inst[_sym]; module.exports.F = F; >module.exports.F = F : typeof F >module.exports.F : typeof F ->module.exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport6") ->module : { "\"tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport6\"": typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport6"); } ->exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport6") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >F : typeof F >F : typeof F module.exports.S = _sym; >module.exports.S = _sym : unique symbol >module.exports.S : unique symbol ->module.exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport6") ->module : { "\"tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport6\"": typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport6"); } ->exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport6") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >S : unique symbol >_sym : unique symbol diff --git a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport7.symbols b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport7.symbols index 12281050f5805..8fa7c82187bc2 100644 --- a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport7.symbols +++ b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport7.symbols @@ -43,7 +43,7 @@ module.exports.F = F; >module.exports.F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport7.js, 6, 15)) >module.exports : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport7.js, 6, 15)) >module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport7.js, 6, 15)) ->exports : Symbol("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport7", Decl(lateBoundAssignmentDeclarationSupport7.js, 0, 0)) +>exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport7.js, 0, 0)) >F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport7.js, 6, 15)) >F : Symbol(F, Decl(lateBoundAssignmentDeclarationSupport7.js, 1, 27), Decl(lateBoundAssignmentDeclarationSupport7.js, 4, 1), Decl(lateBoundAssignmentDeclarationSupport7.js, 5, 15)) @@ -51,7 +51,7 @@ module.exports.S = _sym; >module.exports.S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport7.js, 7, 21)) >module.exports : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport7.js, 7, 21)) >module : Symbol(module, Decl(lateBoundAssignmentDeclarationSupport7.js, 6, 15)) ->exports : Symbol("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport7", Decl(lateBoundAssignmentDeclarationSupport7.js, 0, 0)) +>exports : Symbol(module.exports, Decl(lateBoundAssignmentDeclarationSupport7.js, 0, 0)) >S : Symbol(S, Decl(lateBoundAssignmentDeclarationSupport7.js, 7, 21)) >_sym : Symbol(_sym, Decl(lateBoundAssignmentDeclarationSupport7.js, 0, 5)) diff --git a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport7.types b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport7.types index 8b0266457b6d3..865a576ee3aa8 100644 --- a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport7.types +++ b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport7.types @@ -53,18 +53,18 @@ F[_str] = "ok"; module.exports.F = F; >module.exports.F = F : typeof F >module.exports.F : typeof F ->module.exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport7") ->module : { "\"tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport7\"": typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport7"); } ->exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport7") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >F : typeof F >F : typeof F module.exports.S = _sym; >module.exports.S = _sym : unique symbol >module.exports.S : unique symbol ->module.exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport7") ->module : { "\"tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport7\"": typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport7"); } ->exports : typeof import("tests/cases/conformance/salsa/lateBoundAssignmentDeclarationSupport7") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >S : unique symbol >_sym : unique symbol diff --git a/tests/baselines/reference/moduleExportAlias.symbols b/tests/baselines/reference/moduleExportAlias.symbols index 67720f1cde304..4fd98f2a0b7a0 100644 --- a/tests/baselines/reference/moduleExportAlias.symbols +++ b/tests/baselines/reference/moduleExportAlias.symbols @@ -120,9 +120,9 @@ exports.func2 = function () { }; var moduleExportsAlias = module.exports; >moduleExportsAlias : Symbol(moduleExportsAlias, Decl(b.js, 4, 3)) ->module.exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(b.js, 0, 0)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) moduleExportsAlias.func3 = function () { }; >moduleExportsAlias.func3 : Symbol(func3, Decl(b.js, 4, 40)) @@ -133,15 +133,15 @@ module.exports.func4 = function () { }; >module.exports.func4 : Symbol(func4, Decl(b.js, 5, 43)) >module.exports : Symbol(func4, Decl(b.js, 5, 43)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) >func4 : Symbol(func4, Decl(b.js, 5, 43)) var multipleDeclarationAlias1 = exports = module.exports; >multipleDeclarationAlias1 : Symbol(multipleDeclarationAlias1, Decl(b.js, 8, 3)) >exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) ->module.exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(b.js, 0, 0)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) multipleDeclarationAlias1.func5 = function () { }; >multipleDeclarationAlias1.func5 : Symbol(func5, Decl(b.js, 8, 57)) @@ -150,9 +150,9 @@ multipleDeclarationAlias1.func5 = function () { }; var multipleDeclarationAlias2 = module.exports = exports; >multipleDeclarationAlias2 : Symbol(multipleDeclarationAlias2, Decl(b.js, 11, 3)) ->module.exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(b.js, 0, 0)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) >exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) multipleDeclarationAlias2.func6 = function () { }; @@ -176,9 +176,9 @@ multipleDeclarationAlias3.func7 = function () { }; var multipleDeclarationAlias4 = someOtherVariable = module.exports; >multipleDeclarationAlias4 : Symbol(multipleDeclarationAlias4, Decl(b.js, 18, 3)) >someOtherVariable : Symbol(someOtherVariable, Decl(b.js, 14, 3)) ->module.exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(b.js, 0, 0)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) multipleDeclarationAlias4.func8 = function () { }; >multipleDeclarationAlias4.func8 : Symbol(func8, Decl(b.js, 18, 67)) @@ -187,9 +187,9 @@ multipleDeclarationAlias4.func8 = function () { }; var multipleDeclarationAlias5 = module.exports = exports = {}; >multipleDeclarationAlias5 : Symbol(multipleDeclarationAlias5, Decl(b.js, 21, 3)) ->module.exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(b.js, 0, 0)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) >exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) multipleDeclarationAlias5.func9 = function () { }; @@ -200,9 +200,9 @@ multipleDeclarationAlias5.func9 = function () { }; var multipleDeclarationAlias6 = exports = module.exports = {}; >multipleDeclarationAlias6 : Symbol(multipleDeclarationAlias6, Decl(b.js, 24, 3)) >exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) ->module.exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(b.js, 0, 0)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) multipleDeclarationAlias6.func10 = function () { }; >multipleDeclarationAlias6.func10 : Symbol(func10, Decl(b.js, 24, 62)) @@ -211,9 +211,9 @@ multipleDeclarationAlias6.func10 = function () { }; exports = module.exports = someOtherVariable = {}; >exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) ->module.exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(b.js, 0, 0)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) >someOtherVariable : Symbol(someOtherVariable, Decl(b.js, 14, 3)) exports.func11 = function () { }; @@ -225,14 +225,14 @@ module.exports.func12 = function () { }; >module.exports.func12 : Symbol(func12, Decl(b.js, 28, 33), Decl(b.js, 32, 33)) >module.exports : Symbol(func12, Decl(b.js, 28, 33), Decl(b.js, 32, 33)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) >func12 : Symbol(func12, Decl(b.js, 28, 33), Decl(b.js, 32, 33)) exports = module.exports = someOtherVariable = {}; >exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) ->module.exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(b.js, 0, 0)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) >someOtherVariable : Symbol(someOtherVariable, Decl(b.js, 14, 3)) exports.func11 = function () { }; @@ -244,14 +244,14 @@ module.exports.func12 = function () { }; >module.exports.func12 : Symbol(func12, Decl(b.js, 28, 33), Decl(b.js, 32, 33)) >module.exports : Symbol(func12, Decl(b.js, 28, 33), Decl(b.js, 32, 33)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) >func12 : Symbol(func12, Decl(b.js, 28, 33), Decl(b.js, 32, 33)) exports = module.exports = {}; >exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) ->module.exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(b.js, 0, 0)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) exports.func13 = function () { }; >exports.func13 : Symbol(func13, Decl(b.js, 35, 30)) @@ -262,14 +262,14 @@ module.exports.func14 = function () { }; >module.exports.func14 : Symbol(func14, Decl(b.js, 36, 33)) >module.exports : Symbol(func14, Decl(b.js, 36, 33)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) >func14 : Symbol(func14, Decl(b.js, 36, 33)) exports = module.exports = {}; >exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) ->module.exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(b.js, 0, 0)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) exports.func15 = function () { }; >exports.func15 : Symbol(func15, Decl(b.js, 39, 30)) @@ -280,13 +280,13 @@ module.exports.func16 = function () { }; >module.exports.func16 : Symbol(func16, Decl(b.js, 40, 33)) >module.exports : Symbol(func16, Decl(b.js, 40, 33)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) >func16 : Symbol(func16, Decl(b.js, 40, 33)) module.exports = exports = {}; ->module.exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(b.js, 0, 0)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) >exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) exports.func17 = function () { }; @@ -298,13 +298,13 @@ module.exports.func18 = function () { }; >module.exports.func18 : Symbol(func18, Decl(b.js, 44, 33)) >module.exports : Symbol(func18, Decl(b.js, 44, 33)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) >func18 : Symbol(func18, Decl(b.js, 44, 33)) module.exports = {}; ->module.exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(b.js, 0, 0)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) exports.func19 = function () { }; >exports.func19 : Symbol(func19, Decl(b.js, 47, 20)) @@ -315,7 +315,7 @@ module.exports.func20 = function () { }; >module.exports.func20 : Symbol(func20, Decl(b.js, 48, 33)) >module.exports : Symbol(func20, Decl(b.js, 48, 33)) >module : Symbol(module, Decl(b.js, 4, 24)) ->exports : Symbol("tests/cases/conformance/salsa/b", Decl(b.js, 0, 0)) +>exports : Symbol(module.exports, Decl(b.js, 0, 0)) >func20 : Symbol(func20, Decl(b.js, 48, 33)) diff --git a/tests/baselines/reference/moduleExportAlias.types b/tests/baselines/reference/moduleExportAlias.types index 14acd06f75e54..899aadd2c8645 100644 --- a/tests/baselines/reference/moduleExportAlias.types +++ b/tests/baselines/reference/moduleExportAlias.types @@ -123,54 +123,54 @@ exports.func2 = function () { }; >function () { } : () => void var moduleExportsAlias = module.exports; ->moduleExportsAlias : typeof import("tests/cases/conformance/salsa/b") ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } ->exports : typeof import("tests/cases/conformance/salsa/b") +>moduleExportsAlias : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports moduleExportsAlias.func3 = function () { }; >moduleExportsAlias.func3 = function () { } : () => void >moduleExportsAlias.func3 : () => void ->moduleExportsAlias : typeof import("tests/cases/conformance/salsa/b") +>moduleExportsAlias : typeof module.exports >func3 : () => void >function () { } : () => void module.exports.func4 = function () { }; >module.exports.func4 = function () { } : () => void >module.exports.func4 : () => void ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } ->exports : typeof import("tests/cases/conformance/salsa/b") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >func4 : () => void >function () { } : () => void var multipleDeclarationAlias1 = exports = module.exports; ->multipleDeclarationAlias1 : typeof import("tests/cases/conformance/salsa/b") ->exports = module.exports : typeof import("tests/cases/conformance/salsa/b") ->exports : typeof import("tests/cases/conformance/salsa/b") ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } +>multipleDeclarationAlias1 : typeof module.exports +>exports = module.exports : typeof module.exports >exports : typeof import("tests/cases/conformance/salsa/b") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports multipleDeclarationAlias1.func5 = function () { }; >multipleDeclarationAlias1.func5 = function () { } : () => void >multipleDeclarationAlias1.func5 : () => void ->multipleDeclarationAlias1 : typeof import("tests/cases/conformance/salsa/b") +>multipleDeclarationAlias1 : typeof module.exports >func5 : () => void >function () { } : () => void var multipleDeclarationAlias2 = module.exports = exports; ->multipleDeclarationAlias2 : typeof import("tests/cases/conformance/salsa/b") ->module.exports = exports : typeof import("tests/cases/conformance/salsa/b") ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } ->exports : typeof import("tests/cases/conformance/salsa/b") +>multipleDeclarationAlias2 : typeof module.exports +>module.exports = exports : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >exports : typeof import("tests/cases/conformance/salsa/b") multipleDeclarationAlias2.func6 = function () { }; >multipleDeclarationAlias2.func6 = function () { } : () => void >multipleDeclarationAlias2.func6 : () => void ->multipleDeclarationAlias2 : typeof import("tests/cases/conformance/salsa/b") +>multipleDeclarationAlias2 : typeof module.exports >func6 : () => void >function () { } : () => void @@ -191,26 +191,26 @@ multipleDeclarationAlias3.func7 = function () { }; >function () { } : () => void var multipleDeclarationAlias4 = someOtherVariable = module.exports; ->multipleDeclarationAlias4 : typeof import("tests/cases/conformance/salsa/b") ->someOtherVariable = module.exports : typeof import("tests/cases/conformance/salsa/b") +>multipleDeclarationAlias4 : typeof module.exports +>someOtherVariable = module.exports : typeof module.exports >someOtherVariable : any ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } ->exports : typeof import("tests/cases/conformance/salsa/b") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports multipleDeclarationAlias4.func8 = function () { }; >multipleDeclarationAlias4.func8 = function () { } : () => void >multipleDeclarationAlias4.func8 : () => void ->multipleDeclarationAlias4 : typeof import("tests/cases/conformance/salsa/b") +>multipleDeclarationAlias4 : typeof module.exports >func8 : () => void >function () { } : () => void var multipleDeclarationAlias5 = module.exports = exports = {}; ->multipleDeclarationAlias5 : typeof import("tests/cases/conformance/salsa/b") ->module.exports = exports = {} : typeof import("tests/cases/conformance/salsa/b") ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } ->exports : typeof import("tests/cases/conformance/salsa/b") +>multipleDeclarationAlias5 : typeof module.exports +>module.exports = exports = {} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >exports = {} : {} >exports : typeof import("tests/cases/conformance/salsa/b") >{} : {} @@ -218,34 +218,34 @@ var multipleDeclarationAlias5 = module.exports = exports = {}; multipleDeclarationAlias5.func9 = function () { }; >multipleDeclarationAlias5.func9 = function () { } : () => void >multipleDeclarationAlias5.func9 : () => void ->multipleDeclarationAlias5 : typeof import("tests/cases/conformance/salsa/b") +>multipleDeclarationAlias5 : typeof module.exports >func9 : () => void >function () { } : () => void var multipleDeclarationAlias6 = exports = module.exports = {}; ->multipleDeclarationAlias6 : typeof import("tests/cases/conformance/salsa/b") ->exports = module.exports = {} : typeof import("tests/cases/conformance/salsa/b") ->exports : typeof import("tests/cases/conformance/salsa/b") ->module.exports = {} : typeof import("tests/cases/conformance/salsa/b") ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } +>multipleDeclarationAlias6 : typeof module.exports +>exports = module.exports = {} : typeof module.exports >exports : typeof import("tests/cases/conformance/salsa/b") +>module.exports = {} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{} : {} multipleDeclarationAlias6.func10 = function () { }; >multipleDeclarationAlias6.func10 = function () { } : () => void >multipleDeclarationAlias6.func10 : () => void ->multipleDeclarationAlias6 : typeof import("tests/cases/conformance/salsa/b") +>multipleDeclarationAlias6 : typeof module.exports >func10 : () => void >function () { } : () => void exports = module.exports = someOtherVariable = {}; ->exports = module.exports = someOtherVariable = {} : typeof import("tests/cases/conformance/salsa/b") ->exports : typeof import("tests/cases/conformance/salsa/b") ->module.exports = someOtherVariable = {} : typeof import("tests/cases/conformance/salsa/b") ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } +>exports = module.exports = someOtherVariable = {} : typeof module.exports >exports : typeof import("tests/cases/conformance/salsa/b") +>module.exports = someOtherVariable = {} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >someOtherVariable = {} : {} >someOtherVariable : any >{} : {} @@ -260,19 +260,19 @@ exports.func11 = function () { }; module.exports.func12 = function () { }; >module.exports.func12 = function () { } : () => void >module.exports.func12 : () => void ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } ->exports : typeof import("tests/cases/conformance/salsa/b") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >func12 : () => void >function () { } : () => void exports = module.exports = someOtherVariable = {}; ->exports = module.exports = someOtherVariable = {} : typeof import("tests/cases/conformance/salsa/b") ->exports : typeof import("tests/cases/conformance/salsa/b") ->module.exports = someOtherVariable = {} : typeof import("tests/cases/conformance/salsa/b") ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } +>exports = module.exports = someOtherVariable = {} : typeof module.exports >exports : typeof import("tests/cases/conformance/salsa/b") +>module.exports = someOtherVariable = {} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >someOtherVariable = {} : {} >someOtherVariable : any >{} : {} @@ -287,19 +287,19 @@ exports.func11 = function () { }; module.exports.func12 = function () { }; >module.exports.func12 = function () { } : () => void >module.exports.func12 : () => void ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } ->exports : typeof import("tests/cases/conformance/salsa/b") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >func12 : () => void >function () { } : () => void exports = module.exports = {}; ->exports = module.exports = {} : typeof import("tests/cases/conformance/salsa/b") ->exports : typeof import("tests/cases/conformance/salsa/b") ->module.exports = {} : typeof import("tests/cases/conformance/salsa/b") ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } +>exports = module.exports = {} : typeof module.exports >exports : typeof import("tests/cases/conformance/salsa/b") +>module.exports = {} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{} : {} exports.func13 = function () { }; @@ -312,19 +312,19 @@ exports.func13 = function () { }; module.exports.func14 = function () { }; >module.exports.func14 = function () { } : () => void >module.exports.func14 : () => void ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } ->exports : typeof import("tests/cases/conformance/salsa/b") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >func14 : () => void >function () { } : () => void exports = module.exports = {}; ->exports = module.exports = {} : typeof import("tests/cases/conformance/salsa/b") ->exports : typeof import("tests/cases/conformance/salsa/b") ->module.exports = {} : typeof import("tests/cases/conformance/salsa/b") ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } +>exports = module.exports = {} : typeof module.exports >exports : typeof import("tests/cases/conformance/salsa/b") +>module.exports = {} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{} : {} exports.func15 = function () { }; @@ -337,17 +337,17 @@ exports.func15 = function () { }; module.exports.func16 = function () { }; >module.exports.func16 = function () { } : () => void >module.exports.func16 : () => void ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } ->exports : typeof import("tests/cases/conformance/salsa/b") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >func16 : () => void >function () { } : () => void module.exports = exports = {}; ->module.exports = exports = {} : typeof import("tests/cases/conformance/salsa/b") ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } ->exports : typeof import("tests/cases/conformance/salsa/b") +>module.exports = exports = {} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >exports = {} : {} >exports : typeof import("tests/cases/conformance/salsa/b") >{} : {} @@ -362,17 +362,17 @@ exports.func17 = function () { }; module.exports.func18 = function () { }; >module.exports.func18 = function () { } : () => void >module.exports.func18 : () => void ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } ->exports : typeof import("tests/cases/conformance/salsa/b") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >func18 : () => void >function () { } : () => void module.exports = {}; ->module.exports = {} : typeof import("tests/cases/conformance/salsa/b") ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } ->exports : typeof import("tests/cases/conformance/salsa/b") +>module.exports = {} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{} : {} exports.func19 = function () { }; @@ -385,9 +385,9 @@ exports.func19 = function () { }; module.exports.func20 = function () { }; >module.exports.func20 = function () { } : () => void >module.exports.func20 : () => void ->module.exports : typeof import("tests/cases/conformance/salsa/b") ->module : { "\"tests/cases/conformance/salsa/b\"": typeof import("tests/cases/conformance/salsa/b"); } ->exports : typeof import("tests/cases/conformance/salsa/b") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >func20 : () => void >function () { } : () => void diff --git a/tests/baselines/reference/moduleExportAlias2.symbols b/tests/baselines/reference/moduleExportAlias2.symbols index 2e33643aa9018..1b8b80f42adf1 100644 --- a/tests/baselines/reference/moduleExportAlias2.symbols +++ b/tests/baselines/reference/moduleExportAlias2.symbols @@ -31,7 +31,7 @@ declare var module: { exports: any }; /// exports = module.exports = C >exports : Symbol("tests/cases/conformance/salsa/semver", Decl(semver.js, 0, 0)) ->module.exports : Symbol("tests/cases/conformance/salsa/semver", Decl(semver.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(semver.js, 0, 0)) >module : Symbol(export=, Decl(semver.js, 1, 9)) >exports : Symbol(export=, Decl(semver.js, 1, 9)) >C : Symbol(C, Decl(semver.js, 2, 22)) diff --git a/tests/baselines/reference/moduleExportAlias2.types b/tests/baselines/reference/moduleExportAlias2.types index 6f8ba54ad61da..85d0ed5c5695f 100644 --- a/tests/baselines/reference/moduleExportAlias2.types +++ b/tests/baselines/reference/moduleExportAlias2.types @@ -38,7 +38,7 @@ exports = module.exports = C >exports : typeof C >module.exports = C : typeof C >module.exports : typeof C ->module : { "\"tests/cases/conformance/salsa/semver\"": typeof C; } +>module : { exports: typeof C; } >exports : typeof C >C : typeof C diff --git a/tests/baselines/reference/moduleExportAlias3.symbols b/tests/baselines/reference/moduleExportAlias3.symbols index 0132c04ea53f1..617d05ff52e9f 100644 --- a/tests/baselines/reference/moduleExportAlias3.symbols +++ b/tests/baselines/reference/moduleExportAlias3.symbols @@ -4,9 +4,9 @@ class C { >C : Symbol(C, Decl(bug24062.js, 0, 0)) } module.exports = { ->module.exports : Symbol("tests/cases/conformance/salsa/bug24062", Decl(bug24062.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(bug24062.js, 0, 0)) >module : Symbol(module, Decl(bug24062.js, 2, 1)) ->exports : Symbol("tests/cases/conformance/salsa/bug24062", Decl(bug24062.js, 0, 0)) +>exports : Symbol(module.exports, Decl(bug24062.js, 0, 0)) C >C : Symbol(C, Decl(bug24062.js, 3, 18)) diff --git a/tests/baselines/reference/moduleExportAlias3.types b/tests/baselines/reference/moduleExportAlias3.types index e5ff22316d183..20ab118c00262 100644 --- a/tests/baselines/reference/moduleExportAlias3.types +++ b/tests/baselines/reference/moduleExportAlias3.types @@ -4,10 +4,10 @@ class C { >C : C } module.exports = { ->module.exports = { C} : typeof import("tests/cases/conformance/salsa/bug24062") ->module.exports : typeof import("tests/cases/conformance/salsa/bug24062") ->module : { "\"tests/cases/conformance/salsa/bug24062\"": typeof import("tests/cases/conformance/salsa/bug24062"); } ->exports : typeof import("tests/cases/conformance/salsa/bug24062") +>module.exports = { C} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{ C} : { C: typeof C; } C diff --git a/tests/baselines/reference/moduleExportAlias4.symbols b/tests/baselines/reference/moduleExportAlias4.symbols index e7b83f18927d0..561d668343b38 100644 --- a/tests/baselines/reference/moduleExportAlias4.symbols +++ b/tests/baselines/reference/moduleExportAlias4.symbols @@ -6,7 +6,7 @@ var wat = require('./bug24024') >'./bug24024' : Symbol("tests/cases/conformance/salsa/bug24024", Decl(bug24024.js, 0, 0)) module.exports = class C {} ->module.exports : Symbol("tests/cases/conformance/salsa/bug24024", Decl(bug24024.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(bug24024.js, 0, 0)) >module : Symbol(export=, Decl(bug24024.js, 1, 31)) >exports : Symbol(export=, Decl(bug24024.js, 1, 31)) >C : Symbol(wat, Decl(bug24024.js, 2, 16)) @@ -15,7 +15,7 @@ module.exports.D = class D { } >module.exports.D : Symbol(wat.D, Decl(bug24024.js, 2, 27)) >module.exports : Symbol(wat.D, Decl(bug24024.js, 2, 27)) >module : Symbol(module, Decl(bug24024.js, 1, 31)) ->exports : Symbol("tests/cases/conformance/salsa/bug24024", Decl(bug24024.js, 0, 0)) +>exports : Symbol(module.exports, Decl(bug24024.js, 0, 0)) >D : Symbol(wat.D, Decl(bug24024.js, 2, 27)) >D : Symbol(wat.D, Decl(bug24024.js, 3, 18)) diff --git a/tests/baselines/reference/moduleExportAlias4.types b/tests/baselines/reference/moduleExportAlias4.types index 3f434998d6e11..293080a80bba7 100644 --- a/tests/baselines/reference/moduleExportAlias4.types +++ b/tests/baselines/reference/moduleExportAlias4.types @@ -9,7 +9,7 @@ var wat = require('./bug24024') module.exports = class C {} >module.exports = class C {} : typeof wat >module.exports : typeof wat ->module : { "\"tests/cases/conformance/salsa/bug24024\"": typeof wat; } +>module : { exports: typeof wat; } >exports : typeof wat >class C {} : typeof wat >C : typeof wat @@ -18,7 +18,7 @@ module.exports.D = class D { } >module.exports.D = class D { } : typeof wat.D >module.exports.D : typeof wat.D >module.exports : typeof wat ->module : { "\"tests/cases/conformance/salsa/bug24024\"": typeof wat; } +>module : { exports: typeof wat; } >exports : typeof wat >D : typeof wat.D >class D { } : typeof wat.D diff --git a/tests/baselines/reference/moduleExportAlias5.symbols b/tests/baselines/reference/moduleExportAlias5.symbols index 35e27b4a642ab..2f5467f066690 100644 --- a/tests/baselines/reference/moduleExportAlias5.symbols +++ b/tests/baselines/reference/moduleExportAlias5.symbols @@ -5,7 +5,7 @@ const webpack = function (){ } exports = module.exports = webpack; >exports : Symbol("tests/cases/conformance/salsa/bug24754", Decl(bug24754.js, 0, 0)) ->module.exports : Symbol("tests/cases/conformance/salsa/bug24754", Decl(bug24754.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(bug24754.js, 0, 0)) >module : Symbol(export=, Decl(bug24754.js, 3, 9)) >exports : Symbol(export=, Decl(bug24754.js, 3, 9)) >webpack : Symbol(webpack, Decl(bug24754.js, 1, 5), Decl(bug24754.js, 4, 23)) diff --git a/tests/baselines/reference/moduleExportAlias5.types b/tests/baselines/reference/moduleExportAlias5.types index e4e0b8b74b327..3a1c1a6839b21 100644 --- a/tests/baselines/reference/moduleExportAlias5.types +++ b/tests/baselines/reference/moduleExportAlias5.types @@ -9,7 +9,7 @@ exports = module.exports = webpack; >exports : { (): void; WebpackOptionsDefaulter: number; version: number; } >module.exports = webpack : { (): void; WebpackOptionsDefaulter: number; version: number; } >module.exports : { (): void; WebpackOptionsDefaulter: number; version: number; } ->module : { "\"tests/cases/conformance/salsa/bug24754\"": { (): void; WebpackOptionsDefaulter: number; version: number; }; } +>module : { exports: { (): void; WebpackOptionsDefaulter: number; version: number; }; } >exports : { (): void; WebpackOptionsDefaulter: number; version: number; } >webpack : { (): void; WebpackOptionsDefaulter: number; } diff --git a/tests/baselines/reference/moduleExportAliasExports.symbols b/tests/baselines/reference/moduleExportAliasExports.symbols index 7253e7ed5f344..07f6755d1ca70 100644 --- a/tests/baselines/reference/moduleExportAliasExports.symbols +++ b/tests/baselines/reference/moduleExportAliasExports.symbols @@ -12,7 +12,7 @@ exports.everywhere = 2 >everywhere : Symbol(everywhere, Decl(Eloquent.js, 2, 18)) module.exports = exports ->module.exports : Symbol("tests/cases/conformance/salsa/Eloquent", Decl(Eloquent.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(Eloquent.js, 0, 0)) >module : Symbol(export=, Decl(Eloquent.js, 3, 22)) >exports : Symbol(export=, Decl(Eloquent.js, 3, 22)) >exports : Symbol("tests/cases/conformance/salsa/Eloquent", Decl(Eloquent.js, 0, 0)) diff --git a/tests/baselines/reference/moduleExportAliasExports.types b/tests/baselines/reference/moduleExportAliasExports.types index d6c015f7f22ef..f9d38bfdc2859 100644 --- a/tests/baselines/reference/moduleExportAliasExports.types +++ b/tests/baselines/reference/moduleExportAliasExports.types @@ -22,7 +22,7 @@ exports.everywhere = 2 module.exports = exports >module.exports = exports : typeof import("tests/cases/conformance/salsa/Eloquent") >module.exports : typeof import("tests/cases/conformance/salsa/Eloquent") ->module : { "\"tests/cases/conformance/salsa/Eloquent\"": typeof import("tests/cases/conformance/salsa/Eloquent"); } +>module : { exports: typeof import("tests/cases/conformance/salsa/Eloquent"); } >exports : typeof import("tests/cases/conformance/salsa/Eloquent") >exports : typeof import("tests/cases/conformance/salsa/Eloquent") diff --git a/tests/baselines/reference/moduleExportAliasImported.symbols b/tests/baselines/reference/moduleExportAliasImported.symbols index 298e439a0d784..dbf1ca02af34d 100644 --- a/tests/baselines/reference/moduleExportAliasImported.symbols +++ b/tests/baselines/reference/moduleExportAliasImported.symbols @@ -8,7 +8,7 @@ function alias() { } >alias : Symbol(alias, Decl(bug28014.js, 0, 19)) module.exports = alias ->module.exports : Symbol("tests/cases/conformance/salsa/bug28014", Decl(bug28014.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(bug28014.js, 0, 0)) >module : Symbol(export=, Decl(bug28014.js, 1, 20)) >exports : Symbol(export=, Decl(bug28014.js, 1, 20)) >alias : Symbol(alias, Decl(bug28014.js, 0, 19)) diff --git a/tests/baselines/reference/moduleExportAliasImported.types b/tests/baselines/reference/moduleExportAliasImported.types index 9fa087f153349..f1de74c531ff3 100644 --- a/tests/baselines/reference/moduleExportAliasImported.types +++ b/tests/baselines/reference/moduleExportAliasImported.types @@ -12,7 +12,7 @@ function alias() { } module.exports = alias >module.exports = alias : typeof alias >module.exports : typeof alias ->module : { "\"tests/cases/conformance/salsa/bug28014\"": typeof alias; } +>module : { exports: typeof alias; } >exports : typeof alias >alias : typeof alias diff --git a/tests/baselines/reference/moduleExportAliasUnknown.symbols b/tests/baselines/reference/moduleExportAliasUnknown.symbols index 2913a704e1093..a20f90a24a88c 100644 --- a/tests/baselines/reference/moduleExportAliasUnknown.symbols +++ b/tests/baselines/reference/moduleExportAliasUnknown.symbols @@ -1,6 +1,6 @@ === tests/cases/conformance/salsa/bug27025.js === module.exports = window.nonprop; ->module.exports : Symbol("tests/cases/conformance/salsa/bug27025", Decl(bug27025.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(bug27025.js, 0, 0)) >module : Symbol(export=, Decl(bug27025.js, 0, 0)) >exports : Symbol(export=, Decl(bug27025.js, 0, 0)) >window : Symbol(window, Decl(lib.dom.d.ts, --, --)) diff --git a/tests/baselines/reference/moduleExportAliasUnknown.types b/tests/baselines/reference/moduleExportAliasUnknown.types index 66f7635d2f0d0..5fe930905de8f 100644 --- a/tests/baselines/reference/moduleExportAliasUnknown.types +++ b/tests/baselines/reference/moduleExportAliasUnknown.types @@ -2,7 +2,7 @@ module.exports = window.nonprop; >module.exports = window.nonprop : any >module.exports : any ->module : { "\"tests/cases/conformance/salsa/bug27025\"": any; } +>module : { exports: any; } >exports : any >window.nonprop : any >window : Window & typeof globalThis diff --git a/tests/baselines/reference/moduleExportAssignment.symbols b/tests/baselines/reference/moduleExportAssignment.symbols index e89dabfd946ef..7f8637927313a 100644 --- a/tests/baselines/reference/moduleExportAssignment.symbols +++ b/tests/baselines/reference/moduleExportAssignment.symbols @@ -25,7 +25,7 @@ class EE { } var npmlog = module.exports = new EE() >npmlog : Symbol(npmlog, Decl(npmlog.js, 4, 3)) ->module.exports : Symbol("tests/cases/conformance/salsa/npmlog", Decl(npmlog.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(npmlog.js, 0, 0)) >module : Symbol(npmlog, Decl(npmlog.js, 4, 12)) >exports : Symbol(npmlog, Decl(npmlog.js, 4, 12)) >EE : Symbol(EE, Decl(npmlog.js, 0, 0)) @@ -37,9 +37,9 @@ npmlog.on('hi') // both references should see EE.on module.exports.on('hi') // here too >module.exports.on : Symbol(EE.on, Decl(npmlog.js, 0, 10)) ->module.exports : Symbol("tests/cases/conformance/salsa/npmlog", Decl(npmlog.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(npmlog.js, 0, 0)) >module : Symbol(module, Decl(npmlog.js, 4, 12)) ->exports : Symbol("tests/cases/conformance/salsa/npmlog", Decl(npmlog.js, 0, 0)) +>exports : Symbol(module.exports, Decl(npmlog.js, 0, 0)) >on : Symbol(EE.on, Decl(npmlog.js, 0, 10)) npmlog.x = 1 @@ -51,7 +51,7 @@ module.exports.y = 2 >module.exports.y : Symbol(y, Decl(npmlog.js, 9, 12)) >module.exports : Symbol(y, Decl(npmlog.js, 9, 12)) >module : Symbol(module, Decl(npmlog.js, 4, 12)) ->exports : Symbol("tests/cases/conformance/salsa/npmlog", Decl(npmlog.js, 0, 0)) +>exports : Symbol(module.exports, Decl(npmlog.js, 0, 0)) >y : Symbol(y, Decl(npmlog.js, 9, 12)) npmlog.y @@ -61,8 +61,8 @@ npmlog.y module.exports.x >module.exports.x : Symbol(x, Decl(npmlog.js, 7, 23)) ->module.exports : Symbol("tests/cases/conformance/salsa/npmlog", Decl(npmlog.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(npmlog.js, 0, 0)) >module : Symbol(module, Decl(npmlog.js, 4, 12)) ->exports : Symbol("tests/cases/conformance/salsa/npmlog", Decl(npmlog.js, 0, 0)) +>exports : Symbol(module.exports, Decl(npmlog.js, 0, 0)) >x : Symbol(x, Decl(npmlog.js, 7, 23)) diff --git a/tests/baselines/reference/moduleExportAssignment.types b/tests/baselines/reference/moduleExportAssignment.types index 86edcb8f1490f..86d7fc553b41b 100644 --- a/tests/baselines/reference/moduleExportAssignment.types +++ b/tests/baselines/reference/moduleExportAssignment.types @@ -28,7 +28,7 @@ var npmlog = module.exports = new EE() >npmlog : { on(s: string): void; x: number; y: number; } >module.exports = new EE() : { on(s: string): void; x: number; y: number; } >module.exports : { on(s: string): void; x: number; y: number; } ->module : { "\"tests/cases/conformance/salsa/npmlog\"": { on(s: string): void; x: number; y: number; }; } +>module : { exports: { on(s: string): void; x: number; y: number; }; } >exports : { on(s: string): void; x: number; y: number; } >new EE() : EE >EE : typeof EE @@ -44,7 +44,7 @@ module.exports.on('hi') // here too >module.exports.on('hi') : void >module.exports.on : (s: string) => void >module.exports : { on(s: string): void; x: number; y: number; } ->module : { "\"tests/cases/conformance/salsa/npmlog\"": { on(s: string): void; x: number; y: number; }; } +>module : { exports: { on(s: string): void; x: number; y: number; }; } >exports : { on(s: string): void; x: number; y: number; } >on : (s: string) => void >'hi' : "hi" @@ -60,7 +60,7 @@ module.exports.y = 2 >module.exports.y = 2 : 2 >module.exports.y : number >module.exports : { on(s: string): void; x: number; y: number; } ->module : { "\"tests/cases/conformance/salsa/npmlog\"": { on(s: string): void; x: number; y: number; }; } +>module : { exports: { on(s: string): void; x: number; y: number; }; } >exports : { on(s: string): void; x: number; y: number; } >y : number >2 : 2 @@ -73,7 +73,7 @@ npmlog.y module.exports.x >module.exports.x : number >module.exports : { on(s: string): void; x: number; y: number; } ->module : { "\"tests/cases/conformance/salsa/npmlog\"": { on(s: string): void; x: number; y: number; }; } +>module : { exports: { on(s: string): void; x: number; y: number; }; } >exports : { on(s: string): void; x: number; y: number; } >x : number diff --git a/tests/baselines/reference/moduleExportAssignment2.symbols b/tests/baselines/reference/moduleExportAssignment2.symbols index eaafdbefb1fbc..69a09dcf4264d 100644 --- a/tests/baselines/reference/moduleExportAssignment2.symbols +++ b/tests/baselines/reference/moduleExportAssignment2.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/salsa/npm.js === var npm = module.exports = function (tree) { >npm : Symbol(npm, Decl(npm.js, 0, 3)) ->module.exports : Symbol("tests/cases/conformance/salsa/npm", Decl(npm.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(npm.js, 0, 0)) >module : Symbol(npm, Decl(npm.js, 0, 9)) >exports : Symbol(npm, Decl(npm.js, 0, 9)) >tree : Symbol(tree, Decl(npm.js, 0, 37)) @@ -10,7 +10,7 @@ module.exports.asReadInstalled = function (tree) { >module.exports.asReadInstalled : Symbol(asReadInstalled, Decl(npm.js, 1, 1)) >module.exports : Symbol(asReadInstalled, Decl(npm.js, 1, 1)) >module : Symbol(module, Decl(npm.js, 0, 9), Decl(npm.js, 3, 13)) ->exports : Symbol("tests/cases/conformance/salsa/npm", Decl(npm.js, 0, 0)) +>exports : Symbol(module.exports, Decl(npm.js, 0, 0)) >asReadInstalled : Symbol(asReadInstalled, Decl(npm.js, 1, 1)) >tree : Symbol(tree, Decl(npm.js, 2, 43)) @@ -19,9 +19,9 @@ module.exports.asReadInstalled = function (tree) { >tree : Symbol(tree, Decl(npm.js, 2, 43)) module.exports(tree) ->module.exports : Symbol("tests/cases/conformance/salsa/npm", Decl(npm.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(npm.js, 0, 0)) >module : Symbol(module, Decl(npm.js, 0, 9), Decl(npm.js, 3, 13)) ->exports : Symbol("tests/cases/conformance/salsa/npm", Decl(npm.js, 0, 0)) +>exports : Symbol(module.exports, Decl(npm.js, 0, 0)) >tree : Symbol(tree, Decl(npm.js, 2, 43)) } diff --git a/tests/baselines/reference/moduleExportAssignment2.types b/tests/baselines/reference/moduleExportAssignment2.types index bee712fc2b0ae..817c1578fb819 100644 --- a/tests/baselines/reference/moduleExportAssignment2.types +++ b/tests/baselines/reference/moduleExportAssignment2.types @@ -3,7 +3,7 @@ var npm = module.exports = function (tree) { >npm : { (tree: any): void; asReadInstalled: (tree: any) => void; } >module.exports = function (tree) {} : { (tree: any): void; asReadInstalled: (tree: any) => void; } >module.exports : { (tree: any): void; asReadInstalled: (tree: any) => void; } ->module : { "\"tests/cases/conformance/salsa/npm\"": { (tree: any): void; asReadInstalled: (tree: any) => void; }; } +>module : { exports: { (tree: any): void; asReadInstalled: (tree: any) => void; }; } >exports : { (tree: any): void; asReadInstalled: (tree: any) => void; } >function (tree) {} : (tree: any) => void >tree : any @@ -12,7 +12,7 @@ module.exports.asReadInstalled = function (tree) { >module.exports.asReadInstalled = function (tree) { npm(tree) // both references should be callable module.exports(tree)} : (tree: any) => void >module.exports.asReadInstalled : (tree: any) => void >module.exports : { (tree: any): void; asReadInstalled: (tree: any) => void; } ->module : { "\"tests/cases/conformance/salsa/npm\"": { (tree: any): void; asReadInstalled: (tree: any) => void; }; } +>module : { exports: { (tree: any): void; asReadInstalled: (tree: any) => void; }; } >exports : { (tree: any): void; asReadInstalled: (tree: any) => void; } >asReadInstalled : (tree: any) => void >function (tree) { npm(tree) // both references should be callable module.exports(tree)} : (tree: any) => void @@ -26,7 +26,7 @@ module.exports.asReadInstalled = function (tree) { module.exports(tree) >module.exports(tree) : void >module.exports : { (tree: any): void; asReadInstalled: (tree: any) => void; } ->module : { "\"tests/cases/conformance/salsa/npm\"": { (tree: any): void; asReadInstalled: (tree: any) => void; }; } +>module : { exports: { (tree: any): void; asReadInstalled: (tree: any) => void; }; } >exports : { (tree: any): void; asReadInstalled: (tree: any) => void; } >tree : any } diff --git a/tests/baselines/reference/moduleExportAssignment3.symbols b/tests/baselines/reference/moduleExportAssignment3.symbols index 8fe824814baba..80aceb88c0e58 100644 --- a/tests/baselines/reference/moduleExportAssignment3.symbols +++ b/tests/baselines/reference/moduleExportAssignment3.symbols @@ -9,13 +9,13 @@ mod() // should be callable from here too === tests/cases/conformance/salsa/mod.js === module.exports = function x() { } ->module.exports : Symbol("tests/cases/conformance/salsa/mod", Decl(mod.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod.js, 0, 0)) >module : Symbol(export=, Decl(mod.js, 0, 0)) >exports : Symbol(export=, Decl(mod.js, 0, 0)) >x : Symbol(x, Decl(mod.js, 0, 16)) module.exports() // should be callable ->module.exports : Symbol("tests/cases/conformance/salsa/mod", Decl(mod.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod.js, 0, 0)) >module : Symbol(module, Decl(mod.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/salsa/mod", Decl(mod.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod.js, 0, 0)) diff --git a/tests/baselines/reference/moduleExportAssignment3.types b/tests/baselines/reference/moduleExportAssignment3.types index 80c99d0a377f0..d652ac47c2993 100644 --- a/tests/baselines/reference/moduleExportAssignment3.types +++ b/tests/baselines/reference/moduleExportAssignment3.types @@ -13,7 +13,7 @@ mod() // should be callable from here too module.exports = function x() { } >module.exports = function x() { } : () => void >module.exports : () => void ->module : { "\"tests/cases/conformance/salsa/mod\"": () => void; } +>module : { exports: () => void; } >exports : () => void >function x() { } : () => void >x : () => void @@ -21,6 +21,6 @@ module.exports = function x() { } module.exports() // should be callable >module.exports() : void >module.exports : () => void ->module : { "\"tests/cases/conformance/salsa/mod\"": () => void; } +>module : { exports: () => void; } >exports : () => void diff --git a/tests/baselines/reference/moduleExportAssignment4.symbols b/tests/baselines/reference/moduleExportAssignment4.symbols index 530b452c200f0..d387cc3deeb06 100644 --- a/tests/baselines/reference/moduleExportAssignment4.symbols +++ b/tests/baselines/reference/moduleExportAssignment4.symbols @@ -6,7 +6,7 @@ exports.default = { m: 1, a: 1 } >a : Symbol(a, Decl(async.js, 0, 25)) module.exports = exports['default']; ->module.exports : Symbol("tests/cases/conformance/salsa/async", Decl(async.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(async.js, 0, 0)) >module : Symbol(export=, Decl(async.js, 0, 32)) >exports : Symbol(export=, Decl(async.js, 0, 32)) >exports : Symbol("tests/cases/conformance/salsa/async", Decl(async.js, 0, 0)) diff --git a/tests/baselines/reference/moduleExportAssignment4.types b/tests/baselines/reference/moduleExportAssignment4.types index 16053f1cc418c..465aaa78e275d 100644 --- a/tests/baselines/reference/moduleExportAssignment4.types +++ b/tests/baselines/reference/moduleExportAssignment4.types @@ -11,9 +11,9 @@ exports.default = { m: 1, a: 1 } >1 : 1 module.exports = exports['default']; ->module.exports = exports['default'] : any ->module.exports : any ->module : { "\"tests/cases/conformance/salsa/async\"": any; } +>module.exports = exports['default'] : error +>module.exports : error +>module : { exports: any; } >exports : any >exports['default'] : any >exports : any diff --git a/tests/baselines/reference/moduleExportAssignment5.symbols b/tests/baselines/reference/moduleExportAssignment5.symbols index 318b02b918514..73c06b8fcc119 100644 --- a/tests/baselines/reference/moduleExportAssignment5.symbols +++ b/tests/baselines/reference/moduleExportAssignment5.symbols @@ -18,7 +18,7 @@ axios.m() >m : Symbol(Axios.m, Decl(axios.js, 2, 5)) module.exports = axios; ->module.exports : Symbol("tests/cases/conformance/salsa/axios", Decl(axios.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(axios.js, 0, 0)) >module : Symbol(export=, Decl(axios.js, 7, 9)) >exports : Symbol(export=, Decl(axios.js, 7, 9)) >axios : Symbol(axios, Decl(axios.js, 5, 3)) @@ -27,7 +27,7 @@ module.exports.default = axios; >module.exports.default : Symbol(default, Decl(axios.js, 8, 23)) >module.exports : Symbol(default, Decl(axios.js, 8, 23)) >module : Symbol(module, Decl(axios.js, 7, 9)) ->exports : Symbol("tests/cases/conformance/salsa/axios", Decl(axios.js, 0, 0)) +>exports : Symbol(module.exports, Decl(axios.js, 0, 0)) >default : Symbol(default, Decl(axios.js, 8, 23)) >axios : Symbol(axios, Decl(axios.js, 5, 3)) diff --git a/tests/baselines/reference/moduleExportAssignment5.types b/tests/baselines/reference/moduleExportAssignment5.types index 07f36a230b204..eeaf014ec1790 100644 --- a/tests/baselines/reference/moduleExportAssignment5.types +++ b/tests/baselines/reference/moduleExportAssignment5.types @@ -22,7 +22,7 @@ axios.m() module.exports = axios; >module.exports = axios : { m(): void; default: Axios; } >module.exports : { m(): void; default: Axios; } ->module : { "\"tests/cases/conformance/salsa/axios\"": { m(): void; default: Axios; }; } +>module : { exports: { m(): void; default: Axios; }; } >exports : { m(): void; default: Axios; } >axios : Axios @@ -30,7 +30,7 @@ module.exports.default = axios; >module.exports.default = axios : Axios >module.exports.default : Axios >module.exports : { m(): void; default: Axios; } ->module : { "\"tests/cases/conformance/salsa/axios\"": { m(): void; default: Axios; }; } +>module : { exports: { m(): void; default: Axios; }; } >exports : { m(): void; default: Axios; } >default : Axios >axios : Axios diff --git a/tests/baselines/reference/moduleExportNestedNamespaces.symbols b/tests/baselines/reference/moduleExportNestedNamespaces.symbols index f2719df948721..af7c29bde1ae5 100644 --- a/tests/baselines/reference/moduleExportNestedNamespaces.symbols +++ b/tests/baselines/reference/moduleExportNestedNamespaces.symbols @@ -3,15 +3,15 @@ module.exports.n = {}; >module.exports.n : Symbol(n, Decl(mod.js, 0, 0), Decl(mod.js, 1, 15)) >module.exports : Symbol(n, Decl(mod.js, 0, 0), Decl(mod.js, 1, 15)) >module : Symbol(module, Decl(mod.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/salsa/mod", Decl(mod.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod.js, 0, 0)) >n : Symbol(n, Decl(mod.js, 0, 0), Decl(mod.js, 1, 15)) module.exports.n.K = function C() { >module.exports.n.K : Symbol(n.K, Decl(mod.js, 0, 22)) >module.exports.n : Symbol(n.K, Decl(mod.js, 0, 22)) ->module.exports : Symbol("tests/cases/conformance/salsa/mod", Decl(mod.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod.js, 0, 0)) >module : Symbol(module, Decl(mod.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/salsa/mod", Decl(mod.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod.js, 0, 0)) >n : Symbol(n, Decl(mod.js, 0, 0), Decl(mod.js, 1, 15)) >K : Symbol(n.K, Decl(mod.js, 0, 22)) >C : Symbol(C, Decl(mod.js, 1, 20)) @@ -25,7 +25,7 @@ module.exports.Classic = class { >module.exports.Classic : Symbol(Classic, Decl(mod.js, 3, 1)) >module.exports : Symbol(Classic, Decl(mod.js, 3, 1)) >module : Symbol(module, Decl(mod.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/salsa/mod", Decl(mod.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod.js, 0, 0)) >Classic : Symbol(Classic, Decl(mod.js, 3, 1)) constructor() { diff --git a/tests/baselines/reference/moduleExportNestedNamespaces.types b/tests/baselines/reference/moduleExportNestedNamespaces.types index 17f6bf86e9041..7e40296315496 100644 --- a/tests/baselines/reference/moduleExportNestedNamespaces.types +++ b/tests/baselines/reference/moduleExportNestedNamespaces.types @@ -2,9 +2,9 @@ module.exports.n = {}; >module.exports.n = {} : typeof n >module.exports.n : typeof n ->module.exports : typeof import("tests/cases/conformance/salsa/mod") ->module : { "\"tests/cases/conformance/salsa/mod\"": typeof import("tests/cases/conformance/salsa/mod"); } ->exports : typeof import("tests/cases/conformance/salsa/mod") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >n : typeof n >{} : {} @@ -12,9 +12,9 @@ module.exports.n.K = function C() { >module.exports.n.K = function C() { this.x = 10;} : typeof C >module.exports.n.K : typeof C >module.exports.n : typeof n ->module.exports : typeof import("tests/cases/conformance/salsa/mod") ->module : { "\"tests/cases/conformance/salsa/mod\"": typeof import("tests/cases/conformance/salsa/mod"); } ->exports : typeof import("tests/cases/conformance/salsa/mod") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >n : typeof n >K : typeof C >function C() { this.x = 10;} : typeof C @@ -30,9 +30,9 @@ module.exports.n.K = function C() { module.exports.Classic = class { >module.exports.Classic = class { constructor() { this.p = 1 }} : typeof Classic >module.exports.Classic : typeof Classic ->module.exports : typeof import("tests/cases/conformance/salsa/mod") ->module : { "\"tests/cases/conformance/salsa/mod\"": typeof import("tests/cases/conformance/salsa/mod"); } ->exports : typeof import("tests/cases/conformance/salsa/mod") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >Classic : typeof Classic >class { constructor() { this.p = 1 }} : typeof Classic diff --git a/tests/baselines/reference/moduleExportPropertyAssignmentDefault.symbols b/tests/baselines/reference/moduleExportPropertyAssignmentDefault.symbols index 0645e00f000dd..03c01f48237d7 100644 --- a/tests/baselines/reference/moduleExportPropertyAssignmentDefault.symbols +++ b/tests/baselines/reference/moduleExportPropertyAssignmentDefault.symbols @@ -3,7 +3,7 @@ var axios = {} >axios : Symbol(axios, Decl(axios.js, 0, 3)) module.exports = axios // both assignments should be ok ->module.exports : Symbol("tests/cases/conformance/salsa/axios", Decl(axios.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(axios.js, 0, 0)) >module : Symbol(export=, Decl(axios.js, 0, 14)) >exports : Symbol(export=, Decl(axios.js, 0, 14)) >axios : Symbol(axios, Decl(axios.js, 0, 3)) @@ -12,7 +12,7 @@ module.exports.default = axios >module.exports.default : Symbol(default, Decl(axios.js, 1, 22)) >module.exports : Symbol(default, Decl(axios.js, 1, 22)) >module : Symbol(module, Decl(axios.js, 0, 14)) ->exports : Symbol("tests/cases/conformance/salsa/axios", Decl(axios.js, 0, 0)) +>exports : Symbol(module.exports, Decl(axios.js, 0, 0)) >default : Symbol(default, Decl(axios.js, 1, 22)) >axios : Symbol(axios, Decl(axios.js, 0, 3)) diff --git a/tests/baselines/reference/moduleExportPropertyAssignmentDefault.types b/tests/baselines/reference/moduleExportPropertyAssignmentDefault.types index ee1f2dfeb2b8d..b13aca8612440 100644 --- a/tests/baselines/reference/moduleExportPropertyAssignmentDefault.types +++ b/tests/baselines/reference/moduleExportPropertyAssignmentDefault.types @@ -6,7 +6,7 @@ var axios = {} module.exports = axios // both assignments should be ok >module.exports = axios : typeof axios >module.exports : typeof axios ->module : { "\"tests/cases/conformance/salsa/axios\"": typeof axios; } +>module : { exports: typeof axios; } >exports : typeof axios >axios : typeof axios @@ -14,7 +14,7 @@ module.exports.default = axios >module.exports.default = axios : typeof axios >module.exports.default : typeof axios >module.exports : typeof axios ->module : { "\"tests/cases/conformance/salsa/axios\"": typeof axios; } +>module : { exports: typeof axios; } >exports : typeof axios >default : typeof axios >axios : typeof axios diff --git a/tests/baselines/reference/moduleExportWithExportPropertyAssignment.symbols b/tests/baselines/reference/moduleExportWithExportPropertyAssignment.symbols index c65205747a60f..5560e727afc95 100644 --- a/tests/baselines/reference/moduleExportWithExportPropertyAssignment.symbols +++ b/tests/baselines/reference/moduleExportWithExportPropertyAssignment.symbols @@ -25,7 +25,7 @@ declare function require(name: string): any; === tests/cases/conformance/salsa/mod1.js === /// module.exports = function () { } ->module.exports : Symbol("tests/cases/conformance/salsa/mod1", Decl(mod1.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >module : Symbol(export=, Decl(mod1.js, 0, 0)) >exports : Symbol(export=, Decl(mod1.js, 0, 0)) @@ -34,7 +34,7 @@ module.exports.f = function (a) { } >module.exports.f : Symbol(f, Decl(mod1.js, 1, 32)) >module.exports : Symbol(f, Decl(mod1.js, 1, 32)) >module : Symbol(module, Decl(mod1.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/salsa/mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >f : Symbol(f, Decl(mod1.js, 1, 32)) >a : Symbol(a, Decl(mod1.js, 3, 29)) diff --git a/tests/baselines/reference/moduleExportWithExportPropertyAssignment.types b/tests/baselines/reference/moduleExportWithExportPropertyAssignment.types index 21dc567a685f0..c58c815fb046a 100644 --- a/tests/baselines/reference/moduleExportWithExportPropertyAssignment.types +++ b/tests/baselines/reference/moduleExportWithExportPropertyAssignment.types @@ -30,7 +30,7 @@ declare function require(name: string): any; module.exports = function () { } >module.exports = function () { } : { (): void; f: (a: number) => void; } >module.exports : { (): void; f: (a: number) => void; } ->module : { "\"tests/cases/conformance/salsa/mod1\"": { (): void; f: (a: number) => void; }; } +>module : { exports: { (): void; f: (a: number) => void; }; } >exports : { (): void; f: (a: number) => void; } >function () { } : () => void @@ -39,7 +39,7 @@ module.exports.f = function (a) { } >module.exports.f = function (a) { } : (a: number) => void >module.exports.f : (a: number) => void >module.exports : { (): void; f: (a: number) => void; } ->module : { "\"tests/cases/conformance/salsa/mod1\"": { (): void; f: (a: number) => void; }; } +>module : { exports: { (): void; f: (a: number) => void; }; } >exports : { (): void; f: (a: number) => void; } >f : (a: number) => void >function (a) { } : (a: number) => void diff --git a/tests/baselines/reference/moduleExportWithExportPropertyAssignment2.symbols b/tests/baselines/reference/moduleExportWithExportPropertyAssignment2.symbols index 584bf77b334b7..782725aa7fa41 100644 --- a/tests/baselines/reference/moduleExportWithExportPropertyAssignment2.symbols +++ b/tests/baselines/reference/moduleExportWithExportPropertyAssignment2.symbols @@ -25,13 +25,13 @@ declare function require(name: string): any; === tests/cases/conformance/salsa/mod1.js === /// module.exports = 1 ->module.exports : Symbol("tests/cases/conformance/salsa/mod1", Decl(mod1.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >module : Symbol(export=, Decl(mod1.js, 0, 0)) >exports : Symbol(export=, Decl(mod1.js, 0, 0)) module.exports.f = function () { } >module.exports : Symbol(f, Decl(mod1.js, 1, 18)) >module : Symbol(module, Decl(mod1.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/salsa/mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >f : Symbol(f, Decl(mod1.js, 1, 18)) diff --git a/tests/baselines/reference/moduleExportWithExportPropertyAssignment2.types b/tests/baselines/reference/moduleExportWithExportPropertyAssignment2.types index 58ef2440b4761..49a9a88c378cb 100644 --- a/tests/baselines/reference/moduleExportWithExportPropertyAssignment2.types +++ b/tests/baselines/reference/moduleExportWithExportPropertyAssignment2.types @@ -33,7 +33,7 @@ declare function require(name: string): any; module.exports = 1 >module.exports = 1 : number >module.exports : number ->module : { "\"tests/cases/conformance/salsa/mod1\"": number; } +>module : { exports: number; } >exports : number >1 : 1 @@ -41,7 +41,7 @@ module.exports.f = function () { } >module.exports.f = function () { } : () => void >module.exports.f : any >module.exports : number ->module : { "\"tests/cases/conformance/salsa/mod1\"": number; } +>module : { exports: number; } >exports : number >f : any >function () { } : () => void diff --git a/tests/baselines/reference/moduleExportWithExportPropertyAssignment3.symbols b/tests/baselines/reference/moduleExportWithExportPropertyAssignment3.symbols index 6006339a0b418..2ee7a9ecdd6fa 100644 --- a/tests/baselines/reference/moduleExportWithExportPropertyAssignment3.symbols +++ b/tests/baselines/reference/moduleExportWithExportPropertyAssignment3.symbols @@ -44,11 +44,11 @@ module.exports.bothBefore = 'string' >module.exports.bothBefore : Symbol(bothBefore, Decl(mod1.js, 3, 18), Decl(mod1.js, 0, 0)) >module.exports : Symbol(bothBefore, Decl(mod1.js, 0, 0)) >module : Symbol(module, Decl(mod1.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/salsa/mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >bothBefore : Symbol(bothBefore, Decl(mod1.js, 0, 0)) module.exports = { ->module.exports : Symbol("tests/cases/conformance/salsa/mod1", Decl(mod1.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >module : Symbol(export=, Decl(mod1.js, 1, 36)) >exports : Symbol(export=, Decl(mod1.js, 1, 36)) @@ -65,13 +65,13 @@ module.exports.bothAfter = 'string' >module.exports.bothAfter : Symbol(bothAfter, Decl(mod1.js, 4, 18), Decl(mod1.js, 6, 1)) >module.exports : Symbol(bothAfter, Decl(mod1.js, 6, 1)) >module : Symbol(module, Decl(mod1.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/salsa/mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >bothAfter : Symbol(bothAfter, Decl(mod1.js, 6, 1)) module.exports.justProperty = 'string' >module.exports.justProperty : Symbol(justProperty, Decl(mod1.js, 7, 35)) >module.exports : Symbol(justProperty, Decl(mod1.js, 7, 35)) >module : Symbol(module, Decl(mod1.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/salsa/mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >justProperty : Symbol(justProperty, Decl(mod1.js, 7, 35)) diff --git a/tests/baselines/reference/moduleExportWithExportPropertyAssignment3.types b/tests/baselines/reference/moduleExportWithExportPropertyAssignment3.types index d627b9f6de150..ff2457f3ef68f 100644 --- a/tests/baselines/reference/moduleExportWithExportPropertyAssignment3.types +++ b/tests/baselines/reference/moduleExportWithExportPropertyAssignment3.types @@ -52,7 +52,7 @@ module.exports.bothBefore = 'string' >module.exports.bothBefore = 'string' : "string" >module.exports.bothBefore : string | number >module.exports : { justExport: number; bothBefore: string | number; bothAfter: string | number; justProperty: string; } ->module : { "\"tests/cases/conformance/salsa/mod1\"": { justExport: number; bothBefore: string | number; bothAfter: string | number; justProperty: string; }; } +>module : { exports: { justExport: number; bothBefore: string | number; bothAfter: string | number; justProperty: string; }; } >exports : { justExport: number; bothBefore: string | number; bothAfter: string | number; justProperty: string; } >bothBefore : string | number >'string' : "string" @@ -60,7 +60,7 @@ module.exports.bothBefore = 'string' module.exports = { >module.exports = { justExport: 1, bothBefore: 2, bothAfter: 3,} : { justExport: number; bothBefore: string | number; bothAfter: string | number; justProperty: string; } >module.exports : { justExport: number; bothBefore: string | number; bothAfter: string | number; justProperty: string; } ->module : { "\"tests/cases/conformance/salsa/mod1\"": { justExport: number; bothBefore: string | number; bothAfter: string | number; justProperty: string; }; } +>module : { exports: { justExport: number; bothBefore: string | number; bothAfter: string | number; justProperty: string; }; } >exports : { justExport: number; bothBefore: string | number; bothAfter: string | number; justProperty: string; } >{ justExport: 1, bothBefore: 2, bothAfter: 3,} : { justExport: number; bothBefore: number; bothAfter: number; } @@ -80,7 +80,7 @@ module.exports.bothAfter = 'string' >module.exports.bothAfter = 'string' : "string" >module.exports.bothAfter : string | number >module.exports : { justExport: number; bothBefore: string | number; bothAfter: string | number; justProperty: string; } ->module : { "\"tests/cases/conformance/salsa/mod1\"": { justExport: number; bothBefore: string | number; bothAfter: string | number; justProperty: string; }; } +>module : { exports: { justExport: number; bothBefore: string | number; bothAfter: string | number; justProperty: string; }; } >exports : { justExport: number; bothBefore: string | number; bothAfter: string | number; justProperty: string; } >bothAfter : string | number >'string' : "string" @@ -89,7 +89,7 @@ module.exports.justProperty = 'string' >module.exports.justProperty = 'string' : "string" >module.exports.justProperty : string >module.exports : { justExport: number; bothBefore: string | number; bothAfter: string | number; justProperty: string; } ->module : { "\"tests/cases/conformance/salsa/mod1\"": { justExport: number; bothBefore: string | number; bothAfter: string | number; justProperty: string; }; } +>module : { exports: { justExport: number; bothBefore: string | number; bothAfter: string | number; justProperty: string; }; } >exports : { justExport: number; bothBefore: string | number; bothAfter: string | number; justProperty: string; } >justProperty : string >'string' : "string" diff --git a/tests/baselines/reference/moduleExportWithExportPropertyAssignment4.symbols b/tests/baselines/reference/moduleExportWithExportPropertyAssignment4.symbols index 5f7dbc398dc2d..672489268d019 100644 --- a/tests/baselines/reference/moduleExportWithExportPropertyAssignment4.symbols +++ b/tests/baselines/reference/moduleExportWithExportPropertyAssignment4.symbols @@ -44,7 +44,7 @@ module.exports.bothBefore = 'string' >module.exports.bothBefore : Symbol(bothBefore, Decl(mod1.js, 2, 16), Decl(mod1.js, 0, 0)) >module.exports : Symbol(bothBefore, Decl(mod1.js, 2, 16), Decl(mod1.js, 0, 0)) >module : Symbol(module, Decl(mod1.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/salsa/mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >bothBefore : Symbol(bothBefore, Decl(mod1.js, 2, 16), Decl(mod1.js, 0, 0)) A.justExport = 4 @@ -63,7 +63,7 @@ A.bothAfter = 3 >bothAfter : Symbol(bothAfter, Decl(mod1.js, 3, 16), Decl(mod1.js, 8, 1)) module.exports = A ->module.exports : Symbol("tests/cases/conformance/salsa/mod1", Decl(mod1.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >module : Symbol(export=, Decl(mod1.js, 4, 15)) >exports : Symbol(export=, Decl(mod1.js, 4, 15)) >A : Symbol(A, Decl(mod1.js, 5, 18), Decl(mod1.js, 1, 36), Decl(mod1.js, 2, 16), Decl(mod1.js, 3, 16)) @@ -80,13 +80,13 @@ module.exports.bothAfter = 'string' >module.exports.bothAfter : Symbol(bothAfter, Decl(mod1.js, 3, 16), Decl(mod1.js, 8, 1)) >module.exports : Symbol(bothAfter, Decl(mod1.js, 3, 16), Decl(mod1.js, 8, 1)) >module : Symbol(module, Decl(mod1.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/salsa/mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >bothAfter : Symbol(bothAfter, Decl(mod1.js, 3, 16), Decl(mod1.js, 8, 1)) module.exports.justProperty = 'string' >module.exports.justProperty : Symbol(justProperty, Decl(mod1.js, 9, 35)) >module.exports : Symbol(justProperty, Decl(mod1.js, 9, 35)) >module : Symbol(module, Decl(mod1.js, 0, 0)) ->exports : Symbol("tests/cases/conformance/salsa/mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >justProperty : Symbol(justProperty, Decl(mod1.js, 9, 35)) diff --git a/tests/baselines/reference/moduleExportWithExportPropertyAssignment4.types b/tests/baselines/reference/moduleExportWithExportPropertyAssignment4.types index d74a430cc15e0..de971c31243cc 100644 --- a/tests/baselines/reference/moduleExportWithExportPropertyAssignment4.types +++ b/tests/baselines/reference/moduleExportWithExportPropertyAssignment4.types @@ -52,7 +52,7 @@ module.exports.bothBefore = 'string' >module.exports.bothBefore = 'string' : "string" >module.exports.bothBefore : string | number >module.exports : typeof A ->module : { "\"tests/cases/conformance/salsa/mod1\"": typeof A; } +>module : { exports: typeof A; } >exports : typeof A >bothBefore : string | number >'string' : "string" @@ -81,7 +81,7 @@ A.bothAfter = 3 module.exports = A >module.exports = A : typeof A >module.exports : typeof A ->module : { "\"tests/cases/conformance/salsa/mod1\"": typeof A; } +>module : { exports: typeof A; } >exports : typeof A >A : typeof A @@ -99,7 +99,7 @@ module.exports.bothAfter = 'string' >module.exports.bothAfter = 'string' : "string" >module.exports.bothAfter : string | number >module.exports : typeof A ->module : { "\"tests/cases/conformance/salsa/mod1\"": typeof A; } +>module : { exports: typeof A; } >exports : typeof A >bothAfter : string | number >'string' : "string" @@ -108,7 +108,7 @@ module.exports.justProperty = 'string' >module.exports.justProperty = 'string' : "string" >module.exports.justProperty : string >module.exports : typeof A ->module : { "\"tests/cases/conformance/salsa/mod1\"": typeof A; } +>module : { exports: typeof A; } >exports : typeof A >justProperty : string >'string' : "string" diff --git a/tests/baselines/reference/moduleExportsElementAccessAssignment.symbols b/tests/baselines/reference/moduleExportsElementAccessAssignment.symbols index a13575852f071..f7721f6366a2e 100644 --- a/tests/baselines/reference/moduleExportsElementAccessAssignment.symbols +++ b/tests/baselines/reference/moduleExportsElementAccessAssignment.symbols @@ -54,21 +54,21 @@ exports["default"] = { x: "x" }; >x : Symbol(x, Decl(mod1.js, 2, 22)) module.exports["c"] = { x: "x" }; ->module.exports : Symbol("tests/cases/conformance/jsdoc/mod1", Decl(mod1.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >module : Symbol(module, Decl(mod1.js, 2, 32)) ->exports : Symbol("tests/cases/conformance/jsdoc/mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >"c" : Symbol("c", Decl(mod1.js, 2, 32)) >x : Symbol(x, Decl(mod1.js, 3, 23)) module["exports"]["d"] = {}; >module : Symbol(module, Decl(mod1.js, 2, 32)) ->"exports" : Symbol("tests/cases/conformance/jsdoc/mod1", Decl(mod1.js, 0, 0)) +>"exports" : Symbol(module.exports, Decl(mod1.js, 0, 0)) >"d" : Symbol("d", Decl(mod1.js, 3, 33), Decl(mod1.js, 5, 18)) module["exports"]["d"].e = 0; >module["exports"]["d"].e : Symbol("d".e, Decl(mod1.js, 4, 28)) >module : Symbol(module, Decl(mod1.js, 2, 32)) ->"exports" : Symbol("tests/cases/conformance/jsdoc/mod1", Decl(mod1.js, 0, 0)) +>"exports" : Symbol(module.exports, Decl(mod1.js, 0, 0)) >"d" : Symbol("d", Decl(mod1.js, 3, 33), Decl(mod1.js, 5, 18)) >e : Symbol("d".e, Decl(mod1.js, 4, 28)) diff --git a/tests/baselines/reference/moduleExportsElementAccessAssignment.types b/tests/baselines/reference/moduleExportsElementAccessAssignment.types index b5f4c3e0e5ab0..030a05cdbc76b 100644 --- a/tests/baselines/reference/moduleExportsElementAccessAssignment.types +++ b/tests/baselines/reference/moduleExportsElementAccessAssignment.types @@ -68,9 +68,9 @@ exports["default"] = { x: "x" }; module.exports["c"] = { x: "x" }; >module.exports["c"] = { x: "x" } : { x: string; } >module.exports["c"] : { x: string; } ->module.exports : typeof import("tests/cases/conformance/jsdoc/mod1") ->module : { "\"tests/cases/conformance/jsdoc/mod1\"": typeof import("tests/cases/conformance/jsdoc/mod1"); } ->exports : typeof import("tests/cases/conformance/jsdoc/mod1") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >"c" : "c" >{ x: "x" } : { x: string; } >x : string @@ -79,8 +79,8 @@ module.exports["c"] = { x: "x" }; module["exports"]["d"] = {}; >module["exports"]["d"] = {} : typeof "d" >module["exports"]["d"] : typeof "d" ->module["exports"] : typeof import("tests/cases/conformance/jsdoc/mod1") ->module : { "\"tests/cases/conformance/jsdoc/mod1\"": typeof import("tests/cases/conformance/jsdoc/mod1"); } +>module["exports"] : typeof module.exports +>module : { exports: typeof module.exports; } >"exports" : "exports" >"d" : "d" >{} : {} @@ -89,8 +89,8 @@ module["exports"]["d"].e = 0; >module["exports"]["d"].e = 0 : 0 >module["exports"]["d"].e : number >module["exports"]["d"] : typeof "d" ->module["exports"] : typeof import("tests/cases/conformance/jsdoc/mod1") ->module : { "\"tests/cases/conformance/jsdoc/mod1\"": typeof import("tests/cases/conformance/jsdoc/mod1"); } +>module["exports"] : typeof module.exports +>module : { exports: typeof module.exports; } >"exports" : "exports" >"d" : "d" >e : number diff --git a/tests/baselines/reference/moduleExportsUnaryExpression.js b/tests/baselines/reference/moduleExportsUnaryExpression.js new file mode 100644 index 0000000000000..b3956233ed4dc --- /dev/null +++ b/tests/baselines/reference/moduleExportsUnaryExpression.js @@ -0,0 +1,39 @@ +//// [moduleExportsUnaryExpression.ts] +let x = 1; + +export function foo(y: number) { + if (y <= x++) return y <= x++; + if (y <= x--) return y <= x--; + if (y <= ++x) return y <= ++x; + if (y <= --x) return y <= --x; + + x++; + x--; + ++x; + --x; +} + +export { x }; + + +//// [moduleExportsUnaryExpression.js] +"use strict"; +exports.__esModule = true; +exports.x = exports.foo = void 0; +var x = 1; +exports.x = x; +function foo(y) { + if (y <= (exports.x = x += 1)) + return y <= (exports.x = x += 1); + if (y <= (exports.x = x -= 1)) + return y <= (exports.x = x -= 1); + if (y <= (exports.x = ++x)) + return y <= (exports.x = ++x); + if (y <= (exports.x = --x)) + return y <= (exports.x = --x); + (exports.x = x += 1); + (exports.x = x -= 1); + (exports.x = ++x); + (exports.x = --x); +} +exports.foo = foo; diff --git a/tests/baselines/reference/moduleExportsUnaryExpression.symbols b/tests/baselines/reference/moduleExportsUnaryExpression.symbols new file mode 100644 index 0000000000000..bf0e51acfac5d --- /dev/null +++ b/tests/baselines/reference/moduleExportsUnaryExpression.symbols @@ -0,0 +1,48 @@ +=== tests/cases/compiler/moduleExportsUnaryExpression.ts === +let x = 1; +>x : Symbol(x, Decl(moduleExportsUnaryExpression.ts, 0, 3)) + +export function foo(y: number) { +>foo : Symbol(foo, Decl(moduleExportsUnaryExpression.ts, 0, 10)) +>y : Symbol(y, Decl(moduleExportsUnaryExpression.ts, 2, 20)) + + if (y <= x++) return y <= x++; +>y : Symbol(y, Decl(moduleExportsUnaryExpression.ts, 2, 20)) +>x : Symbol(x, Decl(moduleExportsUnaryExpression.ts, 0, 3)) +>y : Symbol(y, Decl(moduleExportsUnaryExpression.ts, 2, 20)) +>x : Symbol(x, Decl(moduleExportsUnaryExpression.ts, 0, 3)) + + if (y <= x--) return y <= x--; +>y : Symbol(y, Decl(moduleExportsUnaryExpression.ts, 2, 20)) +>x : Symbol(x, Decl(moduleExportsUnaryExpression.ts, 0, 3)) +>y : Symbol(y, Decl(moduleExportsUnaryExpression.ts, 2, 20)) +>x : Symbol(x, Decl(moduleExportsUnaryExpression.ts, 0, 3)) + + if (y <= ++x) return y <= ++x; +>y : Symbol(y, Decl(moduleExportsUnaryExpression.ts, 2, 20)) +>x : Symbol(x, Decl(moduleExportsUnaryExpression.ts, 0, 3)) +>y : Symbol(y, Decl(moduleExportsUnaryExpression.ts, 2, 20)) +>x : Symbol(x, Decl(moduleExportsUnaryExpression.ts, 0, 3)) + + if (y <= --x) return y <= --x; +>y : Symbol(y, Decl(moduleExportsUnaryExpression.ts, 2, 20)) +>x : Symbol(x, Decl(moduleExportsUnaryExpression.ts, 0, 3)) +>y : Symbol(y, Decl(moduleExportsUnaryExpression.ts, 2, 20)) +>x : Symbol(x, Decl(moduleExportsUnaryExpression.ts, 0, 3)) + + x++; +>x : Symbol(x, Decl(moduleExportsUnaryExpression.ts, 0, 3)) + + x--; +>x : Symbol(x, Decl(moduleExportsUnaryExpression.ts, 0, 3)) + + ++x; +>x : Symbol(x, Decl(moduleExportsUnaryExpression.ts, 0, 3)) + + --x; +>x : Symbol(x, Decl(moduleExportsUnaryExpression.ts, 0, 3)) +} + +export { x }; +>x : Symbol(x, Decl(moduleExportsUnaryExpression.ts, 14, 8)) + diff --git a/tests/baselines/reference/moduleExportsUnaryExpression.types b/tests/baselines/reference/moduleExportsUnaryExpression.types new file mode 100644 index 0000000000000..bc7bd9e49c189 --- /dev/null +++ b/tests/baselines/reference/moduleExportsUnaryExpression.types @@ -0,0 +1,69 @@ +=== tests/cases/compiler/moduleExportsUnaryExpression.ts === +let x = 1; +>x : number +>1 : 1 + +export function foo(y: number) { +>foo : (y: number) => boolean +>y : number + + if (y <= x++) return y <= x++; +>y <= x++ : boolean +>y : number +>x++ : number +>x : number +>y <= x++ : boolean +>y : number +>x++ : number +>x : number + + if (y <= x--) return y <= x--; +>y <= x-- : boolean +>y : number +>x-- : number +>x : number +>y <= x-- : boolean +>y : number +>x-- : number +>x : number + + if (y <= ++x) return y <= ++x; +>y <= ++x : boolean +>y : number +>++x : number +>x : number +>y <= ++x : boolean +>y : number +>++x : number +>x : number + + if (y <= --x) return y <= --x; +>y <= --x : boolean +>y : number +>--x : number +>x : number +>y <= --x : boolean +>y : number +>--x : number +>x : number + + x++; +>x++ : number +>x : number + + x--; +>x-- : number +>x : number + + ++x; +>++x : number +>x : number + + --x; +>--x : number +>x : number +} + +export { x }; +>x : number + diff --git a/tests/baselines/reference/narrowingAssignmentReadonlyRespectsAssertion.js b/tests/baselines/reference/narrowingAssignmentReadonlyRespectsAssertion.js new file mode 100644 index 0000000000000..5db0ab74ca7ae --- /dev/null +++ b/tests/baselines/reference/narrowingAssignmentReadonlyRespectsAssertion.js @@ -0,0 +1,71 @@ +//// [narrowingAssignmentReadonlyRespectsAssertion.ts] +// https://github.com/microsoft/TypeScript/issues/41984 + +interface TestCase { + readonly val1: T | ReadonlyArray; + readonly val2: ReadonlyArray; +} + +interface MultiCaseFixture { + cases: T[]; +} + +function subDataFunc(): TestCase[] { + return [ + { val1: "a", val2: ["a", "b", "c"] }, + { val1: 2, val2: [1, 2, 3] }, + { val1: ["a", "z"], val2: ["x", "y", "z"] }, + { val1: [5, 10], val2: [10, 100, 1000] }, + ]; +} + +function dataFunc(subFunc: () => T[]): MultiCaseFixture { + return { cases: subFunc() }; +} + +function testFunc() { + const fixture = dataFunc>(subDataFunc); + fixture.cases.forEach(({ val1, val2 }) => { + if (Array.isArray(val1)) { + // This should retain val1 as being an array + const reversedVal1 = val1.slice().reverse(); + console.log(reversedVal1); + } else { + console.log(val1); + } + console.log(val2); + }); +} + +testFunc(); + + +//// [narrowingAssignmentReadonlyRespectsAssertion.js] +// https://github.com/microsoft/TypeScript/issues/41984 +function subDataFunc() { + return [ + { val1: "a", val2: ["a", "b", "c"] }, + { val1: 2, val2: [1, 2, 3] }, + { val1: ["a", "z"], val2: ["x", "y", "z"] }, + { val1: [5, 10], val2: [10, 100, 1000] }, + ]; +} +function dataFunc(subFunc) { + return { cases: subFunc() }; +} +function testFunc() { + var fixture = dataFunc(subDataFunc); + fixture.cases.forEach(function (_a) { + var val1 = _a.val1, val2 = _a.val2; + if (Array.isArray(val1)) { + // This should retain val1 as being an array + var reversedVal1 = val1.slice().reverse(); + console.log(reversedVal1); + } + else { + console.log(val1); + } + console.log(val2); + }); +} +testFunc(); diff --git a/tests/baselines/reference/narrowingAssignmentReadonlyRespectsAssertion.symbols b/tests/baselines/reference/narrowingAssignmentReadonlyRespectsAssertion.symbols new file mode 100644 index 0000000000000..8b7fcfebae44f --- /dev/null +++ b/tests/baselines/reference/narrowingAssignmentReadonlyRespectsAssertion.symbols @@ -0,0 +1,123 @@ +=== tests/cases/compiler/narrowingAssignmentReadonlyRespectsAssertion.ts === +// https://github.com/microsoft/TypeScript/issues/41984 + +interface TestCase { +>TestCase : Symbol(TestCase, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 0, 0)) +>T : Symbol(T, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 2, 19)) + + readonly val1: T | ReadonlyArray; +>val1 : Symbol(TestCase.val1, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 2, 47)) +>T : Symbol(T, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 2, 19)) +>ReadonlyArray : Symbol(ReadonlyArray, Decl(lib.es5.d.ts, --, --)) +>T : Symbol(T, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 2, 19)) + + readonly val2: ReadonlyArray; +>val2 : Symbol(TestCase.val2, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 3, 38)) +>ReadonlyArray : Symbol(ReadonlyArray, Decl(lib.es5.d.ts, --, --)) +>T : Symbol(T, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 2, 19)) +} + +interface MultiCaseFixture { +>MultiCaseFixture : Symbol(MultiCaseFixture, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 5, 1)) +>T : Symbol(T, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 7, 27)) + + cases: T[]; +>cases : Symbol(MultiCaseFixture.cases, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 7, 31)) +>T : Symbol(T, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 7, 27)) +} + +function subDataFunc(): TestCase[] { +>subDataFunc : Symbol(subDataFunc, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 9, 1)) +>TestCase : Symbol(TestCase, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 0, 0)) + + return [ + { val1: "a", val2: ["a", "b", "c"] }, +>val1 : Symbol(val1, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 13, 7)) +>val2 : Symbol(val2, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 13, 18)) + + { val1: 2, val2: [1, 2, 3] }, +>val1 : Symbol(val1, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 14, 7)) +>val2 : Symbol(val2, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 14, 16)) + + { val1: ["a", "z"], val2: ["x", "y", "z"] }, +>val1 : Symbol(val1, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 15, 7)) +>val2 : Symbol(val2, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 15, 25)) + + { val1: [5, 10], val2: [10, 100, 1000] }, +>val1 : Symbol(val1, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 16, 7)) +>val2 : Symbol(val2, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 16, 22)) + + ]; +} + +function dataFunc(subFunc: () => T[]): MultiCaseFixture { +>dataFunc : Symbol(dataFunc, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 18, 1)) +>T : Symbol(T, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 20, 18)) +>subFunc : Symbol(subFunc, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 20, 21)) +>T : Symbol(T, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 20, 18)) +>MultiCaseFixture : Symbol(MultiCaseFixture, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 5, 1)) +>T : Symbol(T, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 20, 18)) + + return { cases: subFunc() }; +>cases : Symbol(cases, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 21, 10)) +>subFunc : Symbol(subFunc, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 20, 21)) +} + +function testFunc() { +>testFunc : Symbol(testFunc, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 22, 1)) + + const fixture = dataFunc>(subDataFunc); +>fixture : Symbol(fixture, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 25, 7)) +>dataFunc : Symbol(dataFunc, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 18, 1)) +>TestCase : Symbol(TestCase, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 0, 0)) +>subDataFunc : Symbol(subDataFunc, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 9, 1)) + + fixture.cases.forEach(({ val1, val2 }) => { +>fixture.cases.forEach : Symbol(Array.forEach, Decl(lib.es5.d.ts, --, --)) +>fixture.cases : Symbol(MultiCaseFixture.cases, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 7, 31)) +>fixture : Symbol(fixture, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 25, 7)) +>cases : Symbol(MultiCaseFixture.cases, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 7, 31)) +>forEach : Symbol(Array.forEach, Decl(lib.es5.d.ts, --, --)) +>val1 : Symbol(val1, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 26, 26)) +>val2 : Symbol(val2, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 26, 32)) + + if (Array.isArray(val1)) { +>Array.isArray : Symbol(ArrayConstructor.isArray, Decl(lib.es5.d.ts, --, --)) +>Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) +>isArray : Symbol(ArrayConstructor.isArray, Decl(lib.es5.d.ts, --, --)) +>val1 : Symbol(val1, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 26, 26)) + + // This should retain val1 as being an array + const reversedVal1 = val1.slice().reverse(); +>reversedVal1 : Symbol(reversedVal1, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 29, 15)) +>val1.slice().reverse : Symbol(Array.reverse, Decl(lib.es5.d.ts, --, --)) +>val1.slice : Symbol(Array.slice, Decl(lib.es5.d.ts, --, --)) +>val1 : Symbol(val1, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 26, 26)) +>slice : Symbol(Array.slice, Decl(lib.es5.d.ts, --, --)) +>reverse : Symbol(Array.reverse, Decl(lib.es5.d.ts, --, --)) + + console.log(reversedVal1); +>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>console : Symbol(console, Decl(lib.dom.d.ts, --, --)) +>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>reversedVal1 : Symbol(reversedVal1, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 29, 15)) + + } else { + console.log(val1); +>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>console : Symbol(console, Decl(lib.dom.d.ts, --, --)) +>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>val1 : Symbol(val1, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 26, 26)) + } + console.log(val2); +>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>console : Symbol(console, Decl(lib.dom.d.ts, --, --)) +>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>val2 : Symbol(val2, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 26, 32)) + + }); +} + +testFunc(); +>testFunc : Symbol(testFunc, Decl(narrowingAssignmentReadonlyRespectsAssertion.ts, 22, 1)) + diff --git a/tests/baselines/reference/narrowingAssignmentReadonlyRespectsAssertion.types b/tests/baselines/reference/narrowingAssignmentReadonlyRespectsAssertion.types new file mode 100644 index 0000000000000..9fd13d661027a --- /dev/null +++ b/tests/baselines/reference/narrowingAssignmentReadonlyRespectsAssertion.types @@ -0,0 +1,147 @@ +=== tests/cases/compiler/narrowingAssignmentReadonlyRespectsAssertion.ts === +// https://github.com/microsoft/TypeScript/issues/41984 + +interface TestCase { + readonly val1: T | ReadonlyArray; +>val1 : T | readonly T[] + + readonly val2: ReadonlyArray; +>val2 : readonly T[] +} + +interface MultiCaseFixture { + cases: T[]; +>cases : T[] +} + +function subDataFunc(): TestCase[] { +>subDataFunc : () => TestCase[] + + return [ +>[ { val1: "a", val2: ["a", "b", "c"] }, { val1: 2, val2: [1, 2, 3] }, { val1: ["a", "z"], val2: ["x", "y", "z"] }, { val1: [5, 10], val2: [10, 100, 1000] }, ] : ({ val1: string; val2: string[]; } | { val1: number; val2: number[]; } | { val1: string[]; val2: string[]; } | { val1: number[]; val2: number[]; })[] + + { val1: "a", val2: ["a", "b", "c"] }, +>{ val1: "a", val2: ["a", "b", "c"] } : { val1: string; val2: string[]; } +>val1 : string +>"a" : "a" +>val2 : string[] +>["a", "b", "c"] : string[] +>"a" : "a" +>"b" : "b" +>"c" : "c" + + { val1: 2, val2: [1, 2, 3] }, +>{ val1: 2, val2: [1, 2, 3] } : { val1: number; val2: number[]; } +>val1 : number +>2 : 2 +>val2 : number[] +>[1, 2, 3] : number[] +>1 : 1 +>2 : 2 +>3 : 3 + + { val1: ["a", "z"], val2: ["x", "y", "z"] }, +>{ val1: ["a", "z"], val2: ["x", "y", "z"] } : { val1: string[]; val2: string[]; } +>val1 : string[] +>["a", "z"] : string[] +>"a" : "a" +>"z" : "z" +>val2 : string[] +>["x", "y", "z"] : string[] +>"x" : "x" +>"y" : "y" +>"z" : "z" + + { val1: [5, 10], val2: [10, 100, 1000] }, +>{ val1: [5, 10], val2: [10, 100, 1000] } : { val1: number[]; val2: number[]; } +>val1 : number[] +>[5, 10] : number[] +>5 : 5 +>10 : 10 +>val2 : number[] +>[10, 100, 1000] : number[] +>10 : 10 +>100 : 100 +>1000 : 1000 + + ]; +} + +function dataFunc(subFunc: () => T[]): MultiCaseFixture { +>dataFunc : (subFunc: () => T[]) => MultiCaseFixture +>subFunc : () => T[] + + return { cases: subFunc() }; +>{ cases: subFunc() } : { cases: T[]; } +>cases : T[] +>subFunc() : T[] +>subFunc : () => T[] +} + +function testFunc() { +>testFunc : () => void + + const fixture = dataFunc>(subDataFunc); +>fixture : MultiCaseFixture> +>dataFunc>(subDataFunc) : MultiCaseFixture> +>dataFunc : (subFunc: () => T[]) => MultiCaseFixture +>subDataFunc : () => TestCase[] + + fixture.cases.forEach(({ val1, val2 }) => { +>fixture.cases.forEach(({ val1, val2 }) => { if (Array.isArray(val1)) { // This should retain val1 as being an array const reversedVal1 = val1.slice().reverse(); console.log(reversedVal1); } else { console.log(val1); } console.log(val2); }) : void +>fixture.cases.forEach : (callbackfn: (value: TestCase, index: number, array: TestCase[]) => void, thisArg?: any) => void +>fixture.cases : TestCase[] +>fixture : MultiCaseFixture> +>cases : TestCase[] +>forEach : (callbackfn: (value: TestCase, index: number, array: TestCase[]) => void, thisArg?: any) => void +>({ val1, val2 }) => { if (Array.isArray(val1)) { // This should retain val1 as being an array const reversedVal1 = val1.slice().reverse(); console.log(reversedVal1); } else { console.log(val1); } console.log(val2); } : ({ val1, val2 }: TestCase) => void +>val1 : string | number | readonly (string | number)[] +>val2 : readonly (string | number)[] + + if (Array.isArray(val1)) { +>Array.isArray(val1) : boolean +>Array.isArray : (arg: any) => arg is any[] +>Array : ArrayConstructor +>isArray : (arg: any) => arg is any[] +>val1 : string | number | readonly (string | number)[] + + // This should retain val1 as being an array + const reversedVal1 = val1.slice().reverse(); +>reversedVal1 : any[] +>val1.slice().reverse() : any[] +>val1.slice().reverse : () => any[] +>val1.slice() : any[] +>val1.slice : (start?: number, end?: number) => any[] +>val1 : any[] +>slice : (start?: number, end?: number) => any[] +>reverse : () => any[] + + console.log(reversedVal1); +>console.log(reversedVal1) : void +>console.log : (...data: any[]) => void +>console : Console +>log : (...data: any[]) => void +>reversedVal1 : any[] + + } else { + console.log(val1); +>console.log(val1) : void +>console.log : (...data: any[]) => void +>console : Console +>log : (...data: any[]) => void +>val1 : string | number | readonly (string | number)[] + } + console.log(val2); +>console.log(val2) : void +>console.log : (...data: any[]) => void +>console : Console +>log : (...data: any[]) => void +>val2 : readonly (string | number)[] + + }); +} + +testFunc(); +>testFunc() : void +>testFunc : () => void + diff --git a/tests/baselines/reference/nestedDestructuringOfRequire.symbols b/tests/baselines/reference/nestedDestructuringOfRequire.symbols index 88261e51d1e1f..920b3fa5bae6b 100644 --- a/tests/baselines/reference/nestedDestructuringOfRequire.symbols +++ b/tests/baselines/reference/nestedDestructuringOfRequire.symbols @@ -25,7 +25,7 @@ module.exports.chalk = chalk >module.exports.chalk : Symbol(chalk, Decl(mod1.js, 2, 2)) >module.exports : Symbol(chalk, Decl(mod1.js, 2, 2)) >module : Symbol(module, Decl(mod1.js, 2, 2)) ->exports : Symbol("tests/cases/conformance/salsa/mod1", Decl(mod1.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >chalk : Symbol(chalk, Decl(mod1.js, 2, 2)) >chalk : Symbol(chalk, Decl(mod1.js, 0, 5)) diff --git a/tests/baselines/reference/nestedDestructuringOfRequire.types b/tests/baselines/reference/nestedDestructuringOfRequire.types index fd97ba75a6591..5e906928fb320 100644 --- a/tests/baselines/reference/nestedDestructuringOfRequire.types +++ b/tests/baselines/reference/nestedDestructuringOfRequire.types @@ -28,9 +28,9 @@ const chalk = { module.exports.chalk = chalk >module.exports.chalk = chalk : { grey: {}; } >module.exports.chalk : { grey: {}; } ->module.exports : typeof import("tests/cases/conformance/salsa/mod1") ->module : { "\"tests/cases/conformance/salsa/mod1\"": typeof import("tests/cases/conformance/salsa/mod1"); } ->exports : typeof import("tests/cases/conformance/salsa/mod1") +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >chalk : { grey: {}; } >chalk : { grey: {}; } diff --git a/tests/baselines/reference/noImplicitSymbolToString.types b/tests/baselines/reference/noImplicitSymbolToString.types index e4ea9afa516d1..c21c0e07bfded 100644 --- a/tests/baselines/reference/noImplicitSymbolToString.types +++ b/tests/baselines/reference/noImplicitSymbolToString.types @@ -9,8 +9,8 @@ let str = "hello "; >"hello " : "hello " const templateStr = `hello ${symbol}`; ->templateStr : `hello ${string}` ->`hello ${symbol}` : `hello ${string}` +>templateStr : string +>`hello ${symbol}` : string >symbol : symbol const appendStr = "hello " + symbol; @@ -31,8 +31,8 @@ let symbolUnionString!: symbol | string; >symbolUnionString : string | symbol const templateStrUnion = `union with number ${symbolUnionNumber} and union with string ${symbolUnionString}`; ->templateStrUnion : `union with number ${string} and union with string ${string}` ->`union with number ${symbolUnionNumber} and union with string ${symbolUnionString}` : `union with number ${string} and union with string ${string}` +>templateStrUnion : string +>`union with number ${symbolUnionNumber} and union with string ${symbolUnionString}` : string >symbolUnionNumber : number | symbol >symbolUnionString : string | symbol diff --git a/tests/baselines/reference/nondistributiveConditionalTypeInfer.js b/tests/baselines/reference/nondistributiveConditionalTypeInfer.js new file mode 100644 index 0000000000000..968f3c1a4d757 --- /dev/null +++ b/tests/baselines/reference/nondistributiveConditionalTypeInfer.js @@ -0,0 +1,16 @@ +//// [nondistributiveConditionalTypeInfer.ts] +type _R = [T] extends [{ _R: (_: infer R) => void }] ? R : never; +type _E = [T] extends [{ _E: () => infer E }] ? E : never; +type _A = [T] extends [{ _A: () => infer A }] ? A : never; + +interface Sync { + _R: (_: R) => void; + _E: () => E; + _A: () => A; +} + +type R = _R>; +type E = _E>; +type A = _A>; + +//// [nondistributiveConditionalTypeInfer.js] diff --git a/tests/baselines/reference/nondistributiveConditionalTypeInfer.symbols b/tests/baselines/reference/nondistributiveConditionalTypeInfer.symbols new file mode 100644 index 0000000000000..133abc6c6a44a --- /dev/null +++ b/tests/baselines/reference/nondistributiveConditionalTypeInfer.symbols @@ -0,0 +1,61 @@ +=== tests/cases/compiler/nondistributiveConditionalTypeInfer.ts === +type _R = [T] extends [{ _R: (_: infer R) => void }] ? R : never; +>_R : Symbol(_R, Decl(nondistributiveConditionalTypeInfer.ts, 0, 0)) +>T : Symbol(T, Decl(nondistributiveConditionalTypeInfer.ts, 0, 8)) +>T : Symbol(T, Decl(nondistributiveConditionalTypeInfer.ts, 0, 8)) +>_R : Symbol(_R, Decl(nondistributiveConditionalTypeInfer.ts, 0, 27)) +>_ : Symbol(_, Decl(nondistributiveConditionalTypeInfer.ts, 0, 33)) +>R : Symbol(R, Decl(nondistributiveConditionalTypeInfer.ts, 0, 41)) +>R : Symbol(R, Decl(nondistributiveConditionalTypeInfer.ts, 0, 41)) + +type _E = [T] extends [{ _E: () => infer E }] ? E : never; +>_E : Symbol(_E, Decl(nondistributiveConditionalTypeInfer.ts, 0, 68)) +>T : Symbol(T, Decl(nondistributiveConditionalTypeInfer.ts, 1, 8)) +>T : Symbol(T, Decl(nondistributiveConditionalTypeInfer.ts, 1, 8)) +>_E : Symbol(_E, Decl(nondistributiveConditionalTypeInfer.ts, 1, 27)) +>E : Symbol(E, Decl(nondistributiveConditionalTypeInfer.ts, 1, 43)) +>E : Symbol(E, Decl(nondistributiveConditionalTypeInfer.ts, 1, 43)) + +type _A = [T] extends [{ _A: () => infer A }] ? A : never; +>_A : Symbol(_A, Decl(nondistributiveConditionalTypeInfer.ts, 1, 61)) +>T : Symbol(T, Decl(nondistributiveConditionalTypeInfer.ts, 2, 8)) +>T : Symbol(T, Decl(nondistributiveConditionalTypeInfer.ts, 2, 8)) +>_A : Symbol(_A, Decl(nondistributiveConditionalTypeInfer.ts, 2, 27)) +>A : Symbol(A, Decl(nondistributiveConditionalTypeInfer.ts, 2, 43)) +>A : Symbol(A, Decl(nondistributiveConditionalTypeInfer.ts, 2, 43)) + +interface Sync { +>Sync : Symbol(Sync, Decl(nondistributiveConditionalTypeInfer.ts, 2, 61)) +>R : Symbol(R, Decl(nondistributiveConditionalTypeInfer.ts, 4, 15)) +>E : Symbol(E, Decl(nondistributiveConditionalTypeInfer.ts, 4, 17)) +>A : Symbol(A, Decl(nondistributiveConditionalTypeInfer.ts, 4, 20)) + + _R: (_: R) => void; +>_R : Symbol(Sync._R, Decl(nondistributiveConditionalTypeInfer.ts, 4, 25)) +>_ : Symbol(_, Decl(nondistributiveConditionalTypeInfer.ts, 5, 7)) +>R : Symbol(R, Decl(nondistributiveConditionalTypeInfer.ts, 4, 15)) + + _E: () => E; +>_E : Symbol(Sync._E, Decl(nondistributiveConditionalTypeInfer.ts, 5, 21)) +>E : Symbol(E, Decl(nondistributiveConditionalTypeInfer.ts, 4, 17)) + + _A: () => A; +>_A : Symbol(Sync._A, Decl(nondistributiveConditionalTypeInfer.ts, 6, 14)) +>A : Symbol(A, Decl(nondistributiveConditionalTypeInfer.ts, 4, 20)) +} + +type R = _R>; +>R : Symbol(R, Decl(nondistributiveConditionalTypeInfer.ts, 8, 1)) +>_R : Symbol(_R, Decl(nondistributiveConditionalTypeInfer.ts, 0, 0)) +>Sync : Symbol(Sync, Decl(nondistributiveConditionalTypeInfer.ts, 2, 61)) + +type E = _E>; +>E : Symbol(E, Decl(nondistributiveConditionalTypeInfer.ts, 10, 40)) +>_E : Symbol(_E, Decl(nondistributiveConditionalTypeInfer.ts, 0, 68)) +>Sync : Symbol(Sync, Decl(nondistributiveConditionalTypeInfer.ts, 2, 61)) + +type A = _A>; +>A : Symbol(A, Decl(nondistributiveConditionalTypeInfer.ts, 11, 40)) +>_A : Symbol(_A, Decl(nondistributiveConditionalTypeInfer.ts, 1, 61)) +>Sync : Symbol(Sync, Decl(nondistributiveConditionalTypeInfer.ts, 2, 61)) + diff --git a/tests/baselines/reference/nondistributiveConditionalTypeInfer.types b/tests/baselines/reference/nondistributiveConditionalTypeInfer.types new file mode 100644 index 0000000000000..ec301cfb34434 --- /dev/null +++ b/tests/baselines/reference/nondistributiveConditionalTypeInfer.types @@ -0,0 +1,35 @@ +=== tests/cases/compiler/nondistributiveConditionalTypeInfer.ts === +type _R = [T] extends [{ _R: (_: infer R) => void }] ? R : never; +>_R : _R +>_R : (_: infer R) => void +>_ : R + +type _E = [T] extends [{ _E: () => infer E }] ? E : never; +>_E : _E +>_E : () => infer E + +type _A = [T] extends [{ _A: () => infer A }] ? A : never; +>_A : _A +>_A : () => infer A + +interface Sync { + _R: (_: R) => void; +>_R : (_: R) => void +>_ : R + + _E: () => E; +>_E : () => E + + _A: () => A; +>_A : () => A +} + +type R = _R>; +>R : number + +type E = _E>; +>E : string + +type A = _A>; +>A : void + diff --git a/tests/baselines/reference/nonnullAssertionPropegatesContextualType.js b/tests/baselines/reference/nonnullAssertionPropegatesContextualType.js new file mode 100644 index 0000000000000..0c0e6425276cd --- /dev/null +++ b/tests/baselines/reference/nonnullAssertionPropegatesContextualType.js @@ -0,0 +1,6 @@ +//// [nonnullAssertionPropegatesContextualType.ts] +let rect2: SVGRectElement = document.querySelector('.svg-rectangle')!; // Error: Element + +//// [nonnullAssertionPropegatesContextualType.js] +"use strict"; +var rect2 = document.querySelector('.svg-rectangle'); // Error: Element diff --git a/tests/baselines/reference/nonnullAssertionPropegatesContextualType.symbols b/tests/baselines/reference/nonnullAssertionPropegatesContextualType.symbols new file mode 100644 index 0000000000000..a8b377e390c90 --- /dev/null +++ b/tests/baselines/reference/nonnullAssertionPropegatesContextualType.symbols @@ -0,0 +1,8 @@ +=== tests/cases/compiler/nonnullAssertionPropegatesContextualType.ts === +let rect2: SVGRectElement = document.querySelector('.svg-rectangle')!; // Error: Element +>rect2 : Symbol(rect2, Decl(nonnullAssertionPropegatesContextualType.ts, 0, 3)) +>SVGRectElement : Symbol(SVGRectElement, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --)) +>document.querySelector : Symbol(ParentNode.querySelector, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --)) +>document : Symbol(document, Decl(lib.dom.d.ts, --, --)) +>querySelector : Symbol(ParentNode.querySelector, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --)) + diff --git a/tests/baselines/reference/nonnullAssertionPropegatesContextualType.types b/tests/baselines/reference/nonnullAssertionPropegatesContextualType.types new file mode 100644 index 0000000000000..35e917bad0c81 --- /dev/null +++ b/tests/baselines/reference/nonnullAssertionPropegatesContextualType.types @@ -0,0 +1,10 @@ +=== tests/cases/compiler/nonnullAssertionPropegatesContextualType.ts === +let rect2: SVGRectElement = document.querySelector('.svg-rectangle')!; // Error: Element +>rect2 : SVGRectElement +>document.querySelector('.svg-rectangle')! : SVGRectElement +>document.querySelector('.svg-rectangle') : SVGRectElement | null +>document.querySelector : { (selectors: K): HTMLElementTagNameMap[K] | null; (selectors: K): SVGElementTagNameMap[K] | null; (selectors: string): E | null; } +>document : Document +>querySelector : { (selectors: K): HTMLElementTagNameMap[K] | null; (selectors: K): SVGElementTagNameMap[K] | null; (selectors: string): E | null; } +>'.svg-rectangle' : ".svg-rectangle" + diff --git a/tests/baselines/reference/observableInferenceCanBeMade.types b/tests/baselines/reference/observableInferenceCanBeMade.types index e2c0a68f81f32..6931e042adb5b 100644 --- a/tests/baselines/reference/observableInferenceCanBeMade.types +++ b/tests/baselines/reference/observableInferenceCanBeMade.types @@ -52,6 +52,6 @@ function asObservable(input: string | ObservableInput): Observableinput : string >from(input) : Observable >from : >(input: O) => Observable> ->input : Subscribable | Subscribable +>input : ObservableInput } diff --git a/tests/baselines/reference/paramTagTypeResolution.symbols b/tests/baselines/reference/paramTagTypeResolution.symbols index 0622abf2c41b9..8e0c7a2803500 100644 --- a/tests/baselines/reference/paramTagTypeResolution.symbols +++ b/tests/baselines/reference/paramTagTypeResolution.symbols @@ -14,7 +14,7 @@ f(1, n => { }) * @param {(t: T) => void} k */ module.exports = function (x, k) { return k(x) } ->module.exports : Symbol("tests/cases/conformance/jsdoc/first", Decl(first.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(first.js, 0, 0)) >module : Symbol(export=, Decl(first.js, 0, 0)) >exports : Symbol(export=, Decl(first.js, 0, 0)) >x : Symbol(x, Decl(first.js, 4, 27)) diff --git a/tests/baselines/reference/paramTagTypeResolution.types b/tests/baselines/reference/paramTagTypeResolution.types index 5a0bbd321aa22..6cd76e46c59dd 100644 --- a/tests/baselines/reference/paramTagTypeResolution.types +++ b/tests/baselines/reference/paramTagTypeResolution.types @@ -20,7 +20,7 @@ f(1, n => { }) module.exports = function (x, k) { return k(x) } >module.exports = function (x, k) { return k(x) } : (x: T, k: (t: T) => void) => void >module.exports : (x: T, k: (t: T) => void) => void ->module : { "\"tests/cases/conformance/jsdoc/first\"": (x: T, k: (t: T) => void) => void; } +>module : { exports: (x: T, k: (t: T) => void) => void; } >exports : (x: T, k: (t: T) => void) => void >function (x, k) { return k(x) } : (x: T, k: (t: T) => void) => void >x : T diff --git a/tests/baselines/reference/parenthesizedContexualTyping3.types b/tests/baselines/reference/parenthesizedContexualTyping3.types index 2acc75d368e6e..d43cd213b5697 100644 --- a/tests/baselines/reference/parenthesizedContexualTyping3.types +++ b/tests/baselines/reference/parenthesizedContexualTyping3.types @@ -37,7 +37,7 @@ var a = tempFun `${ x => x } ${ 10 }` >a : number >tempFun `${ x => x } ${ 10 }` : number >tempFun : { (tempStrs: TemplateStringsArray, g: (x: T) => T, x: T): T; (tempStrs: TemplateStringsArray, g: (x: T) => T, h: (y: T) => T, x: T): T; } ->`${ x => x } ${ 10 }` : `${string} 10` +>`${ x => x } ${ 10 }` : string >x => x : (x: number) => number >x : number >x : number @@ -47,7 +47,7 @@ var b = tempFun `${ (x => x) } ${ 10 }` >b : number >tempFun `${ (x => x) } ${ 10 }` : number >tempFun : { (tempStrs: TemplateStringsArray, g: (x: T) => T, x: T): T; (tempStrs: TemplateStringsArray, g: (x: T) => T, h: (y: T) => T, x: T): T; } ->`${ (x => x) } ${ 10 }` : `${string} 10` +>`${ (x => x) } ${ 10 }` : string >(x => x) : (x: number) => number >x => x : (x: number) => number >x : number @@ -58,7 +58,7 @@ var c = tempFun `${ ((x => x)) } ${ 10 }` >c : number >tempFun `${ ((x => x)) } ${ 10 }` : number >tempFun : { (tempStrs: TemplateStringsArray, g: (x: T) => T, x: T): T; (tempStrs: TemplateStringsArray, g: (x: T) => T, h: (y: T) => T, x: T): T; } ->`${ ((x => x)) } ${ 10 }` : `${string} 10` +>`${ ((x => x)) } ${ 10 }` : string >((x => x)) : (x: number) => number >(x => x) : (x: number) => number >x => x : (x: number) => number @@ -70,7 +70,7 @@ var d = tempFun `${ x => x } ${ x => x } ${ 10 }` >d : number >tempFun `${ x => x } ${ x => x } ${ 10 }` : number >tempFun : { (tempStrs: TemplateStringsArray, g: (x: T) => T, x: T): T; (tempStrs: TemplateStringsArray, g: (x: T) => T, h: (y: T) => T, x: T): T; } ->`${ x => x } ${ x => x } ${ 10 }` : `${string} ${string} 10` +>`${ x => x } ${ x => x } ${ 10 }` : string >x => x : (x: number) => number >x : number >x : number @@ -83,7 +83,7 @@ var e = tempFun `${ x => x } ${ (x => x) } ${ 10 }` >e : number >tempFun `${ x => x } ${ (x => x) } ${ 10 }` : number >tempFun : { (tempStrs: TemplateStringsArray, g: (x: T) => T, x: T): T; (tempStrs: TemplateStringsArray, g: (x: T) => T, h: (y: T) => T, x: T): T; } ->`${ x => x } ${ (x => x) } ${ 10 }` : `${string} ${string} 10` +>`${ x => x } ${ (x => x) } ${ 10 }` : string >x => x : (x: number) => number >x : number >x : number @@ -97,7 +97,7 @@ var f = tempFun `${ x => x } ${ ((x => x)) } ${ 10 }` >f : number >tempFun `${ x => x } ${ ((x => x)) } ${ 10 }` : number >tempFun : { (tempStrs: TemplateStringsArray, g: (x: T) => T, x: T): T; (tempStrs: TemplateStringsArray, g: (x: T) => T, h: (y: T) => T, x: T): T; } ->`${ x => x } ${ ((x => x)) } ${ 10 }` : `${string} ${string} 10` +>`${ x => x } ${ ((x => x)) } ${ 10 }` : string >x => x : (x: number) => number >x : number >x : number @@ -112,7 +112,7 @@ var g = tempFun `${ (x => x) } ${ (((x => x))) } ${ 10 }` >g : number >tempFun `${ (x => x) } ${ (((x => x))) } ${ 10 }` : number >tempFun : { (tempStrs: TemplateStringsArray, g: (x: T) => T, x: T): T; (tempStrs: TemplateStringsArray, g: (x: T) => T, h: (y: T) => T, x: T): T; } ->`${ (x => x) } ${ (((x => x))) } ${ 10 }` : `${string} ${string} 10` +>`${ (x => x) } ${ (((x => x))) } ${ 10 }` : string >(x => x) : (x: number) => number >x => x : (x: number) => number >x : number @@ -129,7 +129,7 @@ var h = tempFun `${ (x => x) } ${ (((x => x))) } ${ undefined }` >h : any >tempFun `${ (x => x) } ${ (((x => x))) } ${ undefined }` : any >tempFun : { (tempStrs: TemplateStringsArray, g: (x: T) => T, x: T): T; (tempStrs: TemplateStringsArray, g: (x: T) => T, h: (y: T) => T, x: T): T; } ->`${ (x => x) } ${ (((x => x))) } ${ undefined }` : `${string} ${string} undefined` +>`${ (x => x) } ${ (((x => x))) } ${ undefined }` : string >(x => x) : (x: any) => any >x => x : (x: any) => any >x : any diff --git a/tests/baselines/reference/parser.forAwait.es2018.errors.txt b/tests/baselines/reference/parser.forAwait.es2018.errors.txt index a6eeaf670b796..cc70ef748d0a7 100644 --- a/tests/baselines/reference/parser.forAwait.es2018.errors.txt +++ b/tests/baselines/reference/parser.forAwait.es2018.errors.txt @@ -3,28 +3,34 @@ tests/cases/conformance/parser/ecmascript2018/forAwait/forAwaitInWithDeclIsError tests/cases/conformance/parser/ecmascript2018/forAwait/forAwaitInWithExprIsError.ts(1,12): error TS2304: Cannot find name 'x'. tests/cases/conformance/parser/ecmascript2018/forAwait/forAwaitInWithExprIsError.ts(1,14): error TS1005: 'of' expected. tests/cases/conformance/parser/ecmascript2018/forAwait/forAwaitInWithExprIsError.ts(1,17): error TS2304: Cannot find name 'y'. -tests/cases/conformance/parser/ecmascript2018/forAwait/inFunctionDeclWithDeclIsError.ts(3,9): error TS1103: A 'for-await-of' statement is only allowed within an async function or async generator. -tests/cases/conformance/parser/ecmascript2018/forAwait/inFunctionDeclWithExprIsError.ts(3,9): error TS1103: A 'for-await-of' statement is only allowed within an async function or async generator. -tests/cases/conformance/parser/ecmascript2018/forAwait/inGeneratorWithDeclIsError.ts(3,9): error TS1103: A 'for-await-of' statement is only allowed within an async function or async generator. -tests/cases/conformance/parser/ecmascript2018/forAwait/inGeneratorWithExprIsError.ts(3,9): error TS1103: A 'for-await-of' statement is only allowed within an async function or async generator. -tests/cases/conformance/parser/ecmascript2018/forAwait/topLevelWithDeclIsError.ts(1,5): error TS1103: A 'for-await-of' statement is only allowed within an async function or async generator. +tests/cases/conformance/parser/ecmascript2018/forAwait/inFunctionDeclWithDeclIsError.ts(3,9): error TS1103: 'for await' loops are only allowed within async functions and at the top levels of modules. +tests/cases/conformance/parser/ecmascript2018/forAwait/inFunctionDeclWithExprIsError.ts(3,9): error TS1103: 'for await' loops are only allowed within async functions and at the top levels of modules. +tests/cases/conformance/parser/ecmascript2018/forAwait/inGeneratorWithDeclIsError.ts(3,9): error TS1103: 'for await' loops are only allowed within async functions and at the top levels of modules. +tests/cases/conformance/parser/ecmascript2018/forAwait/inGeneratorWithExprIsError.ts(3,9): error TS1103: 'for await' loops are only allowed within async functions and at the top levels of modules. +tests/cases/conformance/parser/ecmascript2018/forAwait/topLevelWithDeclIsError.ts(1,5): error TS1431: 'for await' loops are only allowed at the top level of a file when that file is a module, but this file has no imports or exports. Consider adding an empty 'export {}' to make this file a module. +tests/cases/conformance/parser/ecmascript2018/forAwait/topLevelWithDeclIsError.ts(1,5): error TS1432: Top-level 'for await' loops are only allowed when the 'module' option is set to 'esnext' or 'system', and the 'target' option is set to 'es2017' or higher. tests/cases/conformance/parser/ecmascript2018/forAwait/topLevelWithDeclIsError.ts(1,23): error TS2304: Cannot find name 'y'. -tests/cases/conformance/parser/ecmascript2018/forAwait/topLevelWithExprIsError.ts(1,5): error TS1103: A 'for-await-of' statement is only allowed within an async function or async generator. +tests/cases/conformance/parser/ecmascript2018/forAwait/topLevelWithExprIsError.ts(1,5): error TS1431: 'for await' loops are only allowed at the top level of a file when that file is a module, but this file has no imports or exports. Consider adding an empty 'export {}' to make this file a module. +tests/cases/conformance/parser/ecmascript2018/forAwait/topLevelWithExprIsError.ts(1,5): error TS1432: Top-level 'for await' loops are only allowed when the 'module' option is set to 'esnext' or 'system', and the 'target' option is set to 'es2017' or higher. tests/cases/conformance/parser/ecmascript2018/forAwait/topLevelWithExprIsError.ts(1,12): error TS2304: Cannot find name 'x'. tests/cases/conformance/parser/ecmascript2018/forAwait/topLevelWithExprIsError.ts(1,17): error TS2304: Cannot find name 'y'. -==== tests/cases/conformance/parser/ecmascript2018/forAwait/topLevelWithDeclIsError.ts (2 errors) ==== +==== tests/cases/conformance/parser/ecmascript2018/forAwait/topLevelWithDeclIsError.ts (3 errors) ==== for await (const x of y) { ~~~~~ -!!! error TS1103: A 'for-await-of' statement is only allowed within an async function or async generator. +!!! error TS1431: 'for await' loops are only allowed at the top level of a file when that file is a module, but this file has no imports or exports. Consider adding an empty 'export {}' to make this file a module. + ~~~~~ +!!! error TS1432: Top-level 'for await' loops are only allowed when the 'module' option is set to 'esnext' or 'system', and the 'target' option is set to 'es2017' or higher. ~ !!! error TS2304: Cannot find name 'y'. } -==== tests/cases/conformance/parser/ecmascript2018/forAwait/topLevelWithExprIsError.ts (3 errors) ==== +==== tests/cases/conformance/parser/ecmascript2018/forAwait/topLevelWithExprIsError.ts (4 errors) ==== for await (x of y) { ~~~~~ -!!! error TS1103: A 'for-await-of' statement is only allowed within an async function or async generator. +!!! error TS1431: 'for await' loops are only allowed at the top level of a file when that file is a module, but this file has no imports or exports. Consider adding an empty 'export {}' to make this file a module. + ~~~~~ +!!! error TS1432: Top-level 'for await' loops are only allowed when the 'module' option is set to 'esnext' or 'system', and the 'target' option is set to 'es2017' or higher. ~ !!! error TS2304: Cannot find name 'x'. ~ @@ -51,7 +57,7 @@ tests/cases/conformance/parser/ecmascript2018/forAwait/topLevelWithExprIsError.t let y: any; for await (const x of y) { ~~~~~ -!!! error TS1103: A 'for-await-of' statement is only allowed within an async function or async generator. +!!! error TS1103: 'for await' loops are only allowed within async functions and at the top levels of modules. !!! related TS1356 tests/cases/conformance/parser/ecmascript2018/forAwait/inFunctionDeclWithDeclIsError.ts:1:10: Did you mean to mark this function as 'async'? } } @@ -60,7 +66,7 @@ tests/cases/conformance/parser/ecmascript2018/forAwait/topLevelWithExprIsError.t let x: any, y: any; for await (x of y) { ~~~~~ -!!! error TS1103: A 'for-await-of' statement is only allowed within an async function or async generator. +!!! error TS1103: 'for await' loops are only allowed within async functions and at the top levels of modules. !!! related TS1356 tests/cases/conformance/parser/ecmascript2018/forAwait/inFunctionDeclWithExprIsError.ts:1:10: Did you mean to mark this function as 'async'? } } @@ -93,7 +99,7 @@ tests/cases/conformance/parser/ecmascript2018/forAwait/topLevelWithExprIsError.t let y: any; for await (const x of y) { ~~~~~ -!!! error TS1103: A 'for-await-of' statement is only allowed within an async function or async generator. +!!! error TS1103: 'for await' loops are only allowed within async functions and at the top levels of modules. !!! related TS1356 tests/cases/conformance/parser/ecmascript2018/forAwait/inGeneratorWithDeclIsError.ts:1:11: Did you mean to mark this function as 'async'? } } @@ -102,7 +108,7 @@ tests/cases/conformance/parser/ecmascript2018/forAwait/topLevelWithExprIsError.t let x: any, y: any; for await (x of y) { ~~~~~ -!!! error TS1103: A 'for-await-of' statement is only allowed within an async function or async generator. +!!! error TS1103: 'for await' loops are only allowed within async functions and at the top levels of modules. !!! related TS1356 tests/cases/conformance/parser/ecmascript2018/forAwait/inGeneratorWithExprIsError.ts:1:11: Did you mean to mark this function as 'async'? } } diff --git a/tests/baselines/reference/partiallyDiscriminantedUnions.types b/tests/baselines/reference/partiallyDiscriminantedUnions.types index ecfbefb65bf72..f1d44249c0eb2 100644 --- a/tests/baselines/reference/partiallyDiscriminantedUnions.types +++ b/tests/baselines/reference/partiallyDiscriminantedUnions.types @@ -95,7 +95,7 @@ function fail(s: Shapes) { if (s.kind === "circle") { >s.kind === "circle" : boolean >s.kind : "square" | "circle" ->s : Square | Circle +>s : Shape >kind : "square" | "circle" >"circle" : "circle" diff --git a/tests/baselines/reference/prettyFileWithErrorsAndTabs.errors.txt b/tests/baselines/reference/prettyFileWithErrorsAndTabs.errors.txt new file mode 100644 index 0000000000000..e0727c9429b88 --- /dev/null +++ b/tests/baselines/reference/prettyFileWithErrorsAndTabs.errors.txt @@ -0,0 +1,30 @@ +tests/cases/compiler/prettyFileWithErrorsAndTabs.ts:3:9 - error TS2322: Type 'number' is not assignable to type 'string'. + +3 const x: string = 12; +   ~ +tests/cases/compiler/prettyFileWithErrorsAndTabs.ts:4:9 - error TS2322: Type 'number' is not assignable to type 'string'. + +4 const y: string = 12; +   ~ +tests/cases/compiler/prettyFileWithErrorsAndTabs.ts:5:9 - error TS2322: Type 'number' is not assignable to type 'string'. + +5 const z: string = 12; +   ~ + + +==== tests/cases/compiler/prettyFileWithErrorsAndTabs.ts (3 errors) ==== + function f() { + { + const x: string = 12; + ~ +!!! error TS2322: Type 'number' is not assignable to type 'string'. + const y: string = 12; + ~ +!!! error TS2322: Type 'number' is not assignable to type 'string'. + const z: string = 12; + ~ +!!! error TS2322: Type 'number' is not assignable to type 'string'. + } + } +Found 3 errors. + diff --git a/tests/baselines/reference/prettyFileWithErrorsAndTabs.js b/tests/baselines/reference/prettyFileWithErrorsAndTabs.js new file mode 100644 index 0000000000000..ca6d2424f56b6 --- /dev/null +++ b/tests/baselines/reference/prettyFileWithErrorsAndTabs.js @@ -0,0 +1,17 @@ +//// [prettyFileWithErrorsAndTabs.ts] +function f() { + { + const x: string = 12; + const y: string = 12; + const z: string = 12; + } +} + +//// [prettyFileWithErrorsAndTabs.js] +function f() { + { + var x = 12; + var y = 12; + var z = 12; + } +} diff --git a/tests/baselines/reference/prettyFileWithErrorsAndTabs.symbols b/tests/baselines/reference/prettyFileWithErrorsAndTabs.symbols new file mode 100644 index 0000000000000..a009e89703773 --- /dev/null +++ b/tests/baselines/reference/prettyFileWithErrorsAndTabs.symbols @@ -0,0 +1,14 @@ +=== tests/cases/compiler/prettyFileWithErrorsAndTabs.ts === +function f() { +>f : Symbol(f, Decl(prettyFileWithErrorsAndTabs.ts, 0, 0)) + { + const x: string = 12; +>x : Symbol(x, Decl(prettyFileWithErrorsAndTabs.ts, 2, 7)) + + const y: string = 12; +>y : Symbol(y, Decl(prettyFileWithErrorsAndTabs.ts, 3, 7)) + + const z: string = 12; +>z : Symbol(z, Decl(prettyFileWithErrorsAndTabs.ts, 4, 7)) + } +} diff --git a/tests/baselines/reference/prettyFileWithErrorsAndTabs.types b/tests/baselines/reference/prettyFileWithErrorsAndTabs.types new file mode 100644 index 0000000000000..660ce754170b2 --- /dev/null +++ b/tests/baselines/reference/prettyFileWithErrorsAndTabs.types @@ -0,0 +1,17 @@ +=== tests/cases/compiler/prettyFileWithErrorsAndTabs.ts === +function f() { +>f : () => void + { + const x: string = 12; +>x : string +>12 : 12 + + const y: string = 12; +>y : string +>12 : 12 + + const z: string = 12; +>z : string +>12 : 12 + } +} diff --git a/tests/baselines/reference/privateNameFieldCallExpression.js b/tests/baselines/reference/privateNameFieldCallExpression.js index 37692c12290f3..e4b9a413672fc 100644 --- a/tests/baselines/reference/privateNameFieldCallExpression.js +++ b/tests/baselines/reference/privateNameFieldCallExpression.js @@ -5,6 +5,7 @@ class A { x = 1; test() { this.#fieldFunc(); + this.#fieldFunc?.(); const func = this.#fieldFunc; func(); new this.#fieldFunc(); @@ -35,7 +36,9 @@ class A { } test() { var _a; + var _b; __classPrivateFieldGet(this, _fieldFunc).call(this); + (_a = __classPrivateFieldGet(this, _fieldFunc)) === null || _a === void 0 ? void 0 : _a.call(this); const func = __classPrivateFieldGet(this, _fieldFunc); func(); new (__classPrivateFieldGet(this, _fieldFunc))(); @@ -43,7 +46,7 @@ class A { __classPrivateFieldGet(this, _fieldFunc2).call(this, 0, ...arr, 3); const b = new (__classPrivateFieldGet(this, _fieldFunc2))(0, ...arr, 3); const str = __classPrivateFieldGet(this, _fieldFunc2).bind(this) `head${1}middle${2}tail`; - __classPrivateFieldGet((_a = this.getInstance()), _fieldFunc2).bind(_a) `test${1}and${2}`; + __classPrivateFieldGet((_b = this.getInstance()), _fieldFunc2).bind(_b) `test${1}and${2}`; } getInstance() { return new A(); } } diff --git a/tests/baselines/reference/privateNameFieldCallExpression.symbols b/tests/baselines/reference/privateNameFieldCallExpression.symbols index 3fe98ce7002f7..aea16f011983d 100644 --- a/tests/baselines/reference/privateNameFieldCallExpression.symbols +++ b/tests/baselines/reference/privateNameFieldCallExpression.symbols @@ -18,47 +18,51 @@ class A { this.#fieldFunc(); >this.#fieldFunc : Symbol(A.#fieldFunc, Decl(privateNameFieldCallExpression.ts, 0, 9)) +>this : Symbol(A, Decl(privateNameFieldCallExpression.ts, 0, 0)) + + this.#fieldFunc?.(); +>this.#fieldFunc : Symbol(A.#fieldFunc, Decl(privateNameFieldCallExpression.ts, 0, 9)) >this : Symbol(A, Decl(privateNameFieldCallExpression.ts, 0, 0)) const func = this.#fieldFunc; ->func : Symbol(func, Decl(privateNameFieldCallExpression.ts, 6, 13)) +>func : Symbol(func, Decl(privateNameFieldCallExpression.ts, 7, 13)) >this.#fieldFunc : Symbol(A.#fieldFunc, Decl(privateNameFieldCallExpression.ts, 0, 9)) >this : Symbol(A, Decl(privateNameFieldCallExpression.ts, 0, 0)) func(); ->func : Symbol(func, Decl(privateNameFieldCallExpression.ts, 6, 13)) +>func : Symbol(func, Decl(privateNameFieldCallExpression.ts, 7, 13)) new this.#fieldFunc(); >this.#fieldFunc : Symbol(A.#fieldFunc, Decl(privateNameFieldCallExpression.ts, 0, 9)) >this : Symbol(A, Decl(privateNameFieldCallExpression.ts, 0, 0)) const arr = [ 1, 2 ]; ->arr : Symbol(arr, Decl(privateNameFieldCallExpression.ts, 10, 13)) +>arr : Symbol(arr, Decl(privateNameFieldCallExpression.ts, 11, 13)) this.#fieldFunc2(0, ...arr, 3); >this.#fieldFunc2 : Symbol(A.#fieldFunc2, Decl(privateNameFieldCallExpression.ts, 1, 45)) >this : Symbol(A, Decl(privateNameFieldCallExpression.ts, 0, 0)) ->arr : Symbol(arr, Decl(privateNameFieldCallExpression.ts, 10, 13)) +>arr : Symbol(arr, Decl(privateNameFieldCallExpression.ts, 11, 13)) const b = new this.#fieldFunc2(0, ...arr, 3); ->b : Symbol(b, Decl(privateNameFieldCallExpression.ts, 12, 13)) +>b : Symbol(b, Decl(privateNameFieldCallExpression.ts, 13, 13)) >this.#fieldFunc2 : Symbol(A.#fieldFunc2, Decl(privateNameFieldCallExpression.ts, 1, 45)) >this : Symbol(A, Decl(privateNameFieldCallExpression.ts, 0, 0)) ->arr : Symbol(arr, Decl(privateNameFieldCallExpression.ts, 10, 13)) +>arr : Symbol(arr, Decl(privateNameFieldCallExpression.ts, 11, 13)) const str = this.#fieldFunc2`head${1}middle${2}tail`; ->str : Symbol(str, Decl(privateNameFieldCallExpression.ts, 13, 13)) +>str : Symbol(str, Decl(privateNameFieldCallExpression.ts, 14, 13)) >this.#fieldFunc2 : Symbol(A.#fieldFunc2, Decl(privateNameFieldCallExpression.ts, 1, 45)) >this : Symbol(A, Decl(privateNameFieldCallExpression.ts, 0, 0)) this.getInstance().#fieldFunc2`test${1}and${2}`; >this.getInstance().#fieldFunc2 : Symbol(A.#fieldFunc2, Decl(privateNameFieldCallExpression.ts, 1, 45)) ->this.getInstance : Symbol(A.getInstance, Decl(privateNameFieldCallExpression.ts, 15, 5)) +>this.getInstance : Symbol(A.getInstance, Decl(privateNameFieldCallExpression.ts, 16, 5)) >this : Symbol(A, Decl(privateNameFieldCallExpression.ts, 0, 0)) ->getInstance : Symbol(A.getInstance, Decl(privateNameFieldCallExpression.ts, 15, 5)) +>getInstance : Symbol(A.getInstance, Decl(privateNameFieldCallExpression.ts, 16, 5)) } getInstance() { return new A(); } ->getInstance : Symbol(A.getInstance, Decl(privateNameFieldCallExpression.ts, 15, 5)) +>getInstance : Symbol(A.getInstance, Decl(privateNameFieldCallExpression.ts, 16, 5)) >A : Symbol(A, Decl(privateNameFieldCallExpression.ts, 0, 0)) } diff --git a/tests/baselines/reference/privateNameFieldCallExpression.types b/tests/baselines/reference/privateNameFieldCallExpression.types index cdcf01d0e5ce7..21a72c92c81fa 100644 --- a/tests/baselines/reference/privateNameFieldCallExpression.types +++ b/tests/baselines/reference/privateNameFieldCallExpression.types @@ -27,6 +27,11 @@ class A { this.#fieldFunc(); >this.#fieldFunc() : void >this.#fieldFunc : () => void +>this : this + + this.#fieldFunc?.(); +>this.#fieldFunc?.() : void +>this.#fieldFunc : () => void >this : this const func = this.#fieldFunc; @@ -73,7 +78,7 @@ class A { >this.#fieldFunc2`head${1}middle${2}tail` : void >this.#fieldFunc2 : (a: any, ...b: any[]) => void >this : this ->`head${1}middle${2}tail` : "head1middle2tail" +>`head${1}middle${2}tail` : string >1 : 1 >2 : 2 @@ -84,7 +89,7 @@ class A { >this.getInstance : () => A >this : this >getInstance : () => A ->`test${1}and${2}` : "test1and2" +>`test${1}and${2}` : string >1 : 1 >2 : 2 } diff --git a/tests/baselines/reference/processInvalidSyntax1.baseline b/tests/baselines/reference/processInvalidSyntax1.baseline new file mode 100644 index 0000000000000..01b9d40eb90f6 --- /dev/null +++ b/tests/baselines/reference/processInvalidSyntax1.baseline @@ -0,0 +1,21 @@ +/*====== /tests/cases/fourslash/decl.js ======*/ + +var RENAME = {}; + +/*====== /tests/cases/fourslash/unicode1.js ======*/ + +RENAME.𝒜 ; + +/*====== /tests/cases/fourslash/unicode2.js ======*/ + +RENAME.¬ ; + +/*====== /tests/cases/fourslash/unicode3.js ======*/ + +RENAME¬ + +/*====== /tests/cases/fourslash/forof.js ======*/ + +for (RENAME.prop of arr) { + +} diff --git a/tests/baselines/reference/promiseTypeStrictNull.types b/tests/baselines/reference/promiseTypeStrictNull.types index 97038aeb4e533..5e27b4ccd7646 100644 --- a/tests/baselines/reference/promiseTypeStrictNull.types +++ b/tests/baselines/reference/promiseTypeStrictNull.types @@ -888,8 +888,8 @@ const p75 = p.then(() => undefined, () => null); >null : null const p76 = p.then(() => undefined, () => {}); ->p76 : Promise ->p.then(() => undefined, () => {}) : Promise +>p76 : Promise +>p.then(() => undefined, () => {}) : Promise >p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise >p : Promise >then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise @@ -1092,8 +1092,8 @@ const p93 = p.then(() => {}, () => x); >x : any const p94 = p.then(() => {}, () => undefined); ->p94 : Promise ->p.then(() => {}, () => undefined) : Promise +>p94 : Promise +>p.then(() => {}, () => undefined) : Promise >p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise >p : Promise >then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise diff --git a/tests/baselines/reference/propertyOverridesAccessors2.types b/tests/baselines/reference/propertyOverridesAccessors2.types index 8ea1f4449c57f..b87387d052a98 100644 --- a/tests/baselines/reference/propertyOverridesAccessors2.types +++ b/tests/baselines/reference/propertyOverridesAccessors2.types @@ -13,7 +13,7 @@ class Base { >console.log : (...data: any[]) => void >console : Console >log : (...data: any[]) => void ->`x was set to ${value}` : `x was set to ${number}` +>`x was set to ${value}` : string >value : number } diff --git a/tests/baselines/reference/reactDefaultPropsInferenceSuccess.symbols b/tests/baselines/reference/reactDefaultPropsInferenceSuccess.symbols index f5cff116a4c2e..a91eb411eab80 100644 --- a/tests/baselines/reference/reactDefaultPropsInferenceSuccess.symbols +++ b/tests/baselines/reference/reactDefaultPropsInferenceSuccess.symbols @@ -42,8 +42,8 @@ class FieldFeedback

extends React.Component

{ >render : Symbol(FieldFeedback.render, Decl(reactDefaultPropsInferenceSuccess.tsx, 15, 4)) return

Hello
; ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) } } @@ -89,8 +89,8 @@ class FieldFeedbackBeta

extends React.Component

>render : Symbol(FieldFeedbackBeta.render, Decl(reactDefaultPropsInferenceSuccess.tsx, 31, 4)) return

Hello
; ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) } } @@ -153,8 +153,8 @@ class FieldFeedback2

extends FieldFeedbac >when : Symbol(when, Decl(reactDefaultPropsInferenceSuccess.tsx, 44, 38)) return

Hello
; ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) } } diff --git a/tests/baselines/reference/reactImportUnusedInNewJSXEmit(jsx=react-jsx).symbols b/tests/baselines/reference/reactImportUnusedInNewJSXEmit(jsx=react-jsx).symbols index f7edf35f27f2c..217bf16ee658f 100644 --- a/tests/baselines/reference/reactImportUnusedInNewJSXEmit(jsx=react-jsx).symbols +++ b/tests/baselines/reference/reactImportUnusedInNewJSXEmit(jsx=react-jsx).symbols @@ -8,7 +8,7 @@ function Bar() { >Bar : Symbol(Bar, Decl(index.tsx, 2, 26)) return
; ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) } export function Foo() { diff --git a/tests/baselines/reference/reactImportUnusedInNewJSXEmit(jsx=react-jsxdev).symbols b/tests/baselines/reference/reactImportUnusedInNewJSXEmit(jsx=react-jsxdev).symbols index f7edf35f27f2c..217bf16ee658f 100644 --- a/tests/baselines/reference/reactImportUnusedInNewJSXEmit(jsx=react-jsxdev).symbols +++ b/tests/baselines/reference/reactImportUnusedInNewJSXEmit(jsx=react-jsxdev).symbols @@ -8,7 +8,7 @@ function Bar() { >Bar : Symbol(Bar, Decl(index.tsx, 2, 26)) return
; ->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) } export function Foo() { diff --git a/tests/baselines/reference/recursiveConditionalEvaluationNonInfinite.js b/tests/baselines/reference/recursiveConditionalEvaluationNonInfinite.js new file mode 100644 index 0000000000000..748d607cf3b8d --- /dev/null +++ b/tests/baselines/reference/recursiveConditionalEvaluationNonInfinite.js @@ -0,0 +1,10 @@ +//// [recursiveConditionalEvaluationNonInfinite.ts] +type Test = [T] extends [any[]] ? { array: Test } : { notArray: T }; +declare const x: Test; +const y: { array: { notArray: number } } = x; // Error +declare const a: Test; +const b: { notArray: number } = a; // Works + +//// [recursiveConditionalEvaluationNonInfinite.js] +var y = x; // Error +var b = a; // Works diff --git a/tests/baselines/reference/recursiveConditionalEvaluationNonInfinite.symbols b/tests/baselines/reference/recursiveConditionalEvaluationNonInfinite.symbols new file mode 100644 index 0000000000000..12f1d367132d0 --- /dev/null +++ b/tests/baselines/reference/recursiveConditionalEvaluationNonInfinite.symbols @@ -0,0 +1,30 @@ +=== tests/cases/compiler/recursiveConditionalEvaluationNonInfinite.ts === +type Test = [T] extends [any[]] ? { array: Test } : { notArray: T }; +>Test : Symbol(Test, Decl(recursiveConditionalEvaluationNonInfinite.ts, 0, 0)) +>T : Symbol(T, Decl(recursiveConditionalEvaluationNonInfinite.ts, 0, 10)) +>T : Symbol(T, Decl(recursiveConditionalEvaluationNonInfinite.ts, 0, 10)) +>array : Symbol(array, Decl(recursiveConditionalEvaluationNonInfinite.ts, 0, 38)) +>Test : Symbol(Test, Decl(recursiveConditionalEvaluationNonInfinite.ts, 0, 0)) +>T : Symbol(T, Decl(recursiveConditionalEvaluationNonInfinite.ts, 0, 10)) +>notArray : Symbol(notArray, Decl(recursiveConditionalEvaluationNonInfinite.ts, 0, 62)) +>T : Symbol(T, Decl(recursiveConditionalEvaluationNonInfinite.ts, 0, 10)) + +declare const x: Test; +>x : Symbol(x, Decl(recursiveConditionalEvaluationNonInfinite.ts, 1, 13)) +>Test : Symbol(Test, Decl(recursiveConditionalEvaluationNonInfinite.ts, 0, 0)) + +const y: { array: { notArray: number } } = x; // Error +>y : Symbol(y, Decl(recursiveConditionalEvaluationNonInfinite.ts, 2, 5)) +>array : Symbol(array, Decl(recursiveConditionalEvaluationNonInfinite.ts, 2, 10)) +>notArray : Symbol(notArray, Decl(recursiveConditionalEvaluationNonInfinite.ts, 2, 19)) +>x : Symbol(x, Decl(recursiveConditionalEvaluationNonInfinite.ts, 1, 13)) + +declare const a: Test; +>a : Symbol(a, Decl(recursiveConditionalEvaluationNonInfinite.ts, 3, 13)) +>Test : Symbol(Test, Decl(recursiveConditionalEvaluationNonInfinite.ts, 0, 0)) + +const b: { notArray: number } = a; // Works +>b : Symbol(b, Decl(recursiveConditionalEvaluationNonInfinite.ts, 4, 5)) +>notArray : Symbol(notArray, Decl(recursiveConditionalEvaluationNonInfinite.ts, 4, 10)) +>a : Symbol(a, Decl(recursiveConditionalEvaluationNonInfinite.ts, 3, 13)) + diff --git a/tests/baselines/reference/recursiveConditionalEvaluationNonInfinite.types b/tests/baselines/reference/recursiveConditionalEvaluationNonInfinite.types new file mode 100644 index 0000000000000..2a302606d632d --- /dev/null +++ b/tests/baselines/reference/recursiveConditionalEvaluationNonInfinite.types @@ -0,0 +1,23 @@ +=== tests/cases/compiler/recursiveConditionalEvaluationNonInfinite.ts === +type Test = [T] extends [any[]] ? { array: Test } : { notArray: T }; +>Test : Test +>array : Test +>notArray : T + +declare const x: Test; +>x : { array: { notArray: number; }; } + +const y: { array: { notArray: number } } = x; // Error +>y : { array: { notArray: number;}; } +>array : { notArray: number; } +>notArray : number +>x : { array: { notArray: number; }; } + +declare const a: Test; +>a : { notArray: number; } + +const b: { notArray: number } = a; // Works +>b : { notArray: number; } +>notArray : number +>a : { notArray: number; } + diff --git a/tests/baselines/reference/recursiveTypeReferences1.types b/tests/baselines/reference/recursiveTypeReferences1.types index 4008c9286ac88..8259f392c5ba8 100644 --- a/tests/baselines/reference/recursiveTypeReferences1.types +++ b/tests/baselines/reference/recursiveTypeReferences1.types @@ -445,7 +445,7 @@ function parse(node: Tree, index: number[] = []): HTMLUListElement { >'a' : "a" >{ href: `#${el.id}`, rel: 'noopener', 'data-index': idx.join('.') } : { href: string; rel: string; 'data-index': string; } >href : string ->`#${el.id}` : `#${string}` +>`#${el.id}` : string >el.id : string >el : HTMLHeadingElement >id : string diff --git a/tests/baselines/reference/requireOfJsonFileInJsFile.symbols b/tests/baselines/reference/requireOfJsonFileInJsFile.symbols index 2a1e9b6ebd307..481a055197e92 100644 --- a/tests/baselines/reference/requireOfJsonFileInJsFile.symbols +++ b/tests/baselines/reference/requireOfJsonFileInJsFile.symbols @@ -43,7 +43,7 @@ js1.b; === /js.js === module.exports = { a: 0 }; ->module.exports : Symbol("/js", Decl(js.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(js.js, 0, 0)) >module : Symbol(export=, Decl(js.js, 0, 0)) >exports : Symbol(export=, Decl(js.js, 0, 0)) >a : Symbol(a, Decl(js.js, 0, 18)) diff --git a/tests/baselines/reference/requireOfJsonFileInJsFile.types b/tests/baselines/reference/requireOfJsonFileInJsFile.types index 0e8e9b847ab8f..92199139c05e9 100644 --- a/tests/baselines/reference/requireOfJsonFileInJsFile.types +++ b/tests/baselines/reference/requireOfJsonFileInJsFile.types @@ -55,7 +55,7 @@ js1.b; module.exports = { a: 0 }; >module.exports = { a: 0 } : { a: number; } >module.exports : { a: number; } ->module : { "\"/js\"": { a: number; }; } +>module : { exports: { a: number; }; } >exports : { a: number; } >{ a: 0 } : { a: number; } >a : number diff --git a/tests/baselines/reference/requireTwoPropertyAccesses.symbols b/tests/baselines/reference/requireTwoPropertyAccesses.symbols index 9102201a10118..870a2f97eec73 100644 --- a/tests/baselines/reference/requireTwoPropertyAccesses.symbols +++ b/tests/baselines/reference/requireTwoPropertyAccesses.symbols @@ -17,7 +17,7 @@ console.log(value) === tests/cases/conformance/salsa/mod.js === // @declaration module.exports = { ->module.exports : Symbol("tests/cases/conformance/salsa/mod", Decl(mod.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod.js, 0, 0)) >module : Symbol(export=, Decl(mod.js, 0, 0)) >exports : Symbol(export=, Decl(mod.js, 0, 0)) diff --git a/tests/baselines/reference/requireTwoPropertyAccesses.types b/tests/baselines/reference/requireTwoPropertyAccesses.types index c16098568ba0c..15609c96db76c 100644 --- a/tests/baselines/reference/requireTwoPropertyAccesses.types +++ b/tests/baselines/reference/requireTwoPropertyAccesses.types @@ -21,7 +21,7 @@ console.log(value) module.exports = { >module.exports = { x: { y: "value" }} : { x: { y: string; }; } >module.exports : { x: { y: string; }; } ->module : { "\"tests/cases/conformance/salsa/mod\"": { x: { y: string; }; }; } +>module : { exports: { x: { y: string; }; }; } >exports : { x: { y: string; }; } >{ x: { y: "value" }} : { x: { y: string; }; } diff --git a/tests/baselines/reference/spellingSuggestionGlobal1.errors.txt b/tests/baselines/reference/spellingSuggestionGlobal1.errors.txt new file mode 100644 index 0000000000000..491623ea37bf9 --- /dev/null +++ b/tests/baselines/reference/spellingSuggestionGlobal1.errors.txt @@ -0,0 +1,10 @@ +tests/cases/compiler/spellingSuggestionGlobal1.ts(3,1): error TS2304: Cannot find name 'global'. + + +==== tests/cases/compiler/spellingSuggestionGlobal1.ts (1 errors) ==== + export {} + declare global { const x: any } + global.x // should not suggest `global` (GH#42209) + ~~~~~~ +!!! error TS2304: Cannot find name 'global'. + \ No newline at end of file diff --git a/tests/baselines/reference/spellingSuggestionGlobal1.js b/tests/baselines/reference/spellingSuggestionGlobal1.js new file mode 100644 index 0000000000000..16d5da7ba8128 --- /dev/null +++ b/tests/baselines/reference/spellingSuggestionGlobal1.js @@ -0,0 +1,10 @@ +//// [spellingSuggestionGlobal1.ts] +export {} +declare global { const x: any } +global.x // should not suggest `global` (GH#42209) + + +//// [spellingSuggestionGlobal1.js] +"use strict"; +exports.__esModule = true; +global.x; // should not suggest `global` (GH#42209) diff --git a/tests/baselines/reference/spellingSuggestionGlobal1.symbols b/tests/baselines/reference/spellingSuggestionGlobal1.symbols new file mode 100644 index 0000000000000..e9d20fe53d7db --- /dev/null +++ b/tests/baselines/reference/spellingSuggestionGlobal1.symbols @@ -0,0 +1,8 @@ +=== tests/cases/compiler/spellingSuggestionGlobal1.ts === +export {} +declare global { const x: any } +>global : Symbol(global, Decl(spellingSuggestionGlobal1.ts, 0, 9)) +>x : Symbol(x, Decl(spellingSuggestionGlobal1.ts, 1, 22)) + +global.x // should not suggest `global` (GH#42209) + diff --git a/tests/baselines/reference/spellingSuggestionGlobal1.types b/tests/baselines/reference/spellingSuggestionGlobal1.types new file mode 100644 index 0000000000000..1c4cd6a79e264 --- /dev/null +++ b/tests/baselines/reference/spellingSuggestionGlobal1.types @@ -0,0 +1,11 @@ +=== tests/cases/compiler/spellingSuggestionGlobal1.ts === +export {} +declare global { const x: any } +>global : typeof global +>x : any + +global.x // should not suggest `global` (GH#42209) +>global.x : any +>global : any +>x : any + diff --git a/tests/baselines/reference/spellingSuggestionGlobal2.errors.txt b/tests/baselines/reference/spellingSuggestionGlobal2.errors.txt new file mode 100644 index 0000000000000..813e64867f019 --- /dev/null +++ b/tests/baselines/reference/spellingSuggestionGlobal2.errors.txt @@ -0,0 +1,12 @@ +tests/cases/compiler/spellingSuggestionGlobal2.ts(4,1): error TS2552: Cannot find name 'global'. Did you mean 'globals'? + + +==== tests/cases/compiler/spellingSuggestionGlobal2.ts (1 errors) ==== + export {} + declare global { const x: any } + const globals = { x: true } + global.x // should suggest `globals` (GH#42209) + ~~~~~~ +!!! error TS2552: Cannot find name 'global'. Did you mean 'globals'? +!!! related TS2728 tests/cases/compiler/spellingSuggestionGlobal2.ts:3:7: 'globals' is declared here. + \ No newline at end of file diff --git a/tests/baselines/reference/spellingSuggestionGlobal2.js b/tests/baselines/reference/spellingSuggestionGlobal2.js new file mode 100644 index 0000000000000..b7da56d7f494b --- /dev/null +++ b/tests/baselines/reference/spellingSuggestionGlobal2.js @@ -0,0 +1,12 @@ +//// [spellingSuggestionGlobal2.ts] +export {} +declare global { const x: any } +const globals = { x: true } +global.x // should suggest `globals` (GH#42209) + + +//// [spellingSuggestionGlobal2.js] +"use strict"; +exports.__esModule = true; +var globals = { x: true }; +global.x; // should suggest `globals` (GH#42209) diff --git a/tests/baselines/reference/spellingSuggestionGlobal2.symbols b/tests/baselines/reference/spellingSuggestionGlobal2.symbols new file mode 100644 index 0000000000000..e7cd40a83f946 --- /dev/null +++ b/tests/baselines/reference/spellingSuggestionGlobal2.symbols @@ -0,0 +1,12 @@ +=== tests/cases/compiler/spellingSuggestionGlobal2.ts === +export {} +declare global { const x: any } +>global : Symbol(global, Decl(spellingSuggestionGlobal2.ts, 0, 9)) +>x : Symbol(x, Decl(spellingSuggestionGlobal2.ts, 1, 22)) + +const globals = { x: true } +>globals : Symbol(globals, Decl(spellingSuggestionGlobal2.ts, 2, 5)) +>x : Symbol(x, Decl(spellingSuggestionGlobal2.ts, 2, 17)) + +global.x // should suggest `globals` (GH#42209) + diff --git a/tests/baselines/reference/spellingSuggestionGlobal2.types b/tests/baselines/reference/spellingSuggestionGlobal2.types new file mode 100644 index 0000000000000..07463a102285c --- /dev/null +++ b/tests/baselines/reference/spellingSuggestionGlobal2.types @@ -0,0 +1,17 @@ +=== tests/cases/compiler/spellingSuggestionGlobal2.ts === +export {} +declare global { const x: any } +>global : typeof global +>x : any + +const globals = { x: true } +>globals : { x: boolean; } +>{ x: true } : { x: boolean; } +>x : boolean +>true : true + +global.x // should suggest `globals` (GH#42209) +>global.x : any +>global : any +>x : any + diff --git a/tests/baselines/reference/spellingSuggestionGlobal3.errors.txt b/tests/baselines/reference/spellingSuggestionGlobal3.errors.txt new file mode 100644 index 0000000000000..a3d49611fbfdf --- /dev/null +++ b/tests/baselines/reference/spellingSuggestionGlobal3.errors.txt @@ -0,0 +1,10 @@ +tests/cases/compiler/spellingSuggestionGlobal3.ts(2,1): error TS2552: Cannot find name 'globals'. Did you mean 'global'? + + +==== tests/cases/compiler/spellingSuggestionGlobal3.ts (1 errors) ==== + const global = { x: true } + globals.x // should suggest `global` (GH#42209) + ~~~~~~~ +!!! error TS2552: Cannot find name 'globals'. Did you mean 'global'? +!!! related TS2728 tests/cases/compiler/spellingSuggestionGlobal3.ts:1:7: 'global' is declared here. + \ No newline at end of file diff --git a/tests/baselines/reference/spellingSuggestionGlobal3.js b/tests/baselines/reference/spellingSuggestionGlobal3.js new file mode 100644 index 0000000000000..9ce2c0d55298d --- /dev/null +++ b/tests/baselines/reference/spellingSuggestionGlobal3.js @@ -0,0 +1,8 @@ +//// [spellingSuggestionGlobal3.ts] +const global = { x: true } +globals.x // should suggest `global` (GH#42209) + + +//// [spellingSuggestionGlobal3.js] +var global = { x: true }; +globals.x; // should suggest `global` (GH#42209) diff --git a/tests/baselines/reference/spellingSuggestionGlobal3.symbols b/tests/baselines/reference/spellingSuggestionGlobal3.symbols new file mode 100644 index 0000000000000..44a64fd50f01f --- /dev/null +++ b/tests/baselines/reference/spellingSuggestionGlobal3.symbols @@ -0,0 +1,7 @@ +=== tests/cases/compiler/spellingSuggestionGlobal3.ts === +const global = { x: true } +>global : Symbol(global, Decl(spellingSuggestionGlobal3.ts, 0, 5)) +>x : Symbol(x, Decl(spellingSuggestionGlobal3.ts, 0, 16)) + +globals.x // should suggest `global` (GH#42209) + diff --git a/tests/baselines/reference/spellingSuggestionGlobal3.types b/tests/baselines/reference/spellingSuggestionGlobal3.types new file mode 100644 index 0000000000000..d5708befef7a8 --- /dev/null +++ b/tests/baselines/reference/spellingSuggestionGlobal3.types @@ -0,0 +1,12 @@ +=== tests/cases/compiler/spellingSuggestionGlobal3.ts === +const global = { x: true } +>global : { x: boolean; } +>{ x: true } : { x: boolean; } +>x : boolean +>true : true + +globals.x // should suggest `global` (GH#42209) +>globals.x : any +>globals : any +>x : any + diff --git a/tests/baselines/reference/spellingSuggestionGlobal4.errors.txt b/tests/baselines/reference/spellingSuggestionGlobal4.errors.txt new file mode 100644 index 0000000000000..0e3a0853a479e --- /dev/null +++ b/tests/baselines/reference/spellingSuggestionGlobal4.errors.txt @@ -0,0 +1,10 @@ +tests/cases/compiler/spellingSuggestionGlobal4.ts(3,1): error TS2304: Cannot find name 'global'. + + +==== tests/cases/compiler/spellingSuggestionGlobal4.ts (1 errors) ==== + export {} + declare global { var x: any } + global.x // should not suggest `global` (GH#42209) + ~~~~~~ +!!! error TS2304: Cannot find name 'global'. + \ No newline at end of file diff --git a/tests/baselines/reference/spellingSuggestionGlobal4.js b/tests/baselines/reference/spellingSuggestionGlobal4.js new file mode 100644 index 0000000000000..d9e6c2b9a7c3c --- /dev/null +++ b/tests/baselines/reference/spellingSuggestionGlobal4.js @@ -0,0 +1,10 @@ +//// [spellingSuggestionGlobal4.ts] +export {} +declare global { var x: any } +global.x // should not suggest `global` (GH#42209) + + +//// [spellingSuggestionGlobal4.js] +"use strict"; +exports.__esModule = true; +global.x; // should not suggest `global` (GH#42209) diff --git a/tests/baselines/reference/spellingSuggestionGlobal4.symbols b/tests/baselines/reference/spellingSuggestionGlobal4.symbols new file mode 100644 index 0000000000000..862216dbdb19b --- /dev/null +++ b/tests/baselines/reference/spellingSuggestionGlobal4.symbols @@ -0,0 +1,8 @@ +=== tests/cases/compiler/spellingSuggestionGlobal4.ts === +export {} +declare global { var x: any } +>global : Symbol(global, Decl(spellingSuggestionGlobal4.ts, 0, 9)) +>x : Symbol(x, Decl(spellingSuggestionGlobal4.ts, 1, 20)) + +global.x // should not suggest `global` (GH#42209) + diff --git a/tests/baselines/reference/spellingSuggestionGlobal4.types b/tests/baselines/reference/spellingSuggestionGlobal4.types new file mode 100644 index 0000000000000..9fd8b3367164c --- /dev/null +++ b/tests/baselines/reference/spellingSuggestionGlobal4.types @@ -0,0 +1,11 @@ +=== tests/cases/compiler/spellingSuggestionGlobal4.ts === +export {} +declare global { var x: any } +>global : typeof global +>x : any + +global.x // should not suggest `global` (GH#42209) +>global.x : any +>global : any +>x : any + diff --git a/tests/baselines/reference/spellingSuggestionJSXAttribute.symbols b/tests/baselines/reference/spellingSuggestionJSXAttribute.symbols index b6cc2d6eb50d3..bf37711d7dc41 100644 --- a/tests/baselines/reference/spellingSuggestionJSXAttribute.symbols +++ b/tests/baselines/reference/spellingSuggestionJSXAttribute.symbols @@ -20,19 +20,19 @@ class MyComp extends React.Component<{ className?: string, htmlFor?: string }> { >htmlFor : Symbol(htmlFor, Decl(spellingSuggestionJSXAttribute.tsx, 6, 58)) ; ->a : Symbol(JSX.IntrinsicElements.a, Decl(react16.d.ts, 2390, 41)) +>a : Symbol(JSX.IntrinsicElements.a, Decl(react16.d.ts, 2516, 41)) >class : Symbol(class, Decl(spellingSuggestionJSXAttribute.tsx, 7, 2)) ; // should have no fix ->a : Symbol(JSX.IntrinsicElements.a, Decl(react16.d.ts, 2390, 41)) +>a : Symbol(JSX.IntrinsicElements.a, Decl(react16.d.ts, 2516, 41)) >for : Symbol(for, Decl(spellingSuggestionJSXAttribute.tsx, 8, 2))
->div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2420, 114)) +>div : Symbol(JSX.IntrinsicElements.div, Decl(react16.d.ts, 2546, 114)) } BackButton.defaultProps = { >BackButton.defaultProps : Symbol(BackButton.defaultProps, Decl(tsxStatelessComponentDefaultProps.tsx, 9, 1)) diff --git a/tests/baselines/reference/typeFromPropertyAssignment17.symbols b/tests/baselines/reference/typeFromPropertyAssignment17.symbols index b6121ee2507cc..007ddf6d2778f 100644 --- a/tests/baselines/reference/typeFromPropertyAssignment17.symbols +++ b/tests/baselines/reference/typeFromPropertyAssignment17.symbols @@ -38,7 +38,7 @@ declare var module: any; === tests/cases/conformance/salsa/minimatch.js === /// module.exports = minimatch ->module.exports : Symbol("tests/cases/conformance/salsa/minimatch", Decl(minimatch.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(minimatch.js, 0, 0)) >module : Symbol(export=, Decl(minimatch.js, 0, 0)) >exports : Symbol(export=, Decl(minimatch.js, 0, 0)) >minimatch : Symbol(minimatch, Decl(minimatch.js, 6, 1), Decl(minimatch.js, 1, 26), Decl(minimatch.js, 2, 15)) diff --git a/tests/baselines/reference/typeFromPropertyAssignment17.types b/tests/baselines/reference/typeFromPropertyAssignment17.types index 86f6b6346f166..a6a907f7c77ad 100644 --- a/tests/baselines/reference/typeFromPropertyAssignment17.types +++ b/tests/baselines/reference/typeFromPropertyAssignment17.types @@ -45,7 +45,7 @@ declare var module: any; module.exports = minimatch >module.exports = minimatch : typeof minimatch >module.exports : typeof minimatch ->module : { "\"tests/cases/conformance/salsa/minimatch\"": typeof minimatch; } +>module : { exports: typeof minimatch; } >exports : typeof minimatch >minimatch : typeof minimatch diff --git a/tests/baselines/reference/typeFromPropertyAssignment19.symbols b/tests/baselines/reference/typeFromPropertyAssignment19.symbols index 4b89af4a62eef..f8f40e0dbc567 100644 --- a/tests/baselines/reference/typeFromPropertyAssignment19.symbols +++ b/tests/baselines/reference/typeFromPropertyAssignment19.symbols @@ -22,7 +22,7 @@ declare var module: any; /// exports = module.exports = C >exports : Symbol("tests/cases/conformance/salsa/semver", Decl(semver.js, 0, 0)) ->module.exports : Symbol("tests/cases/conformance/salsa/semver", Decl(semver.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(semver.js, 0, 0)) >module : Symbol(export=, Decl(semver.js, 1, 9)) >exports : Symbol(export=, Decl(semver.js, 1, 9)) >C : Symbol(C, Decl(semver.js, 2, 16), Decl(semver.js, 1, 28)) diff --git a/tests/baselines/reference/typeFromPropertyAssignment19.types b/tests/baselines/reference/typeFromPropertyAssignment19.types index a82897616e32b..57c15b658a06c 100644 --- a/tests/baselines/reference/typeFromPropertyAssignment19.types +++ b/tests/baselines/reference/typeFromPropertyAssignment19.types @@ -28,7 +28,7 @@ exports = module.exports = C >exports : typeof C >module.exports = C : typeof C >module.exports : typeof C ->module : { "\"tests/cases/conformance/salsa/semver\"": typeof C; } +>module : { exports: typeof C; } >exports : typeof C >C : typeof C diff --git a/tests/baselines/reference/typeFromPropertyAssignment37.symbols b/tests/baselines/reference/typeFromPropertyAssignment37.symbols index 909ded56c27c7..dd5667fc4f5f6 100644 --- a/tests/baselines/reference/typeFromPropertyAssignment37.symbols +++ b/tests/baselines/reference/typeFromPropertyAssignment37.symbols @@ -21,9 +21,9 @@ util.existy // no error const util = exports = module.exports = {} >util : Symbol(util, Decl(mod.js, 0, 5)) >exports : Symbol("tests/cases/conformance/salsa/mod", Decl(mod.js, 0, 0)) ->module.exports : Symbol("tests/cases/conformance/salsa/mod", Decl(mod.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod.js, 0, 0)) >module : Symbol(module, Decl(mod.js, 0, 22)) ->exports : Symbol("tests/cases/conformance/salsa/mod", Decl(mod.js, 0, 0)) +>exports : Symbol(module.exports, Decl(mod.js, 0, 0)) if (!!false) { util.existy = function () { } diff --git a/tests/baselines/reference/typeFromPropertyAssignment37.types b/tests/baselines/reference/typeFromPropertyAssignment37.types index 2813969da827e..df24580661282 100644 --- a/tests/baselines/reference/typeFromPropertyAssignment37.types +++ b/tests/baselines/reference/typeFromPropertyAssignment37.types @@ -20,13 +20,13 @@ util.existy // no error === tests/cases/conformance/salsa/mod.js === const util = exports = module.exports = {} ->util : typeof import("tests/cases/conformance/salsa/mod") ->exports = module.exports = {} : typeof import("tests/cases/conformance/salsa/mod") ->exports : typeof import("tests/cases/conformance/salsa/mod") ->module.exports = {} : typeof import("tests/cases/conformance/salsa/mod") ->module.exports : typeof import("tests/cases/conformance/salsa/mod") ->module : { "\"tests/cases/conformance/salsa/mod\"": typeof import("tests/cases/conformance/salsa/mod"); } +>util : typeof module.exports +>exports = module.exports = {} : typeof module.exports >exports : typeof import("tests/cases/conformance/salsa/mod") +>module.exports = {} : typeof module.exports +>module.exports : typeof module.exports +>module : { exports: typeof module.exports; } +>exports : typeof module.exports >{} : {} if (!!false) { @@ -37,7 +37,7 @@ if (!!false) { util.existy = function () { } >util.existy = function () { } : () => void >util.existy : () => void ->util : typeof import("tests/cases/conformance/salsa/mod") +>util : typeof module.exports >existy : () => void >function () { } : () => void } diff --git a/tests/baselines/reference/typeGuardIntersectionTypes.symbols b/tests/baselines/reference/typeGuardIntersectionTypes.symbols index f99148a9f0500..21da29e434fec 100644 --- a/tests/baselines/reference/typeGuardIntersectionTypes.symbols +++ b/tests/baselines/reference/typeGuardIntersectionTypes.symbols @@ -176,17 +176,17 @@ function identifyBeast(beast: Beast) { >beast : Symbol(beast, Decl(typeGuardIntersectionTypes.ts, 64, 23)) if (beast.legs === 4) { ->beast.legs : Symbol(legs, Decl(typeGuardIntersectionTypes.ts, 55, 38), Decl(typeGuardIntersectionTypes.ts, 56, 21)) +>beast.legs : Symbol(Legged.legs, Decl(typeGuardIntersectionTypes.ts, 56, 21)) >beast : Symbol(beast, Decl(typeGuardIntersectionTypes.ts, 64, 23)) ->legs : Symbol(legs, Decl(typeGuardIntersectionTypes.ts, 55, 38), Decl(typeGuardIntersectionTypes.ts, 56, 21)) +>legs : Symbol(Legged.legs, Decl(typeGuardIntersectionTypes.ts, 56, 21)) log(`pegasus - 4 legs, wings`); >log : Symbol(log, Decl(typeGuardIntersectionTypes.ts, 48, 1)) } else if (beast.legs === 2) { ->beast.legs : Symbol(legs, Decl(typeGuardIntersectionTypes.ts, 55, 38), Decl(typeGuardIntersectionTypes.ts, 56, 21)) +>beast.legs : Symbol(Legged.legs, Decl(typeGuardIntersectionTypes.ts, 56, 21)) >beast : Symbol(beast, Decl(typeGuardIntersectionTypes.ts, 64, 23)) ->legs : Symbol(legs, Decl(typeGuardIntersectionTypes.ts, 55, 38), Decl(typeGuardIntersectionTypes.ts, 56, 21)) +>legs : Symbol(Legged.legs, Decl(typeGuardIntersectionTypes.ts, 56, 21)) log(`bird - 2 legs, wings`); >log : Symbol(log, Decl(typeGuardIntersectionTypes.ts, 48, 1)) @@ -194,9 +194,9 @@ function identifyBeast(beast: Beast) { else { log(`unknown - ${beast.legs} legs, wings`); >log : Symbol(log, Decl(typeGuardIntersectionTypes.ts, 48, 1)) ->beast.legs : Symbol(legs, Decl(typeGuardIntersectionTypes.ts, 55, 38), Decl(typeGuardIntersectionTypes.ts, 56, 21)) +>beast.legs : Symbol(Legged.legs, Decl(typeGuardIntersectionTypes.ts, 56, 21)) >beast : Symbol(beast, Decl(typeGuardIntersectionTypes.ts, 64, 23)) ->legs : Symbol(legs, Decl(typeGuardIntersectionTypes.ts, 55, 38), Decl(typeGuardIntersectionTypes.ts, 56, 21)) +>legs : Symbol(Legged.legs, Decl(typeGuardIntersectionTypes.ts, 56, 21)) } } @@ -204,9 +204,9 @@ function identifyBeast(beast: Beast) { else { log(`manbearpig - ${beast.legs} legs, no wings`); >log : Symbol(log, Decl(typeGuardIntersectionTypes.ts, 48, 1)) ->beast.legs : Symbol(legs, Decl(typeGuardIntersectionTypes.ts, 55, 38), Decl(typeGuardIntersectionTypes.ts, 56, 21)) +>beast.legs : Symbol(Legged.legs, Decl(typeGuardIntersectionTypes.ts, 56, 21)) >beast : Symbol(beast, Decl(typeGuardIntersectionTypes.ts, 64, 23)) ->legs : Symbol(legs, Decl(typeGuardIntersectionTypes.ts, 55, 38), Decl(typeGuardIntersectionTypes.ts, 56, 21)) +>legs : Symbol(Legged.legs, Decl(typeGuardIntersectionTypes.ts, 56, 21)) } } diff --git a/tests/baselines/reference/typeGuardIntersectionTypes.types b/tests/baselines/reference/typeGuardIntersectionTypes.types index 6d9d0f47ac470..a9f43b4917930 100644 --- a/tests/baselines/reference/typeGuardIntersectionTypes.types +++ b/tests/baselines/reference/typeGuardIntersectionTypes.types @@ -166,12 +166,12 @@ function identifyBeast(beast: Beast) { if (hasWings(beast)) { >hasWings(beast) : boolean >hasWings : (x: Beast) => x is Winged ->beast : Beast & Legged +>beast : Legged if (beast.legs === 4) { >beast.legs === 4 : boolean >beast.legs : number ->beast : Beast & Legged & Winged +>beast : Legged & Winged >legs : number >4 : 4 @@ -183,7 +183,7 @@ function identifyBeast(beast: Beast) { else if (beast.legs === 2) { >beast.legs === 2 : boolean >beast.legs : number ->beast : Beast & Legged & Winged +>beast : Legged & Winged >legs : number >2 : 2 @@ -196,9 +196,9 @@ function identifyBeast(beast: Beast) { log(`unknown - ${beast.legs} legs, wings`); >log(`unknown - ${beast.legs} legs, wings`) : void >log : (s: string) => void ->`unknown - ${beast.legs} legs, wings` : `unknown - ${number} legs, wings` +>`unknown - ${beast.legs} legs, wings` : string >beast.legs : number ->beast : Beast & Legged & Winged +>beast : Legged & Winged >legs : number } } @@ -208,9 +208,9 @@ function identifyBeast(beast: Beast) { log(`manbearpig - ${beast.legs} legs, no wings`); >log(`manbearpig - ${beast.legs} legs, no wings`) : void >log : (s: string) => void ->`manbearpig - ${beast.legs} legs, no wings` : `manbearpig - ${number} legs, no wings` +>`manbearpig - ${beast.legs} legs, no wings` : string >beast.legs : number ->beast : Beast & Legged +>beast : Legged >legs : number } } diff --git a/tests/baselines/reference/typeGuardsWithInstanceOf.errors.txt b/tests/baselines/reference/typeGuardsWithInstanceOf.errors.txt index c6f44d4f15274..ee651e82e7d39 100644 --- a/tests/baselines/reference/typeGuardsWithInstanceOf.errors.txt +++ b/tests/baselines/reference/typeGuardsWithInstanceOf.errors.txt @@ -1,8 +1,12 @@ tests/cases/conformance/expressions/typeGuards/typeGuardsWithInstanceOf.ts(7,20): error TS2339: Property 'global' does not exist on type 'never'. The intersection 'I & RegExp' was reduced to 'never' because property 'global' has conflicting types in some constituents. +tests/cases/conformance/expressions/typeGuards/typeGuardsWithInstanceOf.ts(36,11): error TS2339: Property 'onChanges' does not exist on type 'C | (Validator & Partial)'. + Property 'onChanges' does not exist on type 'C'. +tests/cases/conformance/expressions/typeGuards/typeGuardsWithInstanceOf.ts(37,11): error TS2339: Property 'onChanges' does not exist on type 'C | (Validator & Partial)'. + Property 'onChanges' does not exist on type 'C'. -==== tests/cases/conformance/expressions/typeGuards/typeGuardsWithInstanceOf.ts (1 errors) ==== +==== tests/cases/conformance/expressions/typeGuards/typeGuardsWithInstanceOf.ts (3 errors) ==== interface I { global: string; } var result!: I; var result2!: I; @@ -36,8 +40,19 @@ tests/cases/conformance/expressions/typeGuards/typeGuardsWithInstanceOf.ts(7,20) v // Validator & Partial & C } v // Validator & Partial via subtype reduction + + // In 4.1, we introduced a change which _fixed_ a bug with CFA + // correctly setting this to be the right object. With 4.2, + // we reverted that fix in #42231 which brought behavior back to + // before 4.1. if (v.onChanges) { + ~~~~~~~~~ +!!! error TS2339: Property 'onChanges' does not exist on type 'C | (Validator & Partial)'. +!!! error TS2339: Property 'onChanges' does not exist on type 'C'. v.onChanges({}); + ~~~~~~~~~ +!!! error TS2339: Property 'onChanges' does not exist on type 'C | (Validator & Partial)'. +!!! error TS2339: Property 'onChanges' does not exist on type 'C'. } } diff --git a/tests/baselines/reference/typeGuardsWithInstanceOf.js b/tests/baselines/reference/typeGuardsWithInstanceOf.js index 689712ad22e90..7e1af310c738d 100644 --- a/tests/baselines/reference/typeGuardsWithInstanceOf.js +++ b/tests/baselines/reference/typeGuardsWithInstanceOf.js @@ -29,6 +29,11 @@ function foo() { v // Validator & Partial & C } v // Validator & Partial via subtype reduction + + // In 4.1, we introduced a change which _fixed_ a bug with CFA + // correctly setting this to be the right object. With 4.2, + // we reverted that fix in #42231 which brought behavior back to + // before 4.1. if (v.onChanges) { v.onChanges({}); } @@ -58,6 +63,10 @@ function foo() { v; // Validator & Partial & C } v; // Validator & Partial via subtype reduction + // In 4.1, we introduced a change which _fixed_ a bug with CFA + // correctly setting this to be the right object. With 4.2, + // we reverted that fix in #42231 which brought behavior back to + // before 4.1. if (v.onChanges) { v.onChanges({}); } diff --git a/tests/baselines/reference/typeGuardsWithInstanceOf.symbols b/tests/baselines/reference/typeGuardsWithInstanceOf.symbols index 018c6bac6da52..eefd3700b6485 100644 --- a/tests/baselines/reference/typeGuardsWithInstanceOf.symbols +++ b/tests/baselines/reference/typeGuardsWithInstanceOf.symbols @@ -70,15 +70,15 @@ function foo() { v // Validator & Partial via subtype reduction >v : Symbol(v, Decl(typeGuardsWithInstanceOf.ts, 25, 7)) + // In 4.1, we introduced a change which _fixed_ a bug with CFA + // correctly setting this to be the right object. With 4.2, + // we reverted that fix in #42231 which brought behavior back to + // before 4.1. if (v.onChanges) { ->v.onChanges : Symbol(onChanges, Decl(typeGuardsWithInstanceOf.ts, 11, 21)) >v : Symbol(v, Decl(typeGuardsWithInstanceOf.ts, 25, 7)) ->onChanges : Symbol(onChanges, Decl(typeGuardsWithInstanceOf.ts, 11, 21)) v.onChanges({}); ->v.onChanges : Symbol(onChanges, Decl(typeGuardsWithInstanceOf.ts, 11, 21)) >v : Symbol(v, Decl(typeGuardsWithInstanceOf.ts, 25, 7)) ->onChanges : Symbol(onChanges, Decl(typeGuardsWithInstanceOf.ts, 11, 21)) } } diff --git a/tests/baselines/reference/typeGuardsWithInstanceOf.types b/tests/baselines/reference/typeGuardsWithInstanceOf.types index 198769effc2c4..0b57dbff89bf1 100644 --- a/tests/baselines/reference/typeGuardsWithInstanceOf.types +++ b/tests/baselines/reference/typeGuardsWithInstanceOf.types @@ -65,21 +65,25 @@ function foo() { >C : typeof C v // Validator & Partial & C ->v : Validator & Partial & C +>v : C } v // Validator & Partial via subtype reduction ->v : Validator & Partial +>v : C | (Validator & Partial) + // In 4.1, we introduced a change which _fixed_ a bug with CFA + // correctly setting this to be the right object. With 4.2, + // we reverted that fix in #42231 which brought behavior back to + // before 4.1. if (v.onChanges) { ->v.onChanges : ((changes: Record) => void) | undefined ->v : Validator & Partial ->onChanges : ((changes: Record) => void) | undefined +>v.onChanges : any +>v : C | (Validator & Partial) +>onChanges : any v.onChanges({}); ->v.onChanges({}) : void ->v.onChanges : (changes: Record) => void ->v : Validator & Partial ->onChanges : (changes: Record) => void +>v.onChanges({}) : any +>v.onChanges : any +>v : C | (Validator & Partial) +>onChanges : any >{} : {} } } diff --git a/tests/baselines/reference/typeTagModuleExports.symbols b/tests/baselines/reference/typeTagModuleExports.symbols index a625e8dd77b98..9b660c0554bb3 100644 --- a/tests/baselines/reference/typeTagModuleExports.symbols +++ b/tests/baselines/reference/typeTagModuleExports.symbols @@ -1,7 +1,7 @@ === tests/cases/conformance/jsdoc/bug27327.js === /** @type {string} */ module.exports = 0; ->module.exports : Symbol("tests/cases/conformance/jsdoc/bug27327", Decl(bug27327.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(bug27327.js, 0, 0)) >module : Symbol(export=, Decl(bug27327.js, 0, 0)) >exports : Symbol(export=, Decl(bug27327.js, 0, 0)) diff --git a/tests/baselines/reference/typeTagModuleExports.types b/tests/baselines/reference/typeTagModuleExports.types index 20da526f47449..bf7206042cb4a 100644 --- a/tests/baselines/reference/typeTagModuleExports.types +++ b/tests/baselines/reference/typeTagModuleExports.types @@ -3,7 +3,7 @@ module.exports = 0; >module.exports = 0 : string >module.exports : string ->module : { "\"tests/cases/conformance/jsdoc/bug27327\"": string; } +>module : { exports: string; } >exports : string >0 : 0 diff --git a/tests/baselines/reference/typeVariableTypeGuards.types b/tests/baselines/reference/typeVariableTypeGuards.types index 063f6bbc96d55..35656ad71d6e7 100644 --- a/tests/baselines/reference/typeVariableTypeGuards.types +++ b/tests/baselines/reference/typeVariableTypeGuards.types @@ -16,7 +16,7 @@ class A

> { >doSomething : () => void this.props.foo && this.props.foo() ->this.props.foo && this.props.foo() : void | undefined +>this.props.foo && this.props.foo() : void >this.props.foo : P["foo"] | undefined >this.props : Readonly

>this : this diff --git a/tests/baselines/reference/typedefCrossModule.symbols b/tests/baselines/reference/typedefCrossModule.symbols index aa3c9d5784a39..73bb067e52b64 100644 --- a/tests/baselines/reference/typedefCrossModule.symbols +++ b/tests/baselines/reference/typedefCrossModule.symbols @@ -9,7 +9,7 @@ declare var module: { exports: any}; /** @typedef {{ type: "b", y: 1 }} B */ /** @typedef {A | B} Both */ module.exports = C ->module.exports : Symbol("tests/cases/conformance/jsdoc/mod1", Decl(mod1.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >module : Symbol(export=, Decl(mod1.js, 0, 0)) >exports : Symbol(export=, Decl(mod1.js, 0, 0)) >C : Symbol(C, Decl(mod1.js, 4, 18)) diff --git a/tests/baselines/reference/typedefCrossModule.types b/tests/baselines/reference/typedefCrossModule.types index fdc8314c06465..31dabc4acfd68 100644 --- a/tests/baselines/reference/typedefCrossModule.types +++ b/tests/baselines/reference/typedefCrossModule.types @@ -11,7 +11,7 @@ declare var module: { exports: any}; module.exports = C >module.exports = C : typeof C >module.exports : typeof C ->module : { "\"tests/cases/conformance/jsdoc/mod1\"": typeof C; } +>module : { exports: typeof C; } >exports : typeof C >C : typeof C diff --git a/tests/baselines/reference/typedefCrossModule2.symbols b/tests/baselines/reference/typedefCrossModule2.symbols index a473991f8c4b4..adea03ca98099 100644 --- a/tests/baselines/reference/typedefCrossModule2.symbols +++ b/tests/baselines/reference/typedefCrossModule2.symbols @@ -31,7 +31,7 @@ exports.Bar = class { } /** @typedef {number} Baz */ module.exports = { ->module.exports : Symbol("tests/cases/conformance/jsdoc/mod1", Decl(mod1.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >module : Symbol(export=, Decl(mod1.js, 6, 23), Decl(mod1.js, 19, 17)) >exports : Symbol(export=, Decl(mod1.js, 6, 23), Decl(mod1.js, 19, 17)) @@ -53,7 +53,7 @@ exports.Quid = 2; /** @typedef {number} Quack */ module.exports = { ->module.exports : Symbol("tests/cases/conformance/jsdoc/mod1", Decl(mod1.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod1.js, 0, 0)) >module : Symbol(export=, Decl(mod1.js, 6, 23), Decl(mod1.js, 19, 17)) >exports : Symbol(export=, Decl(mod1.js, 6, 23), Decl(mod1.js, 19, 17)) diff --git a/tests/baselines/reference/typedefCrossModule2.types b/tests/baselines/reference/typedefCrossModule2.types index 02aa91c079877..d38cc33a6d72d 100644 --- a/tests/baselines/reference/typedefCrossModule2.types +++ b/tests/baselines/reference/typedefCrossModule2.types @@ -39,7 +39,7 @@ exports.Bar = class { } module.exports = { >module.exports = { Baz: class { }} : { Baz: typeof Baz; Bar: typeof Bar; Quid: number; } | { Quack: number; Bar: typeof Bar; Quid: number; } >module.exports : { Baz: typeof Baz; Bar: typeof Bar; Quid: number; } | { Quack: number; Bar: typeof Bar; Quid: number; } ->module : { "\"tests/cases/conformance/jsdoc/mod1\"": { Baz: typeof Baz; Bar: typeof Bar; Quid: number; } | { Quack: number; Bar: typeof Bar; Quid: number; }; } +>module : { exports: { Baz: typeof Baz; Bar: typeof Bar; Quid: number; } | { Quack: number; Bar: typeof Bar; Quid: number; }; } >exports : { Baz: typeof Baz; Bar: typeof Bar; Quid: number; } | { Quack: number; Bar: typeof Bar; Quid: number; } >{ Baz: class { }} : { Baz: typeof Baz; } @@ -67,7 +67,7 @@ exports.Quid = 2; module.exports = { >module.exports = { Quack: 2} : { Baz: typeof Baz; Bar: typeof Bar; Quid: number; } | { Quack: number; Bar: typeof Bar; Quid: number; } >module.exports : { Baz: typeof Baz; Bar: typeof Bar; Quid: number; } | { Quack: number; Bar: typeof Bar; Quid: number; } ->module : { "\"tests/cases/conformance/jsdoc/mod1\"": { Baz: typeof Baz; Bar: typeof Bar; Quid: number; } | { Quack: number; Bar: typeof Bar; Quid: number; }; } +>module : { exports: { Baz: typeof Baz; Bar: typeof Bar; Quid: number; } | { Quack: number; Bar: typeof Bar; Quid: number; }; } >exports : { Baz: typeof Baz; Bar: typeof Bar; Quid: number; } | { Quack: number; Bar: typeof Bar; Quid: number; } >{ Quack: 2} : { Quack: number; } diff --git a/tests/baselines/reference/typedefCrossModule3.symbols b/tests/baselines/reference/typedefCrossModule3.symbols index e4085c79bf15d..1cb4297094050 100644 --- a/tests/baselines/reference/typedefCrossModule3.symbols +++ b/tests/baselines/reference/typedefCrossModule3.symbols @@ -9,7 +9,7 @@ ns.Foo = class {} >Foo : Symbol(Foo, Decl(mod2.js, 1, 14), Decl(mod2.js, 0, 4)) module.exports = ns; ->module.exports : Symbol("tests/cases/conformance/jsdoc/mod2", Decl(mod2.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod2.js, 0, 0)) >module : Symbol(export=, Decl(mod2.js, 2, 17)) >exports : Symbol(export=, Decl(mod2.js, 2, 17)) >ns : Symbol(ns, Decl(mod2.js, 1, 5), Decl(mod2.js, 1, 14)) diff --git a/tests/baselines/reference/typedefCrossModule3.types b/tests/baselines/reference/typedefCrossModule3.types index bca3cb156986c..8b3b349f2775e 100644 --- a/tests/baselines/reference/typedefCrossModule3.types +++ b/tests/baselines/reference/typedefCrossModule3.types @@ -14,7 +14,7 @@ ns.Foo = class {} module.exports = ns; >module.exports = ns : typeof ns >module.exports : typeof ns ->module : { "\"tests/cases/conformance/jsdoc/mod2\"": typeof ns; } +>module : { exports: typeof ns; } >exports : typeof ns >ns : typeof ns diff --git a/tests/baselines/reference/typedefCrossModule4.symbols b/tests/baselines/reference/typedefCrossModule4.symbols index bc68e509d776a..a4762172f1732 100644 --- a/tests/baselines/reference/typedefCrossModule4.symbols +++ b/tests/baselines/reference/typedefCrossModule4.symbols @@ -4,7 +4,7 @@ class Bar { } >Bar : Symbol(Bar, Decl(mod3.js, 0, 0)) module.exports = { Foo: Bar }; ->module.exports : Symbol("tests/cases/conformance/jsdoc/mod3", Decl(mod3.js, 0, 0)) +>module.exports : Symbol(module.exports, Decl(mod3.js, 0, 0)) >module : Symbol(export=, Decl(mod3.js, 1, 13)) >exports : Symbol(export=, Decl(mod3.js, 1, 13)) >Foo : Symbol(Foo, Decl(mod3.js, 2, 18)) diff --git a/tests/baselines/reference/typedefCrossModule4.types b/tests/baselines/reference/typedefCrossModule4.types index eb01fe95625d6..b107c80e6240b 100644 --- a/tests/baselines/reference/typedefCrossModule4.types +++ b/tests/baselines/reference/typedefCrossModule4.types @@ -6,7 +6,7 @@ class Bar { } module.exports = { Foo: Bar }; >module.exports = { Foo: Bar } : { Foo: typeof Bar; } >module.exports : { Foo: typeof Bar; } ->module : { "\"tests/cases/conformance/jsdoc/mod3\"": { Foo: typeof Bar; }; } +>module : { exports: { Foo: typeof Bar; }; } >exports : { Foo: typeof Bar; } >{ Foo: Bar } : { Foo: typeof Bar; } >Foo : typeof Bar diff --git a/tests/baselines/reference/unicodeExtendedEscapesInTemplates20_ES5.types b/tests/baselines/reference/unicodeExtendedEscapesInTemplates20_ES5.types index 90cebfc3043c2..ddb24f5de937a 100644 --- a/tests/baselines/reference/unicodeExtendedEscapesInTemplates20_ES5.types +++ b/tests/baselines/reference/unicodeExtendedEscapesInTemplates20_ES5.types @@ -1,6 +1,6 @@ === tests/cases/conformance/es6/unicodeExtendedEscapes/unicodeExtendedEscapesInTemplates20_ES5.ts === var x = `\u{48}\u{65}\u{6c}\u{6c}\u{6f}${`\u{20}\u{020}\u{0020}\u{000020}`}\u{77}\u{6f}\u{72}\u{6c}\u{64}`; >x : string ->`\u{48}\u{65}\u{6c}\u{6c}\u{6f}${`\u{20}\u{020}\u{0020}\u{000020}`}\u{77}\u{6f}\u{72}\u{6c}\u{64}` : "Hello world" +>`\u{48}\u{65}\u{6c}\u{6c}\u{6f}${`\u{20}\u{020}\u{0020}\u{000020}`}\u{77}\u{6f}\u{72}\u{6c}\u{64}` : string >`\u{20}\u{020}\u{0020}\u{000020}` : " " diff --git a/tests/baselines/reference/unicodeExtendedEscapesInTemplates20_ES6.types b/tests/baselines/reference/unicodeExtendedEscapesInTemplates20_ES6.types index f8ae16d4a4cd1..8244bc5b7fd71 100644 --- a/tests/baselines/reference/unicodeExtendedEscapesInTemplates20_ES6.types +++ b/tests/baselines/reference/unicodeExtendedEscapesInTemplates20_ES6.types @@ -1,6 +1,6 @@ === tests/cases/conformance/es6/unicodeExtendedEscapes/unicodeExtendedEscapesInTemplates20_ES6.ts === var x = `\u{48}\u{65}\u{6c}\u{6c}\u{6f}${`\u{20}\u{020}\u{0020}\u{000020}`}\u{77}\u{6f}\u{72}\u{6c}\u{64}`; >x : string ->`\u{48}\u{65}\u{6c}\u{6c}\u{6f}${`\u{20}\u{020}\u{0020}\u{000020}`}\u{77}\u{6f}\u{72}\u{6c}\u{64}` : "Hello world" +>`\u{48}\u{65}\u{6c}\u{6c}\u{6f}${`\u{20}\u{020}\u{0020}\u{000020}`}\u{77}\u{6f}\u{72}\u{6c}\u{64}` : string >`\u{20}\u{020}\u{0020}\u{000020}` : " " diff --git a/tests/baselines/reference/unionSubtypeReductionErrors.errors.txt b/tests/baselines/reference/unionSubtypeReductionErrors.errors.txt index 3990e5e67350a..fb2936991c0e5 100644 --- a/tests/baselines/reference/unionSubtypeReductionErrors.errors.txt +++ b/tests/baselines/reference/unionSubtypeReductionErrors.errors.txt @@ -1,10017 +1,5011 @@ -tests/cases/compiler/unionSubtypeReductionErrors.ts(1,9): error TS2590: Expression produces a union type that is too complex to represent. tests/cases/compiler/unionSubtypeReductionErrors.ts(5006,9): error TS2590: Expression produces a union type that is too complex to represent. -==== tests/cases/compiler/unionSubtypeReductionErrors.ts (2 errors) ==== +==== tests/cases/compiler/unionSubtypeReductionErrors.ts (1 errors) ==== let a = [ - ~ 0 as 0, - ~~~~~~~~~~~ 1 as 1, - ~~~~~~~~~~~ 2 as 2, - ~~~~~~~~~~~ 3 as 3, - ~~~~~~~~~~~ 4 as 4, - ~~~~~~~~~~~ 5 as 5, - ~~~~~~~~~~~ 6 as 6, - ~~~~~~~~~~~ 7 as 7, - ~~~~~~~~~~~ 8 as 8, - ~~~~~~~~~~~ 9 as 9, - ~~~~~~~~~~~ 10 as 10, - ~~~~~~~~~~~~~ 11 as 11, - ~~~~~~~~~~~~~ 12 as 12, - ~~~~~~~~~~~~~ 13 as 13, - ~~~~~~~~~~~~~ 14 as 14, - ~~~~~~~~~~~~~ 15 as 15, - ~~~~~~~~~~~~~ 16 as 16, - ~~~~~~~~~~~~~ 17 as 17, - ~~~~~~~~~~~~~ 18 as 18, - ~~~~~~~~~~~~~ 19 as 19, - ~~~~~~~~~~~~~ 20 as 20, - ~~~~~~~~~~~~~ 21 as 21, - ~~~~~~~~~~~~~ 22 as 22, - ~~~~~~~~~~~~~ 23 as 23, - ~~~~~~~~~~~~~ 24 as 24, - ~~~~~~~~~~~~~ 25 as 25, - ~~~~~~~~~~~~~ 26 as 26, - ~~~~~~~~~~~~~ 27 as 27, - ~~~~~~~~~~~~~ 28 as 28, - ~~~~~~~~~~~~~ 29 as 29, - ~~~~~~~~~~~~~ 30 as 30, - ~~~~~~~~~~~~~ 31 as 31, - ~~~~~~~~~~~~~ 32 as 32, - ~~~~~~~~~~~~~ 33 as 33, - ~~~~~~~~~~~~~ 34 as 34, - ~~~~~~~~~~~~~ 35 as 35, - ~~~~~~~~~~~~~ 36 as 36, - ~~~~~~~~~~~~~ 37 as 37, - ~~~~~~~~~~~~~ 38 as 38, - ~~~~~~~~~~~~~ 39 as 39, - ~~~~~~~~~~~~~ 40 as 40, - ~~~~~~~~~~~~~ 41 as 41, - ~~~~~~~~~~~~~ 42 as 42, - ~~~~~~~~~~~~~ 43 as 43, - ~~~~~~~~~~~~~ 44 as 44, - ~~~~~~~~~~~~~ 45 as 45, - ~~~~~~~~~~~~~ 46 as 46, - ~~~~~~~~~~~~~ 47 as 47, - ~~~~~~~~~~~~~ 48 as 48, - ~~~~~~~~~~~~~ 49 as 49, - ~~~~~~~~~~~~~ 50 as 50, - ~~~~~~~~~~~~~ 51 as 51, - ~~~~~~~~~~~~~ 52 as 52, - ~~~~~~~~~~~~~ 53 as 53, - ~~~~~~~~~~~~~ 54 as 54, - ~~~~~~~~~~~~~ 55 as 55, - ~~~~~~~~~~~~~ 56 as 56, - ~~~~~~~~~~~~~ 57 as 57, - ~~~~~~~~~~~~~ 58 as 58, - ~~~~~~~~~~~~~ 59 as 59, - ~~~~~~~~~~~~~ 60 as 60, - ~~~~~~~~~~~~~ 61 as 61, - ~~~~~~~~~~~~~ 62 as 62, - ~~~~~~~~~~~~~ 63 as 63, - ~~~~~~~~~~~~~ 64 as 64, - ~~~~~~~~~~~~~ 65 as 65, - ~~~~~~~~~~~~~ 66 as 66, - ~~~~~~~~~~~~~ 67 as 67, - ~~~~~~~~~~~~~ 68 as 68, - ~~~~~~~~~~~~~ 69 as 69, - ~~~~~~~~~~~~~ 70 as 70, - ~~~~~~~~~~~~~ 71 as 71, - ~~~~~~~~~~~~~ 72 as 72, - ~~~~~~~~~~~~~ 73 as 73, - ~~~~~~~~~~~~~ 74 as 74, - ~~~~~~~~~~~~~ 75 as 75, - ~~~~~~~~~~~~~ 76 as 76, - ~~~~~~~~~~~~~ 77 as 77, - ~~~~~~~~~~~~~ 78 as 78, - ~~~~~~~~~~~~~ 79 as 79, - ~~~~~~~~~~~~~ 80 as 80, - ~~~~~~~~~~~~~ 81 as 81, - ~~~~~~~~~~~~~ 82 as 82, - ~~~~~~~~~~~~~ 83 as 83, - ~~~~~~~~~~~~~ 84 as 84, - ~~~~~~~~~~~~~ 85 as 85, - ~~~~~~~~~~~~~ 86 as 86, - ~~~~~~~~~~~~~ 87 as 87, - ~~~~~~~~~~~~~ 88 as 88, - ~~~~~~~~~~~~~ 89 as 89, - ~~~~~~~~~~~~~ 90 as 90, - ~~~~~~~~~~~~~ 91 as 91, - ~~~~~~~~~~~~~ 92 as 92, - ~~~~~~~~~~~~~ 93 as 93, - ~~~~~~~~~~~~~ 94 as 94, - ~~~~~~~~~~~~~ 95 as 95, - ~~~~~~~~~~~~~ 96 as 96, - ~~~~~~~~~~~~~ 97 as 97, - ~~~~~~~~~~~~~ 98 as 98, - ~~~~~~~~~~~~~ 99 as 99, - ~~~~~~~~~~~~~ 100 as 100, - ~~~~~~~~~~~~~~~ 101 as 101, - ~~~~~~~~~~~~~~~ 102 as 102, - ~~~~~~~~~~~~~~~ 103 as 103, - ~~~~~~~~~~~~~~~ 104 as 104, - ~~~~~~~~~~~~~~~ 105 as 105, - ~~~~~~~~~~~~~~~ 106 as 106, - ~~~~~~~~~~~~~~~ 107 as 107, - ~~~~~~~~~~~~~~~ 108 as 108, - ~~~~~~~~~~~~~~~ 109 as 109, - ~~~~~~~~~~~~~~~ 110 as 110, - ~~~~~~~~~~~~~~~ 111 as 111, - ~~~~~~~~~~~~~~~ 112 as 112, - ~~~~~~~~~~~~~~~ 113 as 113, - ~~~~~~~~~~~~~~~ 114 as 114, - ~~~~~~~~~~~~~~~ 115 as 115, - ~~~~~~~~~~~~~~~ 116 as 116, - ~~~~~~~~~~~~~~~ 117 as 117, - ~~~~~~~~~~~~~~~ 118 as 118, - ~~~~~~~~~~~~~~~ 119 as 119, - ~~~~~~~~~~~~~~~ 120 as 120, - ~~~~~~~~~~~~~~~ 121 as 121, - ~~~~~~~~~~~~~~~ 122 as 122, - ~~~~~~~~~~~~~~~ 123 as 123, - ~~~~~~~~~~~~~~~ 124 as 124, - ~~~~~~~~~~~~~~~ 125 as 125, - ~~~~~~~~~~~~~~~ 126 as 126, - ~~~~~~~~~~~~~~~ 127 as 127, - ~~~~~~~~~~~~~~~ 128 as 128, - ~~~~~~~~~~~~~~~ 129 as 129, - ~~~~~~~~~~~~~~~ 130 as 130, - ~~~~~~~~~~~~~~~ 131 as 131, - ~~~~~~~~~~~~~~~ 132 as 132, - ~~~~~~~~~~~~~~~ 133 as 133, - ~~~~~~~~~~~~~~~ 134 as 134, - ~~~~~~~~~~~~~~~ 135 as 135, - ~~~~~~~~~~~~~~~ 136 as 136, - ~~~~~~~~~~~~~~~ 137 as 137, - ~~~~~~~~~~~~~~~ 138 as 138, - ~~~~~~~~~~~~~~~ 139 as 139, - ~~~~~~~~~~~~~~~ 140 as 140, - ~~~~~~~~~~~~~~~ 141 as 141, - ~~~~~~~~~~~~~~~ 142 as 142, - ~~~~~~~~~~~~~~~ 143 as 143, - ~~~~~~~~~~~~~~~ 144 as 144, - ~~~~~~~~~~~~~~~ 145 as 145, - ~~~~~~~~~~~~~~~ 146 as 146, - ~~~~~~~~~~~~~~~ 147 as 147, - ~~~~~~~~~~~~~~~ 148 as 148, - ~~~~~~~~~~~~~~~ 149 as 149, - ~~~~~~~~~~~~~~~ 150 as 150, - ~~~~~~~~~~~~~~~ 151 as 151, - ~~~~~~~~~~~~~~~ 152 as 152, - ~~~~~~~~~~~~~~~ 153 as 153, - ~~~~~~~~~~~~~~~ 154 as 154, - ~~~~~~~~~~~~~~~ 155 as 155, - ~~~~~~~~~~~~~~~ 156 as 156, - ~~~~~~~~~~~~~~~ 157 as 157, - ~~~~~~~~~~~~~~~ 158 as 158, - ~~~~~~~~~~~~~~~ 159 as 159, - ~~~~~~~~~~~~~~~ 160 as 160, - ~~~~~~~~~~~~~~~ 161 as 161, - ~~~~~~~~~~~~~~~ 162 as 162, - ~~~~~~~~~~~~~~~ 163 as 163, - ~~~~~~~~~~~~~~~ 164 as 164, - ~~~~~~~~~~~~~~~ 165 as 165, - ~~~~~~~~~~~~~~~ 166 as 166, - ~~~~~~~~~~~~~~~ 167 as 167, - ~~~~~~~~~~~~~~~ 168 as 168, - ~~~~~~~~~~~~~~~ 169 as 169, - ~~~~~~~~~~~~~~~ 170 as 170, - ~~~~~~~~~~~~~~~ 171 as 171, - ~~~~~~~~~~~~~~~ 172 as 172, - ~~~~~~~~~~~~~~~ 173 as 173, - ~~~~~~~~~~~~~~~ 174 as 174, - ~~~~~~~~~~~~~~~ 175 as 175, - ~~~~~~~~~~~~~~~ 176 as 176, - ~~~~~~~~~~~~~~~ 177 as 177, - ~~~~~~~~~~~~~~~ 178 as 178, - ~~~~~~~~~~~~~~~ 179 as 179, - ~~~~~~~~~~~~~~~ 180 as 180, - ~~~~~~~~~~~~~~~ 181 as 181, - ~~~~~~~~~~~~~~~ 182 as 182, - ~~~~~~~~~~~~~~~ 183 as 183, - ~~~~~~~~~~~~~~~ 184 as 184, - ~~~~~~~~~~~~~~~ 185 as 185, - ~~~~~~~~~~~~~~~ 186 as 186, - ~~~~~~~~~~~~~~~ 187 as 187, - ~~~~~~~~~~~~~~~ 188 as 188, - ~~~~~~~~~~~~~~~ 189 as 189, - ~~~~~~~~~~~~~~~ 190 as 190, - ~~~~~~~~~~~~~~~ 191 as 191, - ~~~~~~~~~~~~~~~ 192 as 192, - ~~~~~~~~~~~~~~~ 193 as 193, - ~~~~~~~~~~~~~~~ 194 as 194, - ~~~~~~~~~~~~~~~ 195 as 195, - ~~~~~~~~~~~~~~~ 196 as 196, - ~~~~~~~~~~~~~~~ 197 as 197, - ~~~~~~~~~~~~~~~ 198 as 198, - ~~~~~~~~~~~~~~~ 199 as 199, - ~~~~~~~~~~~~~~~ 200 as 200, - ~~~~~~~~~~~~~~~ 201 as 201, - ~~~~~~~~~~~~~~~ 202 as 202, - ~~~~~~~~~~~~~~~ 203 as 203, - ~~~~~~~~~~~~~~~ 204 as 204, - ~~~~~~~~~~~~~~~ 205 as 205, - ~~~~~~~~~~~~~~~ 206 as 206, - ~~~~~~~~~~~~~~~ 207 as 207, - ~~~~~~~~~~~~~~~ 208 as 208, - ~~~~~~~~~~~~~~~ 209 as 209, - ~~~~~~~~~~~~~~~ 210 as 210, - ~~~~~~~~~~~~~~~ 211 as 211, - ~~~~~~~~~~~~~~~ 212 as 212, - ~~~~~~~~~~~~~~~ 213 as 213, - ~~~~~~~~~~~~~~~ 214 as 214, - ~~~~~~~~~~~~~~~ 215 as 215, - ~~~~~~~~~~~~~~~ 216 as 216, - ~~~~~~~~~~~~~~~ 217 as 217, - ~~~~~~~~~~~~~~~ 218 as 218, - ~~~~~~~~~~~~~~~ 219 as 219, - ~~~~~~~~~~~~~~~ 220 as 220, - ~~~~~~~~~~~~~~~ 221 as 221, - ~~~~~~~~~~~~~~~ 222 as 222, - ~~~~~~~~~~~~~~~ 223 as 223, - ~~~~~~~~~~~~~~~ 224 as 224, - ~~~~~~~~~~~~~~~ 225 as 225, - ~~~~~~~~~~~~~~~ 226 as 226, - ~~~~~~~~~~~~~~~ 227 as 227, - ~~~~~~~~~~~~~~~ 228 as 228, - ~~~~~~~~~~~~~~~ 229 as 229, - ~~~~~~~~~~~~~~~ 230 as 230, - ~~~~~~~~~~~~~~~ 231 as 231, - ~~~~~~~~~~~~~~~ 232 as 232, - ~~~~~~~~~~~~~~~ 233 as 233, - ~~~~~~~~~~~~~~~ 234 as 234, - ~~~~~~~~~~~~~~~ 235 as 235, - ~~~~~~~~~~~~~~~ 236 as 236, - ~~~~~~~~~~~~~~~ 237 as 237, - ~~~~~~~~~~~~~~~ 238 as 238, - ~~~~~~~~~~~~~~~ 239 as 239, - ~~~~~~~~~~~~~~~ 240 as 240, - ~~~~~~~~~~~~~~~ 241 as 241, - ~~~~~~~~~~~~~~~ 242 as 242, - ~~~~~~~~~~~~~~~ 243 as 243, - ~~~~~~~~~~~~~~~ 244 as 244, - ~~~~~~~~~~~~~~~ 245 as 245, - ~~~~~~~~~~~~~~~ 246 as 246, - ~~~~~~~~~~~~~~~ 247 as 247, - ~~~~~~~~~~~~~~~ 248 as 248, - ~~~~~~~~~~~~~~~ 249 as 249, - ~~~~~~~~~~~~~~~ 250 as 250, - ~~~~~~~~~~~~~~~ 251 as 251, - ~~~~~~~~~~~~~~~ 252 as 252, - ~~~~~~~~~~~~~~~ 253 as 253, - ~~~~~~~~~~~~~~~ 254 as 254, - ~~~~~~~~~~~~~~~ 255 as 255, - ~~~~~~~~~~~~~~~ 256 as 256, - ~~~~~~~~~~~~~~~ 257 as 257, - ~~~~~~~~~~~~~~~ 258 as 258, - ~~~~~~~~~~~~~~~ 259 as 259, - ~~~~~~~~~~~~~~~ 260 as 260, - ~~~~~~~~~~~~~~~ 261 as 261, - ~~~~~~~~~~~~~~~ 262 as 262, - ~~~~~~~~~~~~~~~ 263 as 263, - ~~~~~~~~~~~~~~~ 264 as 264, - ~~~~~~~~~~~~~~~ 265 as 265, - ~~~~~~~~~~~~~~~ 266 as 266, - ~~~~~~~~~~~~~~~ 267 as 267, - ~~~~~~~~~~~~~~~ 268 as 268, - ~~~~~~~~~~~~~~~ 269 as 269, - ~~~~~~~~~~~~~~~ 270 as 270, - ~~~~~~~~~~~~~~~ 271 as 271, - ~~~~~~~~~~~~~~~ 272 as 272, - ~~~~~~~~~~~~~~~ 273 as 273, - ~~~~~~~~~~~~~~~ 274 as 274, - ~~~~~~~~~~~~~~~ 275 as 275, - ~~~~~~~~~~~~~~~ 276 as 276, - ~~~~~~~~~~~~~~~ 277 as 277, - ~~~~~~~~~~~~~~~ 278 as 278, - ~~~~~~~~~~~~~~~ 279 as 279, - ~~~~~~~~~~~~~~~ 280 as 280, - ~~~~~~~~~~~~~~~ 281 as 281, - ~~~~~~~~~~~~~~~ 282 as 282, - ~~~~~~~~~~~~~~~ 283 as 283, - ~~~~~~~~~~~~~~~ 284 as 284, - ~~~~~~~~~~~~~~~ 285 as 285, - ~~~~~~~~~~~~~~~ 286 as 286, - ~~~~~~~~~~~~~~~ 287 as 287, - ~~~~~~~~~~~~~~~ 288 as 288, - ~~~~~~~~~~~~~~~ 289 as 289, - ~~~~~~~~~~~~~~~ 290 as 290, - ~~~~~~~~~~~~~~~ 291 as 291, - ~~~~~~~~~~~~~~~ 292 as 292, - ~~~~~~~~~~~~~~~ 293 as 293, - ~~~~~~~~~~~~~~~ 294 as 294, - ~~~~~~~~~~~~~~~ 295 as 295, - ~~~~~~~~~~~~~~~ 296 as 296, - ~~~~~~~~~~~~~~~ 297 as 297, - ~~~~~~~~~~~~~~~ 298 as 298, - ~~~~~~~~~~~~~~~ 299 as 299, - ~~~~~~~~~~~~~~~ 300 as 300, - ~~~~~~~~~~~~~~~ 301 as 301, - ~~~~~~~~~~~~~~~ 302 as 302, - ~~~~~~~~~~~~~~~ 303 as 303, - ~~~~~~~~~~~~~~~ 304 as 304, - ~~~~~~~~~~~~~~~ 305 as 305, - ~~~~~~~~~~~~~~~ 306 as 306, - ~~~~~~~~~~~~~~~ 307 as 307, - ~~~~~~~~~~~~~~~ 308 as 308, - ~~~~~~~~~~~~~~~ 309 as 309, - ~~~~~~~~~~~~~~~ 310 as 310, - ~~~~~~~~~~~~~~~ 311 as 311, - ~~~~~~~~~~~~~~~ 312 as 312, - ~~~~~~~~~~~~~~~ 313 as 313, - ~~~~~~~~~~~~~~~ 314 as 314, - ~~~~~~~~~~~~~~~ 315 as 315, - ~~~~~~~~~~~~~~~ 316 as 316, - ~~~~~~~~~~~~~~~ 317 as 317, - ~~~~~~~~~~~~~~~ 318 as 318, - ~~~~~~~~~~~~~~~ 319 as 319, - ~~~~~~~~~~~~~~~ 320 as 320, - ~~~~~~~~~~~~~~~ 321 as 321, - ~~~~~~~~~~~~~~~ 322 as 322, - ~~~~~~~~~~~~~~~ 323 as 323, - ~~~~~~~~~~~~~~~ 324 as 324, - ~~~~~~~~~~~~~~~ 325 as 325, - ~~~~~~~~~~~~~~~ 326 as 326, - ~~~~~~~~~~~~~~~ 327 as 327, - ~~~~~~~~~~~~~~~ 328 as 328, - ~~~~~~~~~~~~~~~ 329 as 329, - ~~~~~~~~~~~~~~~ 330 as 330, - ~~~~~~~~~~~~~~~ 331 as 331, - ~~~~~~~~~~~~~~~ 332 as 332, - ~~~~~~~~~~~~~~~ 333 as 333, - ~~~~~~~~~~~~~~~ 334 as 334, - ~~~~~~~~~~~~~~~ 335 as 335, - ~~~~~~~~~~~~~~~ 336 as 336, - ~~~~~~~~~~~~~~~ 337 as 337, - ~~~~~~~~~~~~~~~ 338 as 338, - ~~~~~~~~~~~~~~~ 339 as 339, - ~~~~~~~~~~~~~~~ 340 as 340, - ~~~~~~~~~~~~~~~ 341 as 341, - ~~~~~~~~~~~~~~~ 342 as 342, - ~~~~~~~~~~~~~~~ 343 as 343, - ~~~~~~~~~~~~~~~ 344 as 344, - ~~~~~~~~~~~~~~~ 345 as 345, - ~~~~~~~~~~~~~~~ 346 as 346, - ~~~~~~~~~~~~~~~ 347 as 347, - ~~~~~~~~~~~~~~~ 348 as 348, - ~~~~~~~~~~~~~~~ 349 as 349, - ~~~~~~~~~~~~~~~ 350 as 350, - ~~~~~~~~~~~~~~~ 351 as 351, - ~~~~~~~~~~~~~~~ 352 as 352, - ~~~~~~~~~~~~~~~ 353 as 353, - ~~~~~~~~~~~~~~~ 354 as 354, - ~~~~~~~~~~~~~~~ 355 as 355, - ~~~~~~~~~~~~~~~ 356 as 356, - ~~~~~~~~~~~~~~~ 357 as 357, - ~~~~~~~~~~~~~~~ 358 as 358, - ~~~~~~~~~~~~~~~ 359 as 359, - ~~~~~~~~~~~~~~~ 360 as 360, - ~~~~~~~~~~~~~~~ 361 as 361, - ~~~~~~~~~~~~~~~ 362 as 362, - ~~~~~~~~~~~~~~~ 363 as 363, - ~~~~~~~~~~~~~~~ 364 as 364, - ~~~~~~~~~~~~~~~ 365 as 365, - ~~~~~~~~~~~~~~~ 366 as 366, - ~~~~~~~~~~~~~~~ 367 as 367, - ~~~~~~~~~~~~~~~ 368 as 368, - ~~~~~~~~~~~~~~~ 369 as 369, - ~~~~~~~~~~~~~~~ 370 as 370, - ~~~~~~~~~~~~~~~ 371 as 371, - ~~~~~~~~~~~~~~~ 372 as 372, - ~~~~~~~~~~~~~~~ 373 as 373, - ~~~~~~~~~~~~~~~ 374 as 374, - ~~~~~~~~~~~~~~~ 375 as 375, - ~~~~~~~~~~~~~~~ 376 as 376, - ~~~~~~~~~~~~~~~ 377 as 377, - ~~~~~~~~~~~~~~~ 378 as 378, - ~~~~~~~~~~~~~~~ 379 as 379, - ~~~~~~~~~~~~~~~ 380 as 380, - ~~~~~~~~~~~~~~~ 381 as 381, - ~~~~~~~~~~~~~~~ 382 as 382, - ~~~~~~~~~~~~~~~ 383 as 383, - ~~~~~~~~~~~~~~~ 384 as 384, - ~~~~~~~~~~~~~~~ 385 as 385, - ~~~~~~~~~~~~~~~ 386 as 386, - ~~~~~~~~~~~~~~~ 387 as 387, - ~~~~~~~~~~~~~~~ 388 as 388, - ~~~~~~~~~~~~~~~ 389 as 389, - ~~~~~~~~~~~~~~~ 390 as 390, - ~~~~~~~~~~~~~~~ 391 as 391, - ~~~~~~~~~~~~~~~ 392 as 392, - ~~~~~~~~~~~~~~~ 393 as 393, - ~~~~~~~~~~~~~~~ 394 as 394, - ~~~~~~~~~~~~~~~ 395 as 395, - ~~~~~~~~~~~~~~~ 396 as 396, - ~~~~~~~~~~~~~~~ 397 as 397, - ~~~~~~~~~~~~~~~ 398 as 398, - ~~~~~~~~~~~~~~~ 399 as 399, - ~~~~~~~~~~~~~~~ 400 as 400, - ~~~~~~~~~~~~~~~ 401 as 401, - ~~~~~~~~~~~~~~~ 402 as 402, - ~~~~~~~~~~~~~~~ 403 as 403, - ~~~~~~~~~~~~~~~ 404 as 404, - ~~~~~~~~~~~~~~~ 405 as 405, - ~~~~~~~~~~~~~~~ 406 as 406, - ~~~~~~~~~~~~~~~ 407 as 407, - ~~~~~~~~~~~~~~~ 408 as 408, - ~~~~~~~~~~~~~~~ 409 as 409, - ~~~~~~~~~~~~~~~ 410 as 410, - ~~~~~~~~~~~~~~~ 411 as 411, - ~~~~~~~~~~~~~~~ 412 as 412, - ~~~~~~~~~~~~~~~ 413 as 413, - ~~~~~~~~~~~~~~~ 414 as 414, - ~~~~~~~~~~~~~~~ 415 as 415, - ~~~~~~~~~~~~~~~ 416 as 416, - ~~~~~~~~~~~~~~~ 417 as 417, - ~~~~~~~~~~~~~~~ 418 as 418, - ~~~~~~~~~~~~~~~ 419 as 419, - ~~~~~~~~~~~~~~~ 420 as 420, - ~~~~~~~~~~~~~~~ 421 as 421, - ~~~~~~~~~~~~~~~ 422 as 422, - ~~~~~~~~~~~~~~~ 423 as 423, - ~~~~~~~~~~~~~~~ 424 as 424, - ~~~~~~~~~~~~~~~ 425 as 425, - ~~~~~~~~~~~~~~~ 426 as 426, - ~~~~~~~~~~~~~~~ 427 as 427, - ~~~~~~~~~~~~~~~ 428 as 428, - ~~~~~~~~~~~~~~~ 429 as 429, - ~~~~~~~~~~~~~~~ 430 as 430, - ~~~~~~~~~~~~~~~ 431 as 431, - ~~~~~~~~~~~~~~~ 432 as 432, - ~~~~~~~~~~~~~~~ 433 as 433, - ~~~~~~~~~~~~~~~ 434 as 434, - ~~~~~~~~~~~~~~~ 435 as 435, - ~~~~~~~~~~~~~~~ 436 as 436, - ~~~~~~~~~~~~~~~ 437 as 437, - ~~~~~~~~~~~~~~~ 438 as 438, - ~~~~~~~~~~~~~~~ 439 as 439, - ~~~~~~~~~~~~~~~ 440 as 440, - ~~~~~~~~~~~~~~~ 441 as 441, - ~~~~~~~~~~~~~~~ 442 as 442, - ~~~~~~~~~~~~~~~ 443 as 443, - ~~~~~~~~~~~~~~~ 444 as 444, - ~~~~~~~~~~~~~~~ 445 as 445, - ~~~~~~~~~~~~~~~ 446 as 446, - ~~~~~~~~~~~~~~~ 447 as 447, - ~~~~~~~~~~~~~~~ 448 as 448, - ~~~~~~~~~~~~~~~ 449 as 449, - ~~~~~~~~~~~~~~~ 450 as 450, - ~~~~~~~~~~~~~~~ 451 as 451, - ~~~~~~~~~~~~~~~ 452 as 452, - ~~~~~~~~~~~~~~~ 453 as 453, - ~~~~~~~~~~~~~~~ 454 as 454, - ~~~~~~~~~~~~~~~ 455 as 455, - ~~~~~~~~~~~~~~~ 456 as 456, - ~~~~~~~~~~~~~~~ 457 as 457, - ~~~~~~~~~~~~~~~ 458 as 458, - ~~~~~~~~~~~~~~~ 459 as 459, - ~~~~~~~~~~~~~~~ 460 as 460, - ~~~~~~~~~~~~~~~ 461 as 461, - ~~~~~~~~~~~~~~~ 462 as 462, - ~~~~~~~~~~~~~~~ 463 as 463, - ~~~~~~~~~~~~~~~ 464 as 464, - ~~~~~~~~~~~~~~~ 465 as 465, - ~~~~~~~~~~~~~~~ 466 as 466, - ~~~~~~~~~~~~~~~ 467 as 467, - ~~~~~~~~~~~~~~~ 468 as 468, - ~~~~~~~~~~~~~~~ 469 as 469, - ~~~~~~~~~~~~~~~ 470 as 470, - ~~~~~~~~~~~~~~~ 471 as 471, - ~~~~~~~~~~~~~~~ 472 as 472, - ~~~~~~~~~~~~~~~ 473 as 473, - ~~~~~~~~~~~~~~~ 474 as 474, - ~~~~~~~~~~~~~~~ 475 as 475, - ~~~~~~~~~~~~~~~ 476 as 476, - ~~~~~~~~~~~~~~~ 477 as 477, - ~~~~~~~~~~~~~~~ 478 as 478, - ~~~~~~~~~~~~~~~ 479 as 479, - ~~~~~~~~~~~~~~~ 480 as 480, - ~~~~~~~~~~~~~~~ 481 as 481, - ~~~~~~~~~~~~~~~ 482 as 482, - ~~~~~~~~~~~~~~~ 483 as 483, - ~~~~~~~~~~~~~~~ 484 as 484, - ~~~~~~~~~~~~~~~ 485 as 485, - ~~~~~~~~~~~~~~~ 486 as 486, - ~~~~~~~~~~~~~~~ 487 as 487, - ~~~~~~~~~~~~~~~ 488 as 488, - ~~~~~~~~~~~~~~~ 489 as 489, - ~~~~~~~~~~~~~~~ 490 as 490, - ~~~~~~~~~~~~~~~ 491 as 491, - ~~~~~~~~~~~~~~~ 492 as 492, - ~~~~~~~~~~~~~~~ 493 as 493, - ~~~~~~~~~~~~~~~ 494 as 494, - ~~~~~~~~~~~~~~~ 495 as 495, - ~~~~~~~~~~~~~~~ 496 as 496, - ~~~~~~~~~~~~~~~ 497 as 497, - ~~~~~~~~~~~~~~~ 498 as 498, - ~~~~~~~~~~~~~~~ 499 as 499, - ~~~~~~~~~~~~~~~ 500 as 500, - ~~~~~~~~~~~~~~~ 501 as 501, - ~~~~~~~~~~~~~~~ 502 as 502, - ~~~~~~~~~~~~~~~ 503 as 503, - ~~~~~~~~~~~~~~~ 504 as 504, - ~~~~~~~~~~~~~~~ 505 as 505, - ~~~~~~~~~~~~~~~ 506 as 506, - ~~~~~~~~~~~~~~~ 507 as 507, - ~~~~~~~~~~~~~~~ 508 as 508, - ~~~~~~~~~~~~~~~ 509 as 509, - ~~~~~~~~~~~~~~~ 510 as 510, - ~~~~~~~~~~~~~~~ 511 as 511, - ~~~~~~~~~~~~~~~ 512 as 512, - ~~~~~~~~~~~~~~~ 513 as 513, - ~~~~~~~~~~~~~~~ 514 as 514, - ~~~~~~~~~~~~~~~ 515 as 515, - ~~~~~~~~~~~~~~~ 516 as 516, - ~~~~~~~~~~~~~~~ 517 as 517, - ~~~~~~~~~~~~~~~ 518 as 518, - ~~~~~~~~~~~~~~~ 519 as 519, - ~~~~~~~~~~~~~~~ 520 as 520, - ~~~~~~~~~~~~~~~ 521 as 521, - ~~~~~~~~~~~~~~~ 522 as 522, - ~~~~~~~~~~~~~~~ 523 as 523, - ~~~~~~~~~~~~~~~ 524 as 524, - ~~~~~~~~~~~~~~~ 525 as 525, - ~~~~~~~~~~~~~~~ 526 as 526, - ~~~~~~~~~~~~~~~ 527 as 527, - ~~~~~~~~~~~~~~~ 528 as 528, - ~~~~~~~~~~~~~~~ 529 as 529, - ~~~~~~~~~~~~~~~ 530 as 530, - ~~~~~~~~~~~~~~~ 531 as 531, - ~~~~~~~~~~~~~~~ 532 as 532, - ~~~~~~~~~~~~~~~ 533 as 533, - ~~~~~~~~~~~~~~~ 534 as 534, - ~~~~~~~~~~~~~~~ 535 as 535, - ~~~~~~~~~~~~~~~ 536 as 536, - ~~~~~~~~~~~~~~~ 537 as 537, - ~~~~~~~~~~~~~~~ 538 as 538, - ~~~~~~~~~~~~~~~ 539 as 539, - ~~~~~~~~~~~~~~~ 540 as 540, - ~~~~~~~~~~~~~~~ 541 as 541, - ~~~~~~~~~~~~~~~ 542 as 542, - ~~~~~~~~~~~~~~~ 543 as 543, - ~~~~~~~~~~~~~~~ 544 as 544, - ~~~~~~~~~~~~~~~ 545 as 545, - ~~~~~~~~~~~~~~~ 546 as 546, - ~~~~~~~~~~~~~~~ 547 as 547, - ~~~~~~~~~~~~~~~ 548 as 548, - ~~~~~~~~~~~~~~~ 549 as 549, - ~~~~~~~~~~~~~~~ 550 as 550, - ~~~~~~~~~~~~~~~ 551 as 551, - ~~~~~~~~~~~~~~~ 552 as 552, - ~~~~~~~~~~~~~~~ 553 as 553, - ~~~~~~~~~~~~~~~ 554 as 554, - ~~~~~~~~~~~~~~~ 555 as 555, - ~~~~~~~~~~~~~~~ 556 as 556, - ~~~~~~~~~~~~~~~ 557 as 557, - ~~~~~~~~~~~~~~~ 558 as 558, - ~~~~~~~~~~~~~~~ 559 as 559, - ~~~~~~~~~~~~~~~ 560 as 560, - ~~~~~~~~~~~~~~~ 561 as 561, - ~~~~~~~~~~~~~~~ 562 as 562, - ~~~~~~~~~~~~~~~ 563 as 563, - ~~~~~~~~~~~~~~~ 564 as 564, - ~~~~~~~~~~~~~~~ 565 as 565, - ~~~~~~~~~~~~~~~ 566 as 566, - ~~~~~~~~~~~~~~~ 567 as 567, - ~~~~~~~~~~~~~~~ 568 as 568, - ~~~~~~~~~~~~~~~ 569 as 569, - ~~~~~~~~~~~~~~~ 570 as 570, - ~~~~~~~~~~~~~~~ 571 as 571, - ~~~~~~~~~~~~~~~ 572 as 572, - ~~~~~~~~~~~~~~~ 573 as 573, - ~~~~~~~~~~~~~~~ 574 as 574, - ~~~~~~~~~~~~~~~ 575 as 575, - ~~~~~~~~~~~~~~~ 576 as 576, - ~~~~~~~~~~~~~~~ 577 as 577, - ~~~~~~~~~~~~~~~ 578 as 578, - ~~~~~~~~~~~~~~~ 579 as 579, - ~~~~~~~~~~~~~~~ 580 as 580, - ~~~~~~~~~~~~~~~ 581 as 581, - ~~~~~~~~~~~~~~~ 582 as 582, - ~~~~~~~~~~~~~~~ 583 as 583, - ~~~~~~~~~~~~~~~ 584 as 584, - ~~~~~~~~~~~~~~~ 585 as 585, - ~~~~~~~~~~~~~~~ 586 as 586, - ~~~~~~~~~~~~~~~ 587 as 587, - ~~~~~~~~~~~~~~~ 588 as 588, - ~~~~~~~~~~~~~~~ 589 as 589, - ~~~~~~~~~~~~~~~ 590 as 590, - ~~~~~~~~~~~~~~~ 591 as 591, - ~~~~~~~~~~~~~~~ 592 as 592, - ~~~~~~~~~~~~~~~ 593 as 593, - ~~~~~~~~~~~~~~~ 594 as 594, - ~~~~~~~~~~~~~~~ 595 as 595, - ~~~~~~~~~~~~~~~ 596 as 596, - ~~~~~~~~~~~~~~~ 597 as 597, - ~~~~~~~~~~~~~~~ 598 as 598, - ~~~~~~~~~~~~~~~ 599 as 599, - ~~~~~~~~~~~~~~~ 600 as 600, - ~~~~~~~~~~~~~~~ 601 as 601, - ~~~~~~~~~~~~~~~ 602 as 602, - ~~~~~~~~~~~~~~~ 603 as 603, - ~~~~~~~~~~~~~~~ 604 as 604, - ~~~~~~~~~~~~~~~ 605 as 605, - ~~~~~~~~~~~~~~~ 606 as 606, - ~~~~~~~~~~~~~~~ 607 as 607, - ~~~~~~~~~~~~~~~ 608 as 608, - ~~~~~~~~~~~~~~~ 609 as 609, - ~~~~~~~~~~~~~~~ 610 as 610, - ~~~~~~~~~~~~~~~ 611 as 611, - ~~~~~~~~~~~~~~~ 612 as 612, - ~~~~~~~~~~~~~~~ 613 as 613, - ~~~~~~~~~~~~~~~ 614 as 614, - ~~~~~~~~~~~~~~~ 615 as 615, - ~~~~~~~~~~~~~~~ 616 as 616, - ~~~~~~~~~~~~~~~ 617 as 617, - ~~~~~~~~~~~~~~~ 618 as 618, - ~~~~~~~~~~~~~~~ 619 as 619, - ~~~~~~~~~~~~~~~ 620 as 620, - ~~~~~~~~~~~~~~~ 621 as 621, - ~~~~~~~~~~~~~~~ 622 as 622, - ~~~~~~~~~~~~~~~ 623 as 623, - ~~~~~~~~~~~~~~~ 624 as 624, - ~~~~~~~~~~~~~~~ 625 as 625, - ~~~~~~~~~~~~~~~ 626 as 626, - ~~~~~~~~~~~~~~~ 627 as 627, - ~~~~~~~~~~~~~~~ 628 as 628, - ~~~~~~~~~~~~~~~ 629 as 629, - ~~~~~~~~~~~~~~~ 630 as 630, - ~~~~~~~~~~~~~~~ 631 as 631, - ~~~~~~~~~~~~~~~ 632 as 632, - ~~~~~~~~~~~~~~~ 633 as 633, - ~~~~~~~~~~~~~~~ 634 as 634, - ~~~~~~~~~~~~~~~ 635 as 635, - ~~~~~~~~~~~~~~~ 636 as 636, - ~~~~~~~~~~~~~~~ 637 as 637, - ~~~~~~~~~~~~~~~ 638 as 638, - ~~~~~~~~~~~~~~~ 639 as 639, - ~~~~~~~~~~~~~~~ 640 as 640, - ~~~~~~~~~~~~~~~ 641 as 641, - ~~~~~~~~~~~~~~~ 642 as 642, - ~~~~~~~~~~~~~~~ 643 as 643, - ~~~~~~~~~~~~~~~ 644 as 644, - ~~~~~~~~~~~~~~~ 645 as 645, - ~~~~~~~~~~~~~~~ 646 as 646, - ~~~~~~~~~~~~~~~ 647 as 647, - ~~~~~~~~~~~~~~~ 648 as 648, - ~~~~~~~~~~~~~~~ 649 as 649, - ~~~~~~~~~~~~~~~ 650 as 650, - ~~~~~~~~~~~~~~~ 651 as 651, - ~~~~~~~~~~~~~~~ 652 as 652, - ~~~~~~~~~~~~~~~ 653 as 653, - ~~~~~~~~~~~~~~~ 654 as 654, - ~~~~~~~~~~~~~~~ 655 as 655, - ~~~~~~~~~~~~~~~ 656 as 656, - ~~~~~~~~~~~~~~~ 657 as 657, - ~~~~~~~~~~~~~~~ 658 as 658, - ~~~~~~~~~~~~~~~ 659 as 659, - ~~~~~~~~~~~~~~~ 660 as 660, - ~~~~~~~~~~~~~~~ 661 as 661, - ~~~~~~~~~~~~~~~ 662 as 662, - ~~~~~~~~~~~~~~~ 663 as 663, - ~~~~~~~~~~~~~~~ 664 as 664, - ~~~~~~~~~~~~~~~ 665 as 665, - ~~~~~~~~~~~~~~~ 666 as 666, - ~~~~~~~~~~~~~~~ 667 as 667, - ~~~~~~~~~~~~~~~ 668 as 668, - ~~~~~~~~~~~~~~~ 669 as 669, - ~~~~~~~~~~~~~~~ 670 as 670, - ~~~~~~~~~~~~~~~ 671 as 671, - ~~~~~~~~~~~~~~~ 672 as 672, - ~~~~~~~~~~~~~~~ 673 as 673, - ~~~~~~~~~~~~~~~ 674 as 674, - ~~~~~~~~~~~~~~~ 675 as 675, - ~~~~~~~~~~~~~~~ 676 as 676, - ~~~~~~~~~~~~~~~ 677 as 677, - ~~~~~~~~~~~~~~~ 678 as 678, - ~~~~~~~~~~~~~~~ 679 as 679, - ~~~~~~~~~~~~~~~ 680 as 680, - ~~~~~~~~~~~~~~~ 681 as 681, - ~~~~~~~~~~~~~~~ 682 as 682, - ~~~~~~~~~~~~~~~ 683 as 683, - ~~~~~~~~~~~~~~~ 684 as 684, - ~~~~~~~~~~~~~~~ 685 as 685, - ~~~~~~~~~~~~~~~ 686 as 686, - ~~~~~~~~~~~~~~~ 687 as 687, - ~~~~~~~~~~~~~~~ 688 as 688, - ~~~~~~~~~~~~~~~ 689 as 689, - ~~~~~~~~~~~~~~~ 690 as 690, - ~~~~~~~~~~~~~~~ 691 as 691, - ~~~~~~~~~~~~~~~ 692 as 692, - ~~~~~~~~~~~~~~~ 693 as 693, - ~~~~~~~~~~~~~~~ 694 as 694, - ~~~~~~~~~~~~~~~ 695 as 695, - ~~~~~~~~~~~~~~~ 696 as 696, - ~~~~~~~~~~~~~~~ 697 as 697, - ~~~~~~~~~~~~~~~ 698 as 698, - ~~~~~~~~~~~~~~~ 699 as 699, - ~~~~~~~~~~~~~~~ 700 as 700, - ~~~~~~~~~~~~~~~ 701 as 701, - ~~~~~~~~~~~~~~~ 702 as 702, - ~~~~~~~~~~~~~~~ 703 as 703, - ~~~~~~~~~~~~~~~ 704 as 704, - ~~~~~~~~~~~~~~~ 705 as 705, - ~~~~~~~~~~~~~~~ 706 as 706, - ~~~~~~~~~~~~~~~ 707 as 707, - ~~~~~~~~~~~~~~~ 708 as 708, - ~~~~~~~~~~~~~~~ 709 as 709, - ~~~~~~~~~~~~~~~ 710 as 710, - ~~~~~~~~~~~~~~~ 711 as 711, - ~~~~~~~~~~~~~~~ 712 as 712, - ~~~~~~~~~~~~~~~ 713 as 713, - ~~~~~~~~~~~~~~~ 714 as 714, - ~~~~~~~~~~~~~~~ 715 as 715, - ~~~~~~~~~~~~~~~ 716 as 716, - ~~~~~~~~~~~~~~~ 717 as 717, - ~~~~~~~~~~~~~~~ 718 as 718, - ~~~~~~~~~~~~~~~ 719 as 719, - ~~~~~~~~~~~~~~~ 720 as 720, - ~~~~~~~~~~~~~~~ 721 as 721, - ~~~~~~~~~~~~~~~ 722 as 722, - ~~~~~~~~~~~~~~~ 723 as 723, - ~~~~~~~~~~~~~~~ 724 as 724, - ~~~~~~~~~~~~~~~ 725 as 725, - ~~~~~~~~~~~~~~~ 726 as 726, - ~~~~~~~~~~~~~~~ 727 as 727, - ~~~~~~~~~~~~~~~ 728 as 728, - ~~~~~~~~~~~~~~~ 729 as 729, - ~~~~~~~~~~~~~~~ 730 as 730, - ~~~~~~~~~~~~~~~ 731 as 731, - ~~~~~~~~~~~~~~~ 732 as 732, - ~~~~~~~~~~~~~~~ 733 as 733, - ~~~~~~~~~~~~~~~ 734 as 734, - ~~~~~~~~~~~~~~~ 735 as 735, - ~~~~~~~~~~~~~~~ 736 as 736, - ~~~~~~~~~~~~~~~ 737 as 737, - ~~~~~~~~~~~~~~~ 738 as 738, - ~~~~~~~~~~~~~~~ 739 as 739, - ~~~~~~~~~~~~~~~ 740 as 740, - ~~~~~~~~~~~~~~~ 741 as 741, - ~~~~~~~~~~~~~~~ 742 as 742, - ~~~~~~~~~~~~~~~ 743 as 743, - ~~~~~~~~~~~~~~~ 744 as 744, - ~~~~~~~~~~~~~~~ 745 as 745, - ~~~~~~~~~~~~~~~ 746 as 746, - ~~~~~~~~~~~~~~~ 747 as 747, - ~~~~~~~~~~~~~~~ 748 as 748, - ~~~~~~~~~~~~~~~ 749 as 749, - ~~~~~~~~~~~~~~~ 750 as 750, - ~~~~~~~~~~~~~~~ 751 as 751, - ~~~~~~~~~~~~~~~ 752 as 752, - ~~~~~~~~~~~~~~~ 753 as 753, - ~~~~~~~~~~~~~~~ 754 as 754, - ~~~~~~~~~~~~~~~ 755 as 755, - ~~~~~~~~~~~~~~~ 756 as 756, - ~~~~~~~~~~~~~~~ 757 as 757, - ~~~~~~~~~~~~~~~ 758 as 758, - ~~~~~~~~~~~~~~~ 759 as 759, - ~~~~~~~~~~~~~~~ 760 as 760, - ~~~~~~~~~~~~~~~ 761 as 761, - ~~~~~~~~~~~~~~~ 762 as 762, - ~~~~~~~~~~~~~~~ 763 as 763, - ~~~~~~~~~~~~~~~ 764 as 764, - ~~~~~~~~~~~~~~~ 765 as 765, - ~~~~~~~~~~~~~~~ 766 as 766, - ~~~~~~~~~~~~~~~ 767 as 767, - ~~~~~~~~~~~~~~~ 768 as 768, - ~~~~~~~~~~~~~~~ 769 as 769, - ~~~~~~~~~~~~~~~ 770 as 770, - ~~~~~~~~~~~~~~~ 771 as 771, - ~~~~~~~~~~~~~~~ 772 as 772, - ~~~~~~~~~~~~~~~ 773 as 773, - ~~~~~~~~~~~~~~~ 774 as 774, - ~~~~~~~~~~~~~~~ 775 as 775, - ~~~~~~~~~~~~~~~ 776 as 776, - ~~~~~~~~~~~~~~~ 777 as 777, - ~~~~~~~~~~~~~~~ 778 as 778, - ~~~~~~~~~~~~~~~ 779 as 779, - ~~~~~~~~~~~~~~~ 780 as 780, - ~~~~~~~~~~~~~~~ 781 as 781, - ~~~~~~~~~~~~~~~ 782 as 782, - ~~~~~~~~~~~~~~~ 783 as 783, - ~~~~~~~~~~~~~~~ 784 as 784, - ~~~~~~~~~~~~~~~ 785 as 785, - ~~~~~~~~~~~~~~~ 786 as 786, - ~~~~~~~~~~~~~~~ 787 as 787, - ~~~~~~~~~~~~~~~ 788 as 788, - ~~~~~~~~~~~~~~~ 789 as 789, - ~~~~~~~~~~~~~~~ 790 as 790, - ~~~~~~~~~~~~~~~ 791 as 791, - ~~~~~~~~~~~~~~~ 792 as 792, - ~~~~~~~~~~~~~~~ 793 as 793, - ~~~~~~~~~~~~~~~ 794 as 794, - ~~~~~~~~~~~~~~~ 795 as 795, - ~~~~~~~~~~~~~~~ 796 as 796, - ~~~~~~~~~~~~~~~ 797 as 797, - ~~~~~~~~~~~~~~~ 798 as 798, - ~~~~~~~~~~~~~~~ 799 as 799, - ~~~~~~~~~~~~~~~ 800 as 800, - ~~~~~~~~~~~~~~~ 801 as 801, - ~~~~~~~~~~~~~~~ 802 as 802, - ~~~~~~~~~~~~~~~ 803 as 803, - ~~~~~~~~~~~~~~~ 804 as 804, - ~~~~~~~~~~~~~~~ 805 as 805, - ~~~~~~~~~~~~~~~ 806 as 806, - ~~~~~~~~~~~~~~~ 807 as 807, - ~~~~~~~~~~~~~~~ 808 as 808, - ~~~~~~~~~~~~~~~ 809 as 809, - ~~~~~~~~~~~~~~~ 810 as 810, - ~~~~~~~~~~~~~~~ 811 as 811, - ~~~~~~~~~~~~~~~ 812 as 812, - ~~~~~~~~~~~~~~~ 813 as 813, - ~~~~~~~~~~~~~~~ 814 as 814, - ~~~~~~~~~~~~~~~ 815 as 815, - ~~~~~~~~~~~~~~~ 816 as 816, - ~~~~~~~~~~~~~~~ 817 as 817, - ~~~~~~~~~~~~~~~ 818 as 818, - ~~~~~~~~~~~~~~~ 819 as 819, - ~~~~~~~~~~~~~~~ 820 as 820, - ~~~~~~~~~~~~~~~ 821 as 821, - ~~~~~~~~~~~~~~~ 822 as 822, - ~~~~~~~~~~~~~~~ 823 as 823, - ~~~~~~~~~~~~~~~ 824 as 824, - ~~~~~~~~~~~~~~~ 825 as 825, - ~~~~~~~~~~~~~~~ 826 as 826, - ~~~~~~~~~~~~~~~ 827 as 827, - ~~~~~~~~~~~~~~~ 828 as 828, - ~~~~~~~~~~~~~~~ 829 as 829, - ~~~~~~~~~~~~~~~ 830 as 830, - ~~~~~~~~~~~~~~~ 831 as 831, - ~~~~~~~~~~~~~~~ 832 as 832, - ~~~~~~~~~~~~~~~ 833 as 833, - ~~~~~~~~~~~~~~~ 834 as 834, - ~~~~~~~~~~~~~~~ 835 as 835, - ~~~~~~~~~~~~~~~ 836 as 836, - ~~~~~~~~~~~~~~~ 837 as 837, - ~~~~~~~~~~~~~~~ 838 as 838, - ~~~~~~~~~~~~~~~ 839 as 839, - ~~~~~~~~~~~~~~~ 840 as 840, - ~~~~~~~~~~~~~~~ 841 as 841, - ~~~~~~~~~~~~~~~ 842 as 842, - ~~~~~~~~~~~~~~~ 843 as 843, - ~~~~~~~~~~~~~~~ 844 as 844, - ~~~~~~~~~~~~~~~ 845 as 845, - ~~~~~~~~~~~~~~~ 846 as 846, - ~~~~~~~~~~~~~~~ 847 as 847, - ~~~~~~~~~~~~~~~ 848 as 848, - ~~~~~~~~~~~~~~~ 849 as 849, - ~~~~~~~~~~~~~~~ 850 as 850, - ~~~~~~~~~~~~~~~ 851 as 851, - ~~~~~~~~~~~~~~~ 852 as 852, - ~~~~~~~~~~~~~~~ 853 as 853, - ~~~~~~~~~~~~~~~ 854 as 854, - ~~~~~~~~~~~~~~~ 855 as 855, - ~~~~~~~~~~~~~~~ 856 as 856, - ~~~~~~~~~~~~~~~ 857 as 857, - ~~~~~~~~~~~~~~~ 858 as 858, - ~~~~~~~~~~~~~~~ 859 as 859, - ~~~~~~~~~~~~~~~ 860 as 860, - ~~~~~~~~~~~~~~~ 861 as 861, - ~~~~~~~~~~~~~~~ 862 as 862, - ~~~~~~~~~~~~~~~ 863 as 863, - ~~~~~~~~~~~~~~~ 864 as 864, - ~~~~~~~~~~~~~~~ 865 as 865, - ~~~~~~~~~~~~~~~ 866 as 866, - ~~~~~~~~~~~~~~~ 867 as 867, - ~~~~~~~~~~~~~~~ 868 as 868, - ~~~~~~~~~~~~~~~ 869 as 869, - ~~~~~~~~~~~~~~~ 870 as 870, - ~~~~~~~~~~~~~~~ 871 as 871, - ~~~~~~~~~~~~~~~ 872 as 872, - ~~~~~~~~~~~~~~~ 873 as 873, - ~~~~~~~~~~~~~~~ 874 as 874, - ~~~~~~~~~~~~~~~ 875 as 875, - ~~~~~~~~~~~~~~~ 876 as 876, - ~~~~~~~~~~~~~~~ 877 as 877, - ~~~~~~~~~~~~~~~ 878 as 878, - ~~~~~~~~~~~~~~~ 879 as 879, - ~~~~~~~~~~~~~~~ 880 as 880, - ~~~~~~~~~~~~~~~ 881 as 881, - ~~~~~~~~~~~~~~~ 882 as 882, - ~~~~~~~~~~~~~~~ 883 as 883, - ~~~~~~~~~~~~~~~ 884 as 884, - ~~~~~~~~~~~~~~~ 885 as 885, - ~~~~~~~~~~~~~~~ 886 as 886, - ~~~~~~~~~~~~~~~ 887 as 887, - ~~~~~~~~~~~~~~~ 888 as 888, - ~~~~~~~~~~~~~~~ 889 as 889, - ~~~~~~~~~~~~~~~ 890 as 890, - ~~~~~~~~~~~~~~~ 891 as 891, - ~~~~~~~~~~~~~~~ 892 as 892, - ~~~~~~~~~~~~~~~ 893 as 893, - ~~~~~~~~~~~~~~~ 894 as 894, - ~~~~~~~~~~~~~~~ 895 as 895, - ~~~~~~~~~~~~~~~ 896 as 896, - ~~~~~~~~~~~~~~~ 897 as 897, - ~~~~~~~~~~~~~~~ 898 as 898, - ~~~~~~~~~~~~~~~ 899 as 899, - ~~~~~~~~~~~~~~~ 900 as 900, - ~~~~~~~~~~~~~~~ 901 as 901, - ~~~~~~~~~~~~~~~ 902 as 902, - ~~~~~~~~~~~~~~~ 903 as 903, - ~~~~~~~~~~~~~~~ 904 as 904, - ~~~~~~~~~~~~~~~ 905 as 905, - ~~~~~~~~~~~~~~~ 906 as 906, - ~~~~~~~~~~~~~~~ 907 as 907, - ~~~~~~~~~~~~~~~ 908 as 908, - ~~~~~~~~~~~~~~~ 909 as 909, - ~~~~~~~~~~~~~~~ 910 as 910, - ~~~~~~~~~~~~~~~ 911 as 911, - ~~~~~~~~~~~~~~~ 912 as 912, - ~~~~~~~~~~~~~~~ 913 as 913, - ~~~~~~~~~~~~~~~ 914 as 914, - ~~~~~~~~~~~~~~~ 915 as 915, - ~~~~~~~~~~~~~~~ 916 as 916, - ~~~~~~~~~~~~~~~ 917 as 917, - ~~~~~~~~~~~~~~~ 918 as 918, - ~~~~~~~~~~~~~~~ 919 as 919, - ~~~~~~~~~~~~~~~ 920 as 920, - ~~~~~~~~~~~~~~~ 921 as 921, - ~~~~~~~~~~~~~~~ 922 as 922, - ~~~~~~~~~~~~~~~ 923 as 923, - ~~~~~~~~~~~~~~~ 924 as 924, - ~~~~~~~~~~~~~~~ 925 as 925, - ~~~~~~~~~~~~~~~ 926 as 926, - ~~~~~~~~~~~~~~~ 927 as 927, - ~~~~~~~~~~~~~~~ 928 as 928, - ~~~~~~~~~~~~~~~ 929 as 929, - ~~~~~~~~~~~~~~~ 930 as 930, - ~~~~~~~~~~~~~~~ 931 as 931, - ~~~~~~~~~~~~~~~ 932 as 932, - ~~~~~~~~~~~~~~~ 933 as 933, - ~~~~~~~~~~~~~~~ 934 as 934, - ~~~~~~~~~~~~~~~ 935 as 935, - ~~~~~~~~~~~~~~~ 936 as 936, - ~~~~~~~~~~~~~~~ 937 as 937, - ~~~~~~~~~~~~~~~ 938 as 938, - ~~~~~~~~~~~~~~~ 939 as 939, - ~~~~~~~~~~~~~~~ 940 as 940, - ~~~~~~~~~~~~~~~ 941 as 941, - ~~~~~~~~~~~~~~~ 942 as 942, - ~~~~~~~~~~~~~~~ 943 as 943, - ~~~~~~~~~~~~~~~ 944 as 944, - ~~~~~~~~~~~~~~~ 945 as 945, - ~~~~~~~~~~~~~~~ 946 as 946, - ~~~~~~~~~~~~~~~ 947 as 947, - ~~~~~~~~~~~~~~~ 948 as 948, - ~~~~~~~~~~~~~~~ 949 as 949, - ~~~~~~~~~~~~~~~ 950 as 950, - ~~~~~~~~~~~~~~~ 951 as 951, - ~~~~~~~~~~~~~~~ 952 as 952, - ~~~~~~~~~~~~~~~ 953 as 953, - ~~~~~~~~~~~~~~~ 954 as 954, - ~~~~~~~~~~~~~~~ 955 as 955, - ~~~~~~~~~~~~~~~ 956 as 956, - ~~~~~~~~~~~~~~~ 957 as 957, - ~~~~~~~~~~~~~~~ 958 as 958, - ~~~~~~~~~~~~~~~ 959 as 959, - ~~~~~~~~~~~~~~~ 960 as 960, - ~~~~~~~~~~~~~~~ 961 as 961, - ~~~~~~~~~~~~~~~ 962 as 962, - ~~~~~~~~~~~~~~~ 963 as 963, - ~~~~~~~~~~~~~~~ 964 as 964, - ~~~~~~~~~~~~~~~ 965 as 965, - ~~~~~~~~~~~~~~~ 966 as 966, - ~~~~~~~~~~~~~~~ 967 as 967, - ~~~~~~~~~~~~~~~ 968 as 968, - ~~~~~~~~~~~~~~~ 969 as 969, - ~~~~~~~~~~~~~~~ 970 as 970, - ~~~~~~~~~~~~~~~ 971 as 971, - ~~~~~~~~~~~~~~~ 972 as 972, - ~~~~~~~~~~~~~~~ 973 as 973, - ~~~~~~~~~~~~~~~ 974 as 974, - ~~~~~~~~~~~~~~~ 975 as 975, - ~~~~~~~~~~~~~~~ 976 as 976, - ~~~~~~~~~~~~~~~ 977 as 977, - ~~~~~~~~~~~~~~~ 978 as 978, - ~~~~~~~~~~~~~~~ 979 as 979, - ~~~~~~~~~~~~~~~ 980 as 980, - ~~~~~~~~~~~~~~~ 981 as 981, - ~~~~~~~~~~~~~~~ 982 as 982, - ~~~~~~~~~~~~~~~ 983 as 983, - ~~~~~~~~~~~~~~~ 984 as 984, - ~~~~~~~~~~~~~~~ 985 as 985, - ~~~~~~~~~~~~~~~ 986 as 986, - ~~~~~~~~~~~~~~~ 987 as 987, - ~~~~~~~~~~~~~~~ 988 as 988, - ~~~~~~~~~~~~~~~ 989 as 989, - ~~~~~~~~~~~~~~~ 990 as 990, - ~~~~~~~~~~~~~~~ 991 as 991, - ~~~~~~~~~~~~~~~ 992 as 992, - ~~~~~~~~~~~~~~~ 993 as 993, - ~~~~~~~~~~~~~~~ 994 as 994, - ~~~~~~~~~~~~~~~ 995 as 995, - ~~~~~~~~~~~~~~~ 996 as 996, - ~~~~~~~~~~~~~~~ 997 as 997, - ~~~~~~~~~~~~~~~ 998 as 998, - ~~~~~~~~~~~~~~~ 999 as 999, - ~~~~~~~~~~~~~~~ 1000 as 1000, - ~~~~~~~~~~~~~~~~~ 1001 as 1001, - ~~~~~~~~~~~~~~~~~ 1002 as 1002, - ~~~~~~~~~~~~~~~~~ 1003 as 1003, - ~~~~~~~~~~~~~~~~~ 1004 as 1004, - ~~~~~~~~~~~~~~~~~ 1005 as 1005, - ~~~~~~~~~~~~~~~~~ 1006 as 1006, - ~~~~~~~~~~~~~~~~~ 1007 as 1007, - ~~~~~~~~~~~~~~~~~ 1008 as 1008, - ~~~~~~~~~~~~~~~~~ 1009 as 1009, - ~~~~~~~~~~~~~~~~~ 1010 as 1010, - ~~~~~~~~~~~~~~~~~ 1011 as 1011, - ~~~~~~~~~~~~~~~~~ 1012 as 1012, - ~~~~~~~~~~~~~~~~~ 1013 as 1013, - ~~~~~~~~~~~~~~~~~ 1014 as 1014, - ~~~~~~~~~~~~~~~~~ 1015 as 1015, - ~~~~~~~~~~~~~~~~~ 1016 as 1016, - ~~~~~~~~~~~~~~~~~ 1017 as 1017, - ~~~~~~~~~~~~~~~~~ 1018 as 1018, - ~~~~~~~~~~~~~~~~~ 1019 as 1019, - ~~~~~~~~~~~~~~~~~ 1020 as 1020, - ~~~~~~~~~~~~~~~~~ 1021 as 1021, - ~~~~~~~~~~~~~~~~~ 1022 as 1022, - ~~~~~~~~~~~~~~~~~ 1023 as 1023, - ~~~~~~~~~~~~~~~~~ 1024 as 1024, - ~~~~~~~~~~~~~~~~~ 1025 as 1025, - ~~~~~~~~~~~~~~~~~ 1026 as 1026, - ~~~~~~~~~~~~~~~~~ 1027 as 1027, - ~~~~~~~~~~~~~~~~~ 1028 as 1028, - ~~~~~~~~~~~~~~~~~ 1029 as 1029, - ~~~~~~~~~~~~~~~~~ 1030 as 1030, - ~~~~~~~~~~~~~~~~~ 1031 as 1031, - ~~~~~~~~~~~~~~~~~ 1032 as 1032, - ~~~~~~~~~~~~~~~~~ 1033 as 1033, - ~~~~~~~~~~~~~~~~~ 1034 as 1034, - ~~~~~~~~~~~~~~~~~ 1035 as 1035, - ~~~~~~~~~~~~~~~~~ 1036 as 1036, - ~~~~~~~~~~~~~~~~~ 1037 as 1037, - ~~~~~~~~~~~~~~~~~ 1038 as 1038, - ~~~~~~~~~~~~~~~~~ 1039 as 1039, - ~~~~~~~~~~~~~~~~~ 1040 as 1040, - ~~~~~~~~~~~~~~~~~ 1041 as 1041, - ~~~~~~~~~~~~~~~~~ 1042 as 1042, - ~~~~~~~~~~~~~~~~~ 1043 as 1043, - ~~~~~~~~~~~~~~~~~ 1044 as 1044, - ~~~~~~~~~~~~~~~~~ 1045 as 1045, - ~~~~~~~~~~~~~~~~~ 1046 as 1046, - ~~~~~~~~~~~~~~~~~ 1047 as 1047, - ~~~~~~~~~~~~~~~~~ 1048 as 1048, - ~~~~~~~~~~~~~~~~~ 1049 as 1049, - ~~~~~~~~~~~~~~~~~ 1050 as 1050, - ~~~~~~~~~~~~~~~~~ 1051 as 1051, - ~~~~~~~~~~~~~~~~~ 1052 as 1052, - ~~~~~~~~~~~~~~~~~ 1053 as 1053, - ~~~~~~~~~~~~~~~~~ 1054 as 1054, - ~~~~~~~~~~~~~~~~~ 1055 as 1055, - ~~~~~~~~~~~~~~~~~ 1056 as 1056, - ~~~~~~~~~~~~~~~~~ 1057 as 1057, - ~~~~~~~~~~~~~~~~~ 1058 as 1058, - ~~~~~~~~~~~~~~~~~ 1059 as 1059, - ~~~~~~~~~~~~~~~~~ 1060 as 1060, - ~~~~~~~~~~~~~~~~~ 1061 as 1061, - ~~~~~~~~~~~~~~~~~ 1062 as 1062, - ~~~~~~~~~~~~~~~~~ 1063 as 1063, - ~~~~~~~~~~~~~~~~~ 1064 as 1064, - ~~~~~~~~~~~~~~~~~ 1065 as 1065, - ~~~~~~~~~~~~~~~~~ 1066 as 1066, - ~~~~~~~~~~~~~~~~~ 1067 as 1067, - ~~~~~~~~~~~~~~~~~ 1068 as 1068, - ~~~~~~~~~~~~~~~~~ 1069 as 1069, - ~~~~~~~~~~~~~~~~~ 1070 as 1070, - ~~~~~~~~~~~~~~~~~ 1071 as 1071, - ~~~~~~~~~~~~~~~~~ 1072 as 1072, - ~~~~~~~~~~~~~~~~~ 1073 as 1073, - ~~~~~~~~~~~~~~~~~ 1074 as 1074, - ~~~~~~~~~~~~~~~~~ 1075 as 1075, - ~~~~~~~~~~~~~~~~~ 1076 as 1076, - ~~~~~~~~~~~~~~~~~ 1077 as 1077, - ~~~~~~~~~~~~~~~~~ 1078 as 1078, - ~~~~~~~~~~~~~~~~~ 1079 as 1079, - ~~~~~~~~~~~~~~~~~ 1080 as 1080, - ~~~~~~~~~~~~~~~~~ 1081 as 1081, - ~~~~~~~~~~~~~~~~~ 1082 as 1082, - ~~~~~~~~~~~~~~~~~ 1083 as 1083, - ~~~~~~~~~~~~~~~~~ 1084 as 1084, - ~~~~~~~~~~~~~~~~~ 1085 as 1085, - ~~~~~~~~~~~~~~~~~ 1086 as 1086, - ~~~~~~~~~~~~~~~~~ 1087 as 1087, - ~~~~~~~~~~~~~~~~~ 1088 as 1088, - ~~~~~~~~~~~~~~~~~ 1089 as 1089, - ~~~~~~~~~~~~~~~~~ 1090 as 1090, - ~~~~~~~~~~~~~~~~~ 1091 as 1091, - ~~~~~~~~~~~~~~~~~ 1092 as 1092, - ~~~~~~~~~~~~~~~~~ 1093 as 1093, - ~~~~~~~~~~~~~~~~~ 1094 as 1094, - ~~~~~~~~~~~~~~~~~ 1095 as 1095, - ~~~~~~~~~~~~~~~~~ 1096 as 1096, - ~~~~~~~~~~~~~~~~~ 1097 as 1097, - ~~~~~~~~~~~~~~~~~ 1098 as 1098, - ~~~~~~~~~~~~~~~~~ 1099 as 1099, - ~~~~~~~~~~~~~~~~~ 1100 as 1100, - ~~~~~~~~~~~~~~~~~ 1101 as 1101, - ~~~~~~~~~~~~~~~~~ 1102 as 1102, - ~~~~~~~~~~~~~~~~~ 1103 as 1103, - ~~~~~~~~~~~~~~~~~ 1104 as 1104, - ~~~~~~~~~~~~~~~~~ 1105 as 1105, - ~~~~~~~~~~~~~~~~~ 1106 as 1106, - ~~~~~~~~~~~~~~~~~ 1107 as 1107, - ~~~~~~~~~~~~~~~~~ 1108 as 1108, - ~~~~~~~~~~~~~~~~~ 1109 as 1109, - ~~~~~~~~~~~~~~~~~ 1110 as 1110, - ~~~~~~~~~~~~~~~~~ 1111 as 1111, - ~~~~~~~~~~~~~~~~~ 1112 as 1112, - ~~~~~~~~~~~~~~~~~ 1113 as 1113, - ~~~~~~~~~~~~~~~~~ 1114 as 1114, - ~~~~~~~~~~~~~~~~~ 1115 as 1115, - ~~~~~~~~~~~~~~~~~ 1116 as 1116, - ~~~~~~~~~~~~~~~~~ 1117 as 1117, - ~~~~~~~~~~~~~~~~~ 1118 as 1118, - ~~~~~~~~~~~~~~~~~ 1119 as 1119, - ~~~~~~~~~~~~~~~~~ 1120 as 1120, - ~~~~~~~~~~~~~~~~~ 1121 as 1121, - ~~~~~~~~~~~~~~~~~ 1122 as 1122, - ~~~~~~~~~~~~~~~~~ 1123 as 1123, - ~~~~~~~~~~~~~~~~~ 1124 as 1124, - ~~~~~~~~~~~~~~~~~ 1125 as 1125, - ~~~~~~~~~~~~~~~~~ 1126 as 1126, - ~~~~~~~~~~~~~~~~~ 1127 as 1127, - ~~~~~~~~~~~~~~~~~ 1128 as 1128, - ~~~~~~~~~~~~~~~~~ 1129 as 1129, - ~~~~~~~~~~~~~~~~~ 1130 as 1130, - ~~~~~~~~~~~~~~~~~ 1131 as 1131, - ~~~~~~~~~~~~~~~~~ 1132 as 1132, - ~~~~~~~~~~~~~~~~~ 1133 as 1133, - ~~~~~~~~~~~~~~~~~ 1134 as 1134, - ~~~~~~~~~~~~~~~~~ 1135 as 1135, - ~~~~~~~~~~~~~~~~~ 1136 as 1136, - ~~~~~~~~~~~~~~~~~ 1137 as 1137, - ~~~~~~~~~~~~~~~~~ 1138 as 1138, - ~~~~~~~~~~~~~~~~~ 1139 as 1139, - ~~~~~~~~~~~~~~~~~ 1140 as 1140, - ~~~~~~~~~~~~~~~~~ 1141 as 1141, - ~~~~~~~~~~~~~~~~~ 1142 as 1142, - ~~~~~~~~~~~~~~~~~ 1143 as 1143, - ~~~~~~~~~~~~~~~~~ 1144 as 1144, - ~~~~~~~~~~~~~~~~~ 1145 as 1145, - ~~~~~~~~~~~~~~~~~ 1146 as 1146, - ~~~~~~~~~~~~~~~~~ 1147 as 1147, - ~~~~~~~~~~~~~~~~~ 1148 as 1148, - ~~~~~~~~~~~~~~~~~ 1149 as 1149, - ~~~~~~~~~~~~~~~~~ 1150 as 1150, - ~~~~~~~~~~~~~~~~~ 1151 as 1151, - ~~~~~~~~~~~~~~~~~ 1152 as 1152, - ~~~~~~~~~~~~~~~~~ 1153 as 1153, - ~~~~~~~~~~~~~~~~~ 1154 as 1154, - ~~~~~~~~~~~~~~~~~ 1155 as 1155, - ~~~~~~~~~~~~~~~~~ 1156 as 1156, - ~~~~~~~~~~~~~~~~~ 1157 as 1157, - ~~~~~~~~~~~~~~~~~ 1158 as 1158, - ~~~~~~~~~~~~~~~~~ 1159 as 1159, - ~~~~~~~~~~~~~~~~~ 1160 as 1160, - ~~~~~~~~~~~~~~~~~ 1161 as 1161, - ~~~~~~~~~~~~~~~~~ 1162 as 1162, - ~~~~~~~~~~~~~~~~~ 1163 as 1163, - ~~~~~~~~~~~~~~~~~ 1164 as 1164, - ~~~~~~~~~~~~~~~~~ 1165 as 1165, - ~~~~~~~~~~~~~~~~~ 1166 as 1166, - ~~~~~~~~~~~~~~~~~ 1167 as 1167, - ~~~~~~~~~~~~~~~~~ 1168 as 1168, - ~~~~~~~~~~~~~~~~~ 1169 as 1169, - ~~~~~~~~~~~~~~~~~ 1170 as 1170, - ~~~~~~~~~~~~~~~~~ 1171 as 1171, - ~~~~~~~~~~~~~~~~~ 1172 as 1172, - ~~~~~~~~~~~~~~~~~ 1173 as 1173, - ~~~~~~~~~~~~~~~~~ 1174 as 1174, - ~~~~~~~~~~~~~~~~~ 1175 as 1175, - ~~~~~~~~~~~~~~~~~ 1176 as 1176, - ~~~~~~~~~~~~~~~~~ 1177 as 1177, - ~~~~~~~~~~~~~~~~~ 1178 as 1178, - ~~~~~~~~~~~~~~~~~ 1179 as 1179, - ~~~~~~~~~~~~~~~~~ 1180 as 1180, - ~~~~~~~~~~~~~~~~~ 1181 as 1181, - ~~~~~~~~~~~~~~~~~ 1182 as 1182, - ~~~~~~~~~~~~~~~~~ 1183 as 1183, - ~~~~~~~~~~~~~~~~~ 1184 as 1184, - ~~~~~~~~~~~~~~~~~ 1185 as 1185, - ~~~~~~~~~~~~~~~~~ 1186 as 1186, - ~~~~~~~~~~~~~~~~~ 1187 as 1187, - ~~~~~~~~~~~~~~~~~ 1188 as 1188, - ~~~~~~~~~~~~~~~~~ 1189 as 1189, - ~~~~~~~~~~~~~~~~~ 1190 as 1190, - ~~~~~~~~~~~~~~~~~ 1191 as 1191, - ~~~~~~~~~~~~~~~~~ 1192 as 1192, - ~~~~~~~~~~~~~~~~~ 1193 as 1193, - ~~~~~~~~~~~~~~~~~ 1194 as 1194, - ~~~~~~~~~~~~~~~~~ 1195 as 1195, - ~~~~~~~~~~~~~~~~~ 1196 as 1196, - ~~~~~~~~~~~~~~~~~ 1197 as 1197, - ~~~~~~~~~~~~~~~~~ 1198 as 1198, - ~~~~~~~~~~~~~~~~~ 1199 as 1199, - ~~~~~~~~~~~~~~~~~ 1200 as 1200, - ~~~~~~~~~~~~~~~~~ 1201 as 1201, - ~~~~~~~~~~~~~~~~~ 1202 as 1202, - ~~~~~~~~~~~~~~~~~ 1203 as 1203, - ~~~~~~~~~~~~~~~~~ 1204 as 1204, - ~~~~~~~~~~~~~~~~~ 1205 as 1205, - ~~~~~~~~~~~~~~~~~ 1206 as 1206, - ~~~~~~~~~~~~~~~~~ 1207 as 1207, - ~~~~~~~~~~~~~~~~~ 1208 as 1208, - ~~~~~~~~~~~~~~~~~ 1209 as 1209, - ~~~~~~~~~~~~~~~~~ 1210 as 1210, - ~~~~~~~~~~~~~~~~~ 1211 as 1211, - ~~~~~~~~~~~~~~~~~ 1212 as 1212, - ~~~~~~~~~~~~~~~~~ 1213 as 1213, - ~~~~~~~~~~~~~~~~~ 1214 as 1214, - ~~~~~~~~~~~~~~~~~ 1215 as 1215, - ~~~~~~~~~~~~~~~~~ 1216 as 1216, - ~~~~~~~~~~~~~~~~~ 1217 as 1217, - ~~~~~~~~~~~~~~~~~ 1218 as 1218, - ~~~~~~~~~~~~~~~~~ 1219 as 1219, - ~~~~~~~~~~~~~~~~~ 1220 as 1220, - ~~~~~~~~~~~~~~~~~ 1221 as 1221, - ~~~~~~~~~~~~~~~~~ 1222 as 1222, - ~~~~~~~~~~~~~~~~~ 1223 as 1223, - ~~~~~~~~~~~~~~~~~ 1224 as 1224, - ~~~~~~~~~~~~~~~~~ 1225 as 1225, - ~~~~~~~~~~~~~~~~~ 1226 as 1226, - ~~~~~~~~~~~~~~~~~ 1227 as 1227, - ~~~~~~~~~~~~~~~~~ 1228 as 1228, - ~~~~~~~~~~~~~~~~~ 1229 as 1229, - ~~~~~~~~~~~~~~~~~ 1230 as 1230, - ~~~~~~~~~~~~~~~~~ 1231 as 1231, - ~~~~~~~~~~~~~~~~~ 1232 as 1232, - ~~~~~~~~~~~~~~~~~ 1233 as 1233, - ~~~~~~~~~~~~~~~~~ 1234 as 1234, - ~~~~~~~~~~~~~~~~~ 1235 as 1235, - ~~~~~~~~~~~~~~~~~ 1236 as 1236, - ~~~~~~~~~~~~~~~~~ 1237 as 1237, - ~~~~~~~~~~~~~~~~~ 1238 as 1238, - ~~~~~~~~~~~~~~~~~ 1239 as 1239, - ~~~~~~~~~~~~~~~~~ 1240 as 1240, - ~~~~~~~~~~~~~~~~~ 1241 as 1241, - ~~~~~~~~~~~~~~~~~ 1242 as 1242, - ~~~~~~~~~~~~~~~~~ 1243 as 1243, - ~~~~~~~~~~~~~~~~~ 1244 as 1244, - ~~~~~~~~~~~~~~~~~ 1245 as 1245, - ~~~~~~~~~~~~~~~~~ 1246 as 1246, - ~~~~~~~~~~~~~~~~~ 1247 as 1247, - ~~~~~~~~~~~~~~~~~ 1248 as 1248, - ~~~~~~~~~~~~~~~~~ 1249 as 1249, - ~~~~~~~~~~~~~~~~~ 1250 as 1250, - ~~~~~~~~~~~~~~~~~ 1251 as 1251, - ~~~~~~~~~~~~~~~~~ 1252 as 1252, - ~~~~~~~~~~~~~~~~~ 1253 as 1253, - ~~~~~~~~~~~~~~~~~ 1254 as 1254, - ~~~~~~~~~~~~~~~~~ 1255 as 1255, - ~~~~~~~~~~~~~~~~~ 1256 as 1256, - ~~~~~~~~~~~~~~~~~ 1257 as 1257, - ~~~~~~~~~~~~~~~~~ 1258 as 1258, - ~~~~~~~~~~~~~~~~~ 1259 as 1259, - ~~~~~~~~~~~~~~~~~ 1260 as 1260, - ~~~~~~~~~~~~~~~~~ 1261 as 1261, - ~~~~~~~~~~~~~~~~~ 1262 as 1262, - ~~~~~~~~~~~~~~~~~ 1263 as 1263, - ~~~~~~~~~~~~~~~~~ 1264 as 1264, - ~~~~~~~~~~~~~~~~~ 1265 as 1265, - ~~~~~~~~~~~~~~~~~ 1266 as 1266, - ~~~~~~~~~~~~~~~~~ 1267 as 1267, - ~~~~~~~~~~~~~~~~~ 1268 as 1268, - ~~~~~~~~~~~~~~~~~ 1269 as 1269, - ~~~~~~~~~~~~~~~~~ 1270 as 1270, - ~~~~~~~~~~~~~~~~~ 1271 as 1271, - ~~~~~~~~~~~~~~~~~ 1272 as 1272, - ~~~~~~~~~~~~~~~~~ 1273 as 1273, - ~~~~~~~~~~~~~~~~~ 1274 as 1274, - ~~~~~~~~~~~~~~~~~ 1275 as 1275, - ~~~~~~~~~~~~~~~~~ 1276 as 1276, - ~~~~~~~~~~~~~~~~~ 1277 as 1277, - ~~~~~~~~~~~~~~~~~ 1278 as 1278, - ~~~~~~~~~~~~~~~~~ 1279 as 1279, - ~~~~~~~~~~~~~~~~~ 1280 as 1280, - ~~~~~~~~~~~~~~~~~ 1281 as 1281, - ~~~~~~~~~~~~~~~~~ 1282 as 1282, - ~~~~~~~~~~~~~~~~~ 1283 as 1283, - ~~~~~~~~~~~~~~~~~ 1284 as 1284, - ~~~~~~~~~~~~~~~~~ 1285 as 1285, - ~~~~~~~~~~~~~~~~~ 1286 as 1286, - ~~~~~~~~~~~~~~~~~ 1287 as 1287, - ~~~~~~~~~~~~~~~~~ 1288 as 1288, - ~~~~~~~~~~~~~~~~~ 1289 as 1289, - ~~~~~~~~~~~~~~~~~ 1290 as 1290, - ~~~~~~~~~~~~~~~~~ 1291 as 1291, - ~~~~~~~~~~~~~~~~~ 1292 as 1292, - ~~~~~~~~~~~~~~~~~ 1293 as 1293, - ~~~~~~~~~~~~~~~~~ 1294 as 1294, - ~~~~~~~~~~~~~~~~~ 1295 as 1295, - ~~~~~~~~~~~~~~~~~ 1296 as 1296, - ~~~~~~~~~~~~~~~~~ 1297 as 1297, - ~~~~~~~~~~~~~~~~~ 1298 as 1298, - ~~~~~~~~~~~~~~~~~ 1299 as 1299, - ~~~~~~~~~~~~~~~~~ 1300 as 1300, - ~~~~~~~~~~~~~~~~~ 1301 as 1301, - ~~~~~~~~~~~~~~~~~ 1302 as 1302, - ~~~~~~~~~~~~~~~~~ 1303 as 1303, - ~~~~~~~~~~~~~~~~~ 1304 as 1304, - ~~~~~~~~~~~~~~~~~ 1305 as 1305, - ~~~~~~~~~~~~~~~~~ 1306 as 1306, - ~~~~~~~~~~~~~~~~~ 1307 as 1307, - ~~~~~~~~~~~~~~~~~ 1308 as 1308, - ~~~~~~~~~~~~~~~~~ 1309 as 1309, - ~~~~~~~~~~~~~~~~~ 1310 as 1310, - ~~~~~~~~~~~~~~~~~ 1311 as 1311, - ~~~~~~~~~~~~~~~~~ 1312 as 1312, - ~~~~~~~~~~~~~~~~~ 1313 as 1313, - ~~~~~~~~~~~~~~~~~ 1314 as 1314, - ~~~~~~~~~~~~~~~~~ 1315 as 1315, - ~~~~~~~~~~~~~~~~~ 1316 as 1316, - ~~~~~~~~~~~~~~~~~ 1317 as 1317, - ~~~~~~~~~~~~~~~~~ 1318 as 1318, - ~~~~~~~~~~~~~~~~~ 1319 as 1319, - ~~~~~~~~~~~~~~~~~ 1320 as 1320, - ~~~~~~~~~~~~~~~~~ 1321 as 1321, - ~~~~~~~~~~~~~~~~~ 1322 as 1322, - ~~~~~~~~~~~~~~~~~ 1323 as 1323, - ~~~~~~~~~~~~~~~~~ 1324 as 1324, - ~~~~~~~~~~~~~~~~~ 1325 as 1325, - ~~~~~~~~~~~~~~~~~ 1326 as 1326, - ~~~~~~~~~~~~~~~~~ 1327 as 1327, - ~~~~~~~~~~~~~~~~~ 1328 as 1328, - ~~~~~~~~~~~~~~~~~ 1329 as 1329, - ~~~~~~~~~~~~~~~~~ 1330 as 1330, - ~~~~~~~~~~~~~~~~~ 1331 as 1331, - ~~~~~~~~~~~~~~~~~ 1332 as 1332, - ~~~~~~~~~~~~~~~~~ 1333 as 1333, - ~~~~~~~~~~~~~~~~~ 1334 as 1334, - ~~~~~~~~~~~~~~~~~ 1335 as 1335, - ~~~~~~~~~~~~~~~~~ 1336 as 1336, - ~~~~~~~~~~~~~~~~~ 1337 as 1337, - ~~~~~~~~~~~~~~~~~ 1338 as 1338, - ~~~~~~~~~~~~~~~~~ 1339 as 1339, - ~~~~~~~~~~~~~~~~~ 1340 as 1340, - ~~~~~~~~~~~~~~~~~ 1341 as 1341, - ~~~~~~~~~~~~~~~~~ 1342 as 1342, - ~~~~~~~~~~~~~~~~~ 1343 as 1343, - ~~~~~~~~~~~~~~~~~ 1344 as 1344, - ~~~~~~~~~~~~~~~~~ 1345 as 1345, - ~~~~~~~~~~~~~~~~~ 1346 as 1346, - ~~~~~~~~~~~~~~~~~ 1347 as 1347, - ~~~~~~~~~~~~~~~~~ 1348 as 1348, - ~~~~~~~~~~~~~~~~~ 1349 as 1349, - ~~~~~~~~~~~~~~~~~ 1350 as 1350, - ~~~~~~~~~~~~~~~~~ 1351 as 1351, - ~~~~~~~~~~~~~~~~~ 1352 as 1352, - ~~~~~~~~~~~~~~~~~ 1353 as 1353, - ~~~~~~~~~~~~~~~~~ 1354 as 1354, - ~~~~~~~~~~~~~~~~~ 1355 as 1355, - ~~~~~~~~~~~~~~~~~ 1356 as 1356, - ~~~~~~~~~~~~~~~~~ 1357 as 1357, - ~~~~~~~~~~~~~~~~~ 1358 as 1358, - ~~~~~~~~~~~~~~~~~ 1359 as 1359, - ~~~~~~~~~~~~~~~~~ 1360 as 1360, - ~~~~~~~~~~~~~~~~~ 1361 as 1361, - ~~~~~~~~~~~~~~~~~ 1362 as 1362, - ~~~~~~~~~~~~~~~~~ 1363 as 1363, - ~~~~~~~~~~~~~~~~~ 1364 as 1364, - ~~~~~~~~~~~~~~~~~ 1365 as 1365, - ~~~~~~~~~~~~~~~~~ 1366 as 1366, - ~~~~~~~~~~~~~~~~~ 1367 as 1367, - ~~~~~~~~~~~~~~~~~ 1368 as 1368, - ~~~~~~~~~~~~~~~~~ 1369 as 1369, - ~~~~~~~~~~~~~~~~~ 1370 as 1370, - ~~~~~~~~~~~~~~~~~ 1371 as 1371, - ~~~~~~~~~~~~~~~~~ 1372 as 1372, - ~~~~~~~~~~~~~~~~~ 1373 as 1373, - ~~~~~~~~~~~~~~~~~ 1374 as 1374, - ~~~~~~~~~~~~~~~~~ 1375 as 1375, - ~~~~~~~~~~~~~~~~~ 1376 as 1376, - ~~~~~~~~~~~~~~~~~ 1377 as 1377, - ~~~~~~~~~~~~~~~~~ 1378 as 1378, - ~~~~~~~~~~~~~~~~~ 1379 as 1379, - ~~~~~~~~~~~~~~~~~ 1380 as 1380, - ~~~~~~~~~~~~~~~~~ 1381 as 1381, - ~~~~~~~~~~~~~~~~~ 1382 as 1382, - ~~~~~~~~~~~~~~~~~ 1383 as 1383, - ~~~~~~~~~~~~~~~~~ 1384 as 1384, - ~~~~~~~~~~~~~~~~~ 1385 as 1385, - ~~~~~~~~~~~~~~~~~ 1386 as 1386, - ~~~~~~~~~~~~~~~~~ 1387 as 1387, - ~~~~~~~~~~~~~~~~~ 1388 as 1388, - ~~~~~~~~~~~~~~~~~ 1389 as 1389, - ~~~~~~~~~~~~~~~~~ 1390 as 1390, - ~~~~~~~~~~~~~~~~~ 1391 as 1391, - ~~~~~~~~~~~~~~~~~ 1392 as 1392, - ~~~~~~~~~~~~~~~~~ 1393 as 1393, - ~~~~~~~~~~~~~~~~~ 1394 as 1394, - ~~~~~~~~~~~~~~~~~ 1395 as 1395, - ~~~~~~~~~~~~~~~~~ 1396 as 1396, - ~~~~~~~~~~~~~~~~~ 1397 as 1397, - ~~~~~~~~~~~~~~~~~ 1398 as 1398, - ~~~~~~~~~~~~~~~~~ 1399 as 1399, - ~~~~~~~~~~~~~~~~~ 1400 as 1400, - ~~~~~~~~~~~~~~~~~ 1401 as 1401, - ~~~~~~~~~~~~~~~~~ 1402 as 1402, - ~~~~~~~~~~~~~~~~~ 1403 as 1403, - ~~~~~~~~~~~~~~~~~ 1404 as 1404, - ~~~~~~~~~~~~~~~~~ 1405 as 1405, - ~~~~~~~~~~~~~~~~~ 1406 as 1406, - ~~~~~~~~~~~~~~~~~ 1407 as 1407, - ~~~~~~~~~~~~~~~~~ 1408 as 1408, - ~~~~~~~~~~~~~~~~~ 1409 as 1409, - ~~~~~~~~~~~~~~~~~ 1410 as 1410, - ~~~~~~~~~~~~~~~~~ 1411 as 1411, - ~~~~~~~~~~~~~~~~~ 1412 as 1412, - ~~~~~~~~~~~~~~~~~ 1413 as 1413, - ~~~~~~~~~~~~~~~~~ 1414 as 1414, - ~~~~~~~~~~~~~~~~~ 1415 as 1415, - ~~~~~~~~~~~~~~~~~ 1416 as 1416, - ~~~~~~~~~~~~~~~~~ 1417 as 1417, - ~~~~~~~~~~~~~~~~~ 1418 as 1418, - ~~~~~~~~~~~~~~~~~ 1419 as 1419, - ~~~~~~~~~~~~~~~~~ 1420 as 1420, - ~~~~~~~~~~~~~~~~~ 1421 as 1421, - ~~~~~~~~~~~~~~~~~ 1422 as 1422, - ~~~~~~~~~~~~~~~~~ 1423 as 1423, - ~~~~~~~~~~~~~~~~~ 1424 as 1424, - ~~~~~~~~~~~~~~~~~ 1425 as 1425, - ~~~~~~~~~~~~~~~~~ 1426 as 1426, - ~~~~~~~~~~~~~~~~~ 1427 as 1427, - ~~~~~~~~~~~~~~~~~ 1428 as 1428, - ~~~~~~~~~~~~~~~~~ 1429 as 1429, - ~~~~~~~~~~~~~~~~~ 1430 as 1430, - ~~~~~~~~~~~~~~~~~ 1431 as 1431, - ~~~~~~~~~~~~~~~~~ 1432 as 1432, - ~~~~~~~~~~~~~~~~~ 1433 as 1433, - ~~~~~~~~~~~~~~~~~ 1434 as 1434, - ~~~~~~~~~~~~~~~~~ 1435 as 1435, - ~~~~~~~~~~~~~~~~~ 1436 as 1436, - ~~~~~~~~~~~~~~~~~ 1437 as 1437, - ~~~~~~~~~~~~~~~~~ 1438 as 1438, - ~~~~~~~~~~~~~~~~~ 1439 as 1439, - ~~~~~~~~~~~~~~~~~ 1440 as 1440, - ~~~~~~~~~~~~~~~~~ 1441 as 1441, - ~~~~~~~~~~~~~~~~~ 1442 as 1442, - ~~~~~~~~~~~~~~~~~ 1443 as 1443, - ~~~~~~~~~~~~~~~~~ 1444 as 1444, - ~~~~~~~~~~~~~~~~~ 1445 as 1445, - ~~~~~~~~~~~~~~~~~ 1446 as 1446, - ~~~~~~~~~~~~~~~~~ 1447 as 1447, - ~~~~~~~~~~~~~~~~~ 1448 as 1448, - ~~~~~~~~~~~~~~~~~ 1449 as 1449, - ~~~~~~~~~~~~~~~~~ 1450 as 1450, - ~~~~~~~~~~~~~~~~~ 1451 as 1451, - ~~~~~~~~~~~~~~~~~ 1452 as 1452, - ~~~~~~~~~~~~~~~~~ 1453 as 1453, - ~~~~~~~~~~~~~~~~~ 1454 as 1454, - ~~~~~~~~~~~~~~~~~ 1455 as 1455, - ~~~~~~~~~~~~~~~~~ 1456 as 1456, - ~~~~~~~~~~~~~~~~~ 1457 as 1457, - ~~~~~~~~~~~~~~~~~ 1458 as 1458, - ~~~~~~~~~~~~~~~~~ 1459 as 1459, - ~~~~~~~~~~~~~~~~~ 1460 as 1460, - ~~~~~~~~~~~~~~~~~ 1461 as 1461, - ~~~~~~~~~~~~~~~~~ 1462 as 1462, - ~~~~~~~~~~~~~~~~~ 1463 as 1463, - ~~~~~~~~~~~~~~~~~ 1464 as 1464, - ~~~~~~~~~~~~~~~~~ 1465 as 1465, - ~~~~~~~~~~~~~~~~~ 1466 as 1466, - ~~~~~~~~~~~~~~~~~ 1467 as 1467, - ~~~~~~~~~~~~~~~~~ 1468 as 1468, - ~~~~~~~~~~~~~~~~~ 1469 as 1469, - ~~~~~~~~~~~~~~~~~ 1470 as 1470, - ~~~~~~~~~~~~~~~~~ 1471 as 1471, - ~~~~~~~~~~~~~~~~~ 1472 as 1472, - ~~~~~~~~~~~~~~~~~ 1473 as 1473, - ~~~~~~~~~~~~~~~~~ 1474 as 1474, - ~~~~~~~~~~~~~~~~~ 1475 as 1475, - ~~~~~~~~~~~~~~~~~ 1476 as 1476, - ~~~~~~~~~~~~~~~~~ 1477 as 1477, - ~~~~~~~~~~~~~~~~~ 1478 as 1478, - ~~~~~~~~~~~~~~~~~ 1479 as 1479, - ~~~~~~~~~~~~~~~~~ 1480 as 1480, - ~~~~~~~~~~~~~~~~~ 1481 as 1481, - ~~~~~~~~~~~~~~~~~ 1482 as 1482, - ~~~~~~~~~~~~~~~~~ 1483 as 1483, - ~~~~~~~~~~~~~~~~~ 1484 as 1484, - ~~~~~~~~~~~~~~~~~ 1485 as 1485, - ~~~~~~~~~~~~~~~~~ 1486 as 1486, - ~~~~~~~~~~~~~~~~~ 1487 as 1487, - ~~~~~~~~~~~~~~~~~ 1488 as 1488, - ~~~~~~~~~~~~~~~~~ 1489 as 1489, - ~~~~~~~~~~~~~~~~~ 1490 as 1490, - ~~~~~~~~~~~~~~~~~ 1491 as 1491, - ~~~~~~~~~~~~~~~~~ 1492 as 1492, - ~~~~~~~~~~~~~~~~~ 1493 as 1493, - ~~~~~~~~~~~~~~~~~ 1494 as 1494, - ~~~~~~~~~~~~~~~~~ 1495 as 1495, - ~~~~~~~~~~~~~~~~~ 1496 as 1496, - ~~~~~~~~~~~~~~~~~ 1497 as 1497, - ~~~~~~~~~~~~~~~~~ 1498 as 1498, - ~~~~~~~~~~~~~~~~~ 1499 as 1499, - ~~~~~~~~~~~~~~~~~ 1500 as 1500, - ~~~~~~~~~~~~~~~~~ 1501 as 1501, - ~~~~~~~~~~~~~~~~~ 1502 as 1502, - ~~~~~~~~~~~~~~~~~ 1503 as 1503, - ~~~~~~~~~~~~~~~~~ 1504 as 1504, - ~~~~~~~~~~~~~~~~~ 1505 as 1505, - ~~~~~~~~~~~~~~~~~ 1506 as 1506, - ~~~~~~~~~~~~~~~~~ 1507 as 1507, - ~~~~~~~~~~~~~~~~~ 1508 as 1508, - ~~~~~~~~~~~~~~~~~ 1509 as 1509, - ~~~~~~~~~~~~~~~~~ 1510 as 1510, - ~~~~~~~~~~~~~~~~~ 1511 as 1511, - ~~~~~~~~~~~~~~~~~ 1512 as 1512, - ~~~~~~~~~~~~~~~~~ 1513 as 1513, - ~~~~~~~~~~~~~~~~~ 1514 as 1514, - ~~~~~~~~~~~~~~~~~ 1515 as 1515, - ~~~~~~~~~~~~~~~~~ 1516 as 1516, - ~~~~~~~~~~~~~~~~~ 1517 as 1517, - ~~~~~~~~~~~~~~~~~ 1518 as 1518, - ~~~~~~~~~~~~~~~~~ 1519 as 1519, - ~~~~~~~~~~~~~~~~~ 1520 as 1520, - ~~~~~~~~~~~~~~~~~ 1521 as 1521, - ~~~~~~~~~~~~~~~~~ 1522 as 1522, - ~~~~~~~~~~~~~~~~~ 1523 as 1523, - ~~~~~~~~~~~~~~~~~ 1524 as 1524, - ~~~~~~~~~~~~~~~~~ 1525 as 1525, - ~~~~~~~~~~~~~~~~~ 1526 as 1526, - ~~~~~~~~~~~~~~~~~ 1527 as 1527, - ~~~~~~~~~~~~~~~~~ 1528 as 1528, - ~~~~~~~~~~~~~~~~~ 1529 as 1529, - ~~~~~~~~~~~~~~~~~ 1530 as 1530, - ~~~~~~~~~~~~~~~~~ 1531 as 1531, - ~~~~~~~~~~~~~~~~~ 1532 as 1532, - ~~~~~~~~~~~~~~~~~ 1533 as 1533, - ~~~~~~~~~~~~~~~~~ 1534 as 1534, - ~~~~~~~~~~~~~~~~~ 1535 as 1535, - ~~~~~~~~~~~~~~~~~ 1536 as 1536, - ~~~~~~~~~~~~~~~~~ 1537 as 1537, - ~~~~~~~~~~~~~~~~~ 1538 as 1538, - ~~~~~~~~~~~~~~~~~ 1539 as 1539, - ~~~~~~~~~~~~~~~~~ 1540 as 1540, - ~~~~~~~~~~~~~~~~~ 1541 as 1541, - ~~~~~~~~~~~~~~~~~ 1542 as 1542, - ~~~~~~~~~~~~~~~~~ 1543 as 1543, - ~~~~~~~~~~~~~~~~~ 1544 as 1544, - ~~~~~~~~~~~~~~~~~ 1545 as 1545, - ~~~~~~~~~~~~~~~~~ 1546 as 1546, - ~~~~~~~~~~~~~~~~~ 1547 as 1547, - ~~~~~~~~~~~~~~~~~ 1548 as 1548, - ~~~~~~~~~~~~~~~~~ 1549 as 1549, - ~~~~~~~~~~~~~~~~~ 1550 as 1550, - ~~~~~~~~~~~~~~~~~ 1551 as 1551, - ~~~~~~~~~~~~~~~~~ 1552 as 1552, - ~~~~~~~~~~~~~~~~~ 1553 as 1553, - ~~~~~~~~~~~~~~~~~ 1554 as 1554, - ~~~~~~~~~~~~~~~~~ 1555 as 1555, - ~~~~~~~~~~~~~~~~~ 1556 as 1556, - ~~~~~~~~~~~~~~~~~ 1557 as 1557, - ~~~~~~~~~~~~~~~~~ 1558 as 1558, - ~~~~~~~~~~~~~~~~~ 1559 as 1559, - ~~~~~~~~~~~~~~~~~ 1560 as 1560, - ~~~~~~~~~~~~~~~~~ 1561 as 1561, - ~~~~~~~~~~~~~~~~~ 1562 as 1562, - ~~~~~~~~~~~~~~~~~ 1563 as 1563, - ~~~~~~~~~~~~~~~~~ 1564 as 1564, - ~~~~~~~~~~~~~~~~~ 1565 as 1565, - ~~~~~~~~~~~~~~~~~ 1566 as 1566, - ~~~~~~~~~~~~~~~~~ 1567 as 1567, - ~~~~~~~~~~~~~~~~~ 1568 as 1568, - ~~~~~~~~~~~~~~~~~ 1569 as 1569, - ~~~~~~~~~~~~~~~~~ 1570 as 1570, - ~~~~~~~~~~~~~~~~~ 1571 as 1571, - ~~~~~~~~~~~~~~~~~ 1572 as 1572, - ~~~~~~~~~~~~~~~~~ 1573 as 1573, - ~~~~~~~~~~~~~~~~~ 1574 as 1574, - ~~~~~~~~~~~~~~~~~ 1575 as 1575, - ~~~~~~~~~~~~~~~~~ 1576 as 1576, - ~~~~~~~~~~~~~~~~~ 1577 as 1577, - ~~~~~~~~~~~~~~~~~ 1578 as 1578, - ~~~~~~~~~~~~~~~~~ 1579 as 1579, - ~~~~~~~~~~~~~~~~~ 1580 as 1580, - ~~~~~~~~~~~~~~~~~ 1581 as 1581, - ~~~~~~~~~~~~~~~~~ 1582 as 1582, - ~~~~~~~~~~~~~~~~~ 1583 as 1583, - ~~~~~~~~~~~~~~~~~ 1584 as 1584, - ~~~~~~~~~~~~~~~~~ 1585 as 1585, - ~~~~~~~~~~~~~~~~~ 1586 as 1586, - ~~~~~~~~~~~~~~~~~ 1587 as 1587, - ~~~~~~~~~~~~~~~~~ 1588 as 1588, - ~~~~~~~~~~~~~~~~~ 1589 as 1589, - ~~~~~~~~~~~~~~~~~ 1590 as 1590, - ~~~~~~~~~~~~~~~~~ 1591 as 1591, - ~~~~~~~~~~~~~~~~~ 1592 as 1592, - ~~~~~~~~~~~~~~~~~ 1593 as 1593, - ~~~~~~~~~~~~~~~~~ 1594 as 1594, - ~~~~~~~~~~~~~~~~~ 1595 as 1595, - ~~~~~~~~~~~~~~~~~ 1596 as 1596, - ~~~~~~~~~~~~~~~~~ 1597 as 1597, - ~~~~~~~~~~~~~~~~~ 1598 as 1598, - ~~~~~~~~~~~~~~~~~ 1599 as 1599, - ~~~~~~~~~~~~~~~~~ 1600 as 1600, - ~~~~~~~~~~~~~~~~~ 1601 as 1601, - ~~~~~~~~~~~~~~~~~ 1602 as 1602, - ~~~~~~~~~~~~~~~~~ 1603 as 1603, - ~~~~~~~~~~~~~~~~~ 1604 as 1604, - ~~~~~~~~~~~~~~~~~ 1605 as 1605, - ~~~~~~~~~~~~~~~~~ 1606 as 1606, - ~~~~~~~~~~~~~~~~~ 1607 as 1607, - ~~~~~~~~~~~~~~~~~ 1608 as 1608, - ~~~~~~~~~~~~~~~~~ 1609 as 1609, - ~~~~~~~~~~~~~~~~~ 1610 as 1610, - ~~~~~~~~~~~~~~~~~ 1611 as 1611, - ~~~~~~~~~~~~~~~~~ 1612 as 1612, - ~~~~~~~~~~~~~~~~~ 1613 as 1613, - ~~~~~~~~~~~~~~~~~ 1614 as 1614, - ~~~~~~~~~~~~~~~~~ 1615 as 1615, - ~~~~~~~~~~~~~~~~~ 1616 as 1616, - ~~~~~~~~~~~~~~~~~ 1617 as 1617, - ~~~~~~~~~~~~~~~~~ 1618 as 1618, - ~~~~~~~~~~~~~~~~~ 1619 as 1619, - ~~~~~~~~~~~~~~~~~ 1620 as 1620, - ~~~~~~~~~~~~~~~~~ 1621 as 1621, - ~~~~~~~~~~~~~~~~~ 1622 as 1622, - ~~~~~~~~~~~~~~~~~ 1623 as 1623, - ~~~~~~~~~~~~~~~~~ 1624 as 1624, - ~~~~~~~~~~~~~~~~~ 1625 as 1625, - ~~~~~~~~~~~~~~~~~ 1626 as 1626, - ~~~~~~~~~~~~~~~~~ 1627 as 1627, - ~~~~~~~~~~~~~~~~~ 1628 as 1628, - ~~~~~~~~~~~~~~~~~ 1629 as 1629, - ~~~~~~~~~~~~~~~~~ 1630 as 1630, - ~~~~~~~~~~~~~~~~~ 1631 as 1631, - ~~~~~~~~~~~~~~~~~ 1632 as 1632, - ~~~~~~~~~~~~~~~~~ 1633 as 1633, - ~~~~~~~~~~~~~~~~~ 1634 as 1634, - ~~~~~~~~~~~~~~~~~ 1635 as 1635, - ~~~~~~~~~~~~~~~~~ 1636 as 1636, - ~~~~~~~~~~~~~~~~~ 1637 as 1637, - ~~~~~~~~~~~~~~~~~ 1638 as 1638, - ~~~~~~~~~~~~~~~~~ 1639 as 1639, - ~~~~~~~~~~~~~~~~~ 1640 as 1640, - ~~~~~~~~~~~~~~~~~ 1641 as 1641, - ~~~~~~~~~~~~~~~~~ 1642 as 1642, - ~~~~~~~~~~~~~~~~~ 1643 as 1643, - ~~~~~~~~~~~~~~~~~ 1644 as 1644, - ~~~~~~~~~~~~~~~~~ 1645 as 1645, - ~~~~~~~~~~~~~~~~~ 1646 as 1646, - ~~~~~~~~~~~~~~~~~ 1647 as 1647, - ~~~~~~~~~~~~~~~~~ 1648 as 1648, - ~~~~~~~~~~~~~~~~~ 1649 as 1649, - ~~~~~~~~~~~~~~~~~ 1650 as 1650, - ~~~~~~~~~~~~~~~~~ 1651 as 1651, - ~~~~~~~~~~~~~~~~~ 1652 as 1652, - ~~~~~~~~~~~~~~~~~ 1653 as 1653, - ~~~~~~~~~~~~~~~~~ 1654 as 1654, - ~~~~~~~~~~~~~~~~~ 1655 as 1655, - ~~~~~~~~~~~~~~~~~ 1656 as 1656, - ~~~~~~~~~~~~~~~~~ 1657 as 1657, - ~~~~~~~~~~~~~~~~~ 1658 as 1658, - ~~~~~~~~~~~~~~~~~ 1659 as 1659, - ~~~~~~~~~~~~~~~~~ 1660 as 1660, - ~~~~~~~~~~~~~~~~~ 1661 as 1661, - ~~~~~~~~~~~~~~~~~ 1662 as 1662, - ~~~~~~~~~~~~~~~~~ 1663 as 1663, - ~~~~~~~~~~~~~~~~~ 1664 as 1664, - ~~~~~~~~~~~~~~~~~ 1665 as 1665, - ~~~~~~~~~~~~~~~~~ 1666 as 1666, - ~~~~~~~~~~~~~~~~~ 1667 as 1667, - ~~~~~~~~~~~~~~~~~ 1668 as 1668, - ~~~~~~~~~~~~~~~~~ 1669 as 1669, - ~~~~~~~~~~~~~~~~~ 1670 as 1670, - ~~~~~~~~~~~~~~~~~ 1671 as 1671, - ~~~~~~~~~~~~~~~~~ 1672 as 1672, - ~~~~~~~~~~~~~~~~~ 1673 as 1673, - ~~~~~~~~~~~~~~~~~ 1674 as 1674, - ~~~~~~~~~~~~~~~~~ 1675 as 1675, - ~~~~~~~~~~~~~~~~~ 1676 as 1676, - ~~~~~~~~~~~~~~~~~ 1677 as 1677, - ~~~~~~~~~~~~~~~~~ 1678 as 1678, - ~~~~~~~~~~~~~~~~~ 1679 as 1679, - ~~~~~~~~~~~~~~~~~ 1680 as 1680, - ~~~~~~~~~~~~~~~~~ 1681 as 1681, - ~~~~~~~~~~~~~~~~~ 1682 as 1682, - ~~~~~~~~~~~~~~~~~ 1683 as 1683, - ~~~~~~~~~~~~~~~~~ 1684 as 1684, - ~~~~~~~~~~~~~~~~~ 1685 as 1685, - ~~~~~~~~~~~~~~~~~ 1686 as 1686, - ~~~~~~~~~~~~~~~~~ 1687 as 1687, - ~~~~~~~~~~~~~~~~~ 1688 as 1688, - ~~~~~~~~~~~~~~~~~ 1689 as 1689, - ~~~~~~~~~~~~~~~~~ 1690 as 1690, - ~~~~~~~~~~~~~~~~~ 1691 as 1691, - ~~~~~~~~~~~~~~~~~ 1692 as 1692, - ~~~~~~~~~~~~~~~~~ 1693 as 1693, - ~~~~~~~~~~~~~~~~~ 1694 as 1694, - ~~~~~~~~~~~~~~~~~ 1695 as 1695, - ~~~~~~~~~~~~~~~~~ 1696 as 1696, - ~~~~~~~~~~~~~~~~~ 1697 as 1697, - ~~~~~~~~~~~~~~~~~ 1698 as 1698, - ~~~~~~~~~~~~~~~~~ 1699 as 1699, - ~~~~~~~~~~~~~~~~~ 1700 as 1700, - ~~~~~~~~~~~~~~~~~ 1701 as 1701, - ~~~~~~~~~~~~~~~~~ 1702 as 1702, - ~~~~~~~~~~~~~~~~~ 1703 as 1703, - ~~~~~~~~~~~~~~~~~ 1704 as 1704, - ~~~~~~~~~~~~~~~~~ 1705 as 1705, - ~~~~~~~~~~~~~~~~~ 1706 as 1706, - ~~~~~~~~~~~~~~~~~ 1707 as 1707, - ~~~~~~~~~~~~~~~~~ 1708 as 1708, - ~~~~~~~~~~~~~~~~~ 1709 as 1709, - ~~~~~~~~~~~~~~~~~ 1710 as 1710, - ~~~~~~~~~~~~~~~~~ 1711 as 1711, - ~~~~~~~~~~~~~~~~~ 1712 as 1712, - ~~~~~~~~~~~~~~~~~ 1713 as 1713, - ~~~~~~~~~~~~~~~~~ 1714 as 1714, - ~~~~~~~~~~~~~~~~~ 1715 as 1715, - ~~~~~~~~~~~~~~~~~ 1716 as 1716, - ~~~~~~~~~~~~~~~~~ 1717 as 1717, - ~~~~~~~~~~~~~~~~~ 1718 as 1718, - ~~~~~~~~~~~~~~~~~ 1719 as 1719, - ~~~~~~~~~~~~~~~~~ 1720 as 1720, - ~~~~~~~~~~~~~~~~~ 1721 as 1721, - ~~~~~~~~~~~~~~~~~ 1722 as 1722, - ~~~~~~~~~~~~~~~~~ 1723 as 1723, - ~~~~~~~~~~~~~~~~~ 1724 as 1724, - ~~~~~~~~~~~~~~~~~ 1725 as 1725, - ~~~~~~~~~~~~~~~~~ 1726 as 1726, - ~~~~~~~~~~~~~~~~~ 1727 as 1727, - ~~~~~~~~~~~~~~~~~ 1728 as 1728, - ~~~~~~~~~~~~~~~~~ 1729 as 1729, - ~~~~~~~~~~~~~~~~~ 1730 as 1730, - ~~~~~~~~~~~~~~~~~ 1731 as 1731, - ~~~~~~~~~~~~~~~~~ 1732 as 1732, - ~~~~~~~~~~~~~~~~~ 1733 as 1733, - ~~~~~~~~~~~~~~~~~ 1734 as 1734, - ~~~~~~~~~~~~~~~~~ 1735 as 1735, - ~~~~~~~~~~~~~~~~~ 1736 as 1736, - ~~~~~~~~~~~~~~~~~ 1737 as 1737, - ~~~~~~~~~~~~~~~~~ 1738 as 1738, - ~~~~~~~~~~~~~~~~~ 1739 as 1739, - ~~~~~~~~~~~~~~~~~ 1740 as 1740, - ~~~~~~~~~~~~~~~~~ 1741 as 1741, - ~~~~~~~~~~~~~~~~~ 1742 as 1742, - ~~~~~~~~~~~~~~~~~ 1743 as 1743, - ~~~~~~~~~~~~~~~~~ 1744 as 1744, - ~~~~~~~~~~~~~~~~~ 1745 as 1745, - ~~~~~~~~~~~~~~~~~ 1746 as 1746, - ~~~~~~~~~~~~~~~~~ 1747 as 1747, - ~~~~~~~~~~~~~~~~~ 1748 as 1748, - ~~~~~~~~~~~~~~~~~ 1749 as 1749, - ~~~~~~~~~~~~~~~~~ 1750 as 1750, - ~~~~~~~~~~~~~~~~~ 1751 as 1751, - ~~~~~~~~~~~~~~~~~ 1752 as 1752, - ~~~~~~~~~~~~~~~~~ 1753 as 1753, - ~~~~~~~~~~~~~~~~~ 1754 as 1754, - ~~~~~~~~~~~~~~~~~ 1755 as 1755, - ~~~~~~~~~~~~~~~~~ 1756 as 1756, - ~~~~~~~~~~~~~~~~~ 1757 as 1757, - ~~~~~~~~~~~~~~~~~ 1758 as 1758, - ~~~~~~~~~~~~~~~~~ 1759 as 1759, - ~~~~~~~~~~~~~~~~~ 1760 as 1760, - ~~~~~~~~~~~~~~~~~ 1761 as 1761, - ~~~~~~~~~~~~~~~~~ 1762 as 1762, - ~~~~~~~~~~~~~~~~~ 1763 as 1763, - ~~~~~~~~~~~~~~~~~ 1764 as 1764, - ~~~~~~~~~~~~~~~~~ 1765 as 1765, - ~~~~~~~~~~~~~~~~~ 1766 as 1766, - ~~~~~~~~~~~~~~~~~ 1767 as 1767, - ~~~~~~~~~~~~~~~~~ 1768 as 1768, - ~~~~~~~~~~~~~~~~~ 1769 as 1769, - ~~~~~~~~~~~~~~~~~ 1770 as 1770, - ~~~~~~~~~~~~~~~~~ 1771 as 1771, - ~~~~~~~~~~~~~~~~~ 1772 as 1772, - ~~~~~~~~~~~~~~~~~ 1773 as 1773, - ~~~~~~~~~~~~~~~~~ 1774 as 1774, - ~~~~~~~~~~~~~~~~~ 1775 as 1775, - ~~~~~~~~~~~~~~~~~ 1776 as 1776, - ~~~~~~~~~~~~~~~~~ 1777 as 1777, - ~~~~~~~~~~~~~~~~~ 1778 as 1778, - ~~~~~~~~~~~~~~~~~ 1779 as 1779, - ~~~~~~~~~~~~~~~~~ 1780 as 1780, - ~~~~~~~~~~~~~~~~~ 1781 as 1781, - ~~~~~~~~~~~~~~~~~ 1782 as 1782, - ~~~~~~~~~~~~~~~~~ 1783 as 1783, - ~~~~~~~~~~~~~~~~~ 1784 as 1784, - ~~~~~~~~~~~~~~~~~ 1785 as 1785, - ~~~~~~~~~~~~~~~~~ 1786 as 1786, - ~~~~~~~~~~~~~~~~~ 1787 as 1787, - ~~~~~~~~~~~~~~~~~ 1788 as 1788, - ~~~~~~~~~~~~~~~~~ 1789 as 1789, - ~~~~~~~~~~~~~~~~~ 1790 as 1790, - ~~~~~~~~~~~~~~~~~ 1791 as 1791, - ~~~~~~~~~~~~~~~~~ 1792 as 1792, - ~~~~~~~~~~~~~~~~~ 1793 as 1793, - ~~~~~~~~~~~~~~~~~ 1794 as 1794, - ~~~~~~~~~~~~~~~~~ 1795 as 1795, - ~~~~~~~~~~~~~~~~~ 1796 as 1796, - ~~~~~~~~~~~~~~~~~ 1797 as 1797, - ~~~~~~~~~~~~~~~~~ 1798 as 1798, - ~~~~~~~~~~~~~~~~~ 1799 as 1799, - ~~~~~~~~~~~~~~~~~ 1800 as 1800, - ~~~~~~~~~~~~~~~~~ 1801 as 1801, - ~~~~~~~~~~~~~~~~~ 1802 as 1802, - ~~~~~~~~~~~~~~~~~ 1803 as 1803, - ~~~~~~~~~~~~~~~~~ 1804 as 1804, - ~~~~~~~~~~~~~~~~~ 1805 as 1805, - ~~~~~~~~~~~~~~~~~ 1806 as 1806, - ~~~~~~~~~~~~~~~~~ 1807 as 1807, - ~~~~~~~~~~~~~~~~~ 1808 as 1808, - ~~~~~~~~~~~~~~~~~ 1809 as 1809, - ~~~~~~~~~~~~~~~~~ 1810 as 1810, - ~~~~~~~~~~~~~~~~~ 1811 as 1811, - ~~~~~~~~~~~~~~~~~ 1812 as 1812, - ~~~~~~~~~~~~~~~~~ 1813 as 1813, - ~~~~~~~~~~~~~~~~~ 1814 as 1814, - ~~~~~~~~~~~~~~~~~ 1815 as 1815, - ~~~~~~~~~~~~~~~~~ 1816 as 1816, - ~~~~~~~~~~~~~~~~~ 1817 as 1817, - ~~~~~~~~~~~~~~~~~ 1818 as 1818, - ~~~~~~~~~~~~~~~~~ 1819 as 1819, - ~~~~~~~~~~~~~~~~~ 1820 as 1820, - ~~~~~~~~~~~~~~~~~ 1821 as 1821, - ~~~~~~~~~~~~~~~~~ 1822 as 1822, - ~~~~~~~~~~~~~~~~~ 1823 as 1823, - ~~~~~~~~~~~~~~~~~ 1824 as 1824, - ~~~~~~~~~~~~~~~~~ 1825 as 1825, - ~~~~~~~~~~~~~~~~~ 1826 as 1826, - ~~~~~~~~~~~~~~~~~ 1827 as 1827, - ~~~~~~~~~~~~~~~~~ 1828 as 1828, - ~~~~~~~~~~~~~~~~~ 1829 as 1829, - ~~~~~~~~~~~~~~~~~ 1830 as 1830, - ~~~~~~~~~~~~~~~~~ 1831 as 1831, - ~~~~~~~~~~~~~~~~~ 1832 as 1832, - ~~~~~~~~~~~~~~~~~ 1833 as 1833, - ~~~~~~~~~~~~~~~~~ 1834 as 1834, - ~~~~~~~~~~~~~~~~~ 1835 as 1835, - ~~~~~~~~~~~~~~~~~ 1836 as 1836, - ~~~~~~~~~~~~~~~~~ 1837 as 1837, - ~~~~~~~~~~~~~~~~~ 1838 as 1838, - ~~~~~~~~~~~~~~~~~ 1839 as 1839, - ~~~~~~~~~~~~~~~~~ 1840 as 1840, - ~~~~~~~~~~~~~~~~~ 1841 as 1841, - ~~~~~~~~~~~~~~~~~ 1842 as 1842, - ~~~~~~~~~~~~~~~~~ 1843 as 1843, - ~~~~~~~~~~~~~~~~~ 1844 as 1844, - ~~~~~~~~~~~~~~~~~ 1845 as 1845, - ~~~~~~~~~~~~~~~~~ 1846 as 1846, - ~~~~~~~~~~~~~~~~~ 1847 as 1847, - ~~~~~~~~~~~~~~~~~ 1848 as 1848, - ~~~~~~~~~~~~~~~~~ 1849 as 1849, - ~~~~~~~~~~~~~~~~~ 1850 as 1850, - ~~~~~~~~~~~~~~~~~ 1851 as 1851, - ~~~~~~~~~~~~~~~~~ 1852 as 1852, - ~~~~~~~~~~~~~~~~~ 1853 as 1853, - ~~~~~~~~~~~~~~~~~ 1854 as 1854, - ~~~~~~~~~~~~~~~~~ 1855 as 1855, - ~~~~~~~~~~~~~~~~~ 1856 as 1856, - ~~~~~~~~~~~~~~~~~ 1857 as 1857, - ~~~~~~~~~~~~~~~~~ 1858 as 1858, - ~~~~~~~~~~~~~~~~~ 1859 as 1859, - ~~~~~~~~~~~~~~~~~ 1860 as 1860, - ~~~~~~~~~~~~~~~~~ 1861 as 1861, - ~~~~~~~~~~~~~~~~~ 1862 as 1862, - ~~~~~~~~~~~~~~~~~ 1863 as 1863, - ~~~~~~~~~~~~~~~~~ 1864 as 1864, - ~~~~~~~~~~~~~~~~~ 1865 as 1865, - ~~~~~~~~~~~~~~~~~ 1866 as 1866, - ~~~~~~~~~~~~~~~~~ 1867 as 1867, - ~~~~~~~~~~~~~~~~~ 1868 as 1868, - ~~~~~~~~~~~~~~~~~ 1869 as 1869, - ~~~~~~~~~~~~~~~~~ 1870 as 1870, - ~~~~~~~~~~~~~~~~~ 1871 as 1871, - ~~~~~~~~~~~~~~~~~ 1872 as 1872, - ~~~~~~~~~~~~~~~~~ 1873 as 1873, - ~~~~~~~~~~~~~~~~~ 1874 as 1874, - ~~~~~~~~~~~~~~~~~ 1875 as 1875, - ~~~~~~~~~~~~~~~~~ 1876 as 1876, - ~~~~~~~~~~~~~~~~~ 1877 as 1877, - ~~~~~~~~~~~~~~~~~ 1878 as 1878, - ~~~~~~~~~~~~~~~~~ 1879 as 1879, - ~~~~~~~~~~~~~~~~~ 1880 as 1880, - ~~~~~~~~~~~~~~~~~ 1881 as 1881, - ~~~~~~~~~~~~~~~~~ 1882 as 1882, - ~~~~~~~~~~~~~~~~~ 1883 as 1883, - ~~~~~~~~~~~~~~~~~ 1884 as 1884, - ~~~~~~~~~~~~~~~~~ 1885 as 1885, - ~~~~~~~~~~~~~~~~~ 1886 as 1886, - ~~~~~~~~~~~~~~~~~ 1887 as 1887, - ~~~~~~~~~~~~~~~~~ 1888 as 1888, - ~~~~~~~~~~~~~~~~~ 1889 as 1889, - ~~~~~~~~~~~~~~~~~ 1890 as 1890, - ~~~~~~~~~~~~~~~~~ 1891 as 1891, - ~~~~~~~~~~~~~~~~~ 1892 as 1892, - ~~~~~~~~~~~~~~~~~ 1893 as 1893, - ~~~~~~~~~~~~~~~~~ 1894 as 1894, - ~~~~~~~~~~~~~~~~~ 1895 as 1895, - ~~~~~~~~~~~~~~~~~ 1896 as 1896, - ~~~~~~~~~~~~~~~~~ 1897 as 1897, - ~~~~~~~~~~~~~~~~~ 1898 as 1898, - ~~~~~~~~~~~~~~~~~ 1899 as 1899, - ~~~~~~~~~~~~~~~~~ 1900 as 1900, - ~~~~~~~~~~~~~~~~~ 1901 as 1901, - ~~~~~~~~~~~~~~~~~ 1902 as 1902, - ~~~~~~~~~~~~~~~~~ 1903 as 1903, - ~~~~~~~~~~~~~~~~~ 1904 as 1904, - ~~~~~~~~~~~~~~~~~ 1905 as 1905, - ~~~~~~~~~~~~~~~~~ 1906 as 1906, - ~~~~~~~~~~~~~~~~~ 1907 as 1907, - ~~~~~~~~~~~~~~~~~ 1908 as 1908, - ~~~~~~~~~~~~~~~~~ 1909 as 1909, - ~~~~~~~~~~~~~~~~~ 1910 as 1910, - ~~~~~~~~~~~~~~~~~ 1911 as 1911, - ~~~~~~~~~~~~~~~~~ 1912 as 1912, - ~~~~~~~~~~~~~~~~~ 1913 as 1913, - ~~~~~~~~~~~~~~~~~ 1914 as 1914, - ~~~~~~~~~~~~~~~~~ 1915 as 1915, - ~~~~~~~~~~~~~~~~~ 1916 as 1916, - ~~~~~~~~~~~~~~~~~ 1917 as 1917, - ~~~~~~~~~~~~~~~~~ 1918 as 1918, - ~~~~~~~~~~~~~~~~~ 1919 as 1919, - ~~~~~~~~~~~~~~~~~ 1920 as 1920, - ~~~~~~~~~~~~~~~~~ 1921 as 1921, - ~~~~~~~~~~~~~~~~~ 1922 as 1922, - ~~~~~~~~~~~~~~~~~ 1923 as 1923, - ~~~~~~~~~~~~~~~~~ 1924 as 1924, - ~~~~~~~~~~~~~~~~~ 1925 as 1925, - ~~~~~~~~~~~~~~~~~ 1926 as 1926, - ~~~~~~~~~~~~~~~~~ 1927 as 1927, - ~~~~~~~~~~~~~~~~~ 1928 as 1928, - ~~~~~~~~~~~~~~~~~ 1929 as 1929, - ~~~~~~~~~~~~~~~~~ 1930 as 1930, - ~~~~~~~~~~~~~~~~~ 1931 as 1931, - ~~~~~~~~~~~~~~~~~ 1932 as 1932, - ~~~~~~~~~~~~~~~~~ 1933 as 1933, - ~~~~~~~~~~~~~~~~~ 1934 as 1934, - ~~~~~~~~~~~~~~~~~ 1935 as 1935, - ~~~~~~~~~~~~~~~~~ 1936 as 1936, - ~~~~~~~~~~~~~~~~~ 1937 as 1937, - ~~~~~~~~~~~~~~~~~ 1938 as 1938, - ~~~~~~~~~~~~~~~~~ 1939 as 1939, - ~~~~~~~~~~~~~~~~~ 1940 as 1940, - ~~~~~~~~~~~~~~~~~ 1941 as 1941, - ~~~~~~~~~~~~~~~~~ 1942 as 1942, - ~~~~~~~~~~~~~~~~~ 1943 as 1943, - ~~~~~~~~~~~~~~~~~ 1944 as 1944, - ~~~~~~~~~~~~~~~~~ 1945 as 1945, - ~~~~~~~~~~~~~~~~~ 1946 as 1946, - ~~~~~~~~~~~~~~~~~ 1947 as 1947, - ~~~~~~~~~~~~~~~~~ 1948 as 1948, - ~~~~~~~~~~~~~~~~~ 1949 as 1949, - ~~~~~~~~~~~~~~~~~ 1950 as 1950, - ~~~~~~~~~~~~~~~~~ 1951 as 1951, - ~~~~~~~~~~~~~~~~~ 1952 as 1952, - ~~~~~~~~~~~~~~~~~ 1953 as 1953, - ~~~~~~~~~~~~~~~~~ 1954 as 1954, - ~~~~~~~~~~~~~~~~~ 1955 as 1955, - ~~~~~~~~~~~~~~~~~ 1956 as 1956, - ~~~~~~~~~~~~~~~~~ 1957 as 1957, - ~~~~~~~~~~~~~~~~~ 1958 as 1958, - ~~~~~~~~~~~~~~~~~ 1959 as 1959, - ~~~~~~~~~~~~~~~~~ 1960 as 1960, - ~~~~~~~~~~~~~~~~~ 1961 as 1961, - ~~~~~~~~~~~~~~~~~ 1962 as 1962, - ~~~~~~~~~~~~~~~~~ 1963 as 1963, - ~~~~~~~~~~~~~~~~~ 1964 as 1964, - ~~~~~~~~~~~~~~~~~ 1965 as 1965, - ~~~~~~~~~~~~~~~~~ 1966 as 1966, - ~~~~~~~~~~~~~~~~~ 1967 as 1967, - ~~~~~~~~~~~~~~~~~ 1968 as 1968, - ~~~~~~~~~~~~~~~~~ 1969 as 1969, - ~~~~~~~~~~~~~~~~~ 1970 as 1970, - ~~~~~~~~~~~~~~~~~ 1971 as 1971, - ~~~~~~~~~~~~~~~~~ 1972 as 1972, - ~~~~~~~~~~~~~~~~~ 1973 as 1973, - ~~~~~~~~~~~~~~~~~ 1974 as 1974, - ~~~~~~~~~~~~~~~~~ 1975 as 1975, - ~~~~~~~~~~~~~~~~~ 1976 as 1976, - ~~~~~~~~~~~~~~~~~ 1977 as 1977, - ~~~~~~~~~~~~~~~~~ 1978 as 1978, - ~~~~~~~~~~~~~~~~~ 1979 as 1979, - ~~~~~~~~~~~~~~~~~ 1980 as 1980, - ~~~~~~~~~~~~~~~~~ 1981 as 1981, - ~~~~~~~~~~~~~~~~~ 1982 as 1982, - ~~~~~~~~~~~~~~~~~ 1983 as 1983, - ~~~~~~~~~~~~~~~~~ 1984 as 1984, - ~~~~~~~~~~~~~~~~~ 1985 as 1985, - ~~~~~~~~~~~~~~~~~ 1986 as 1986, - ~~~~~~~~~~~~~~~~~ 1987 as 1987, - ~~~~~~~~~~~~~~~~~ 1988 as 1988, - ~~~~~~~~~~~~~~~~~ 1989 as 1989, - ~~~~~~~~~~~~~~~~~ 1990 as 1990, - ~~~~~~~~~~~~~~~~~ 1991 as 1991, - ~~~~~~~~~~~~~~~~~ 1992 as 1992, - ~~~~~~~~~~~~~~~~~ 1993 as 1993, - ~~~~~~~~~~~~~~~~~ 1994 as 1994, - ~~~~~~~~~~~~~~~~~ 1995 as 1995, - ~~~~~~~~~~~~~~~~~ 1996 as 1996, - ~~~~~~~~~~~~~~~~~ 1997 as 1997, - ~~~~~~~~~~~~~~~~~ 1998 as 1998, - ~~~~~~~~~~~~~~~~~ 1999 as 1999, - ~~~~~~~~~~~~~~~~~ 2000 as 2000, - ~~~~~~~~~~~~~~~~~ 2001 as 2001, - ~~~~~~~~~~~~~~~~~ 2002 as 2002, - ~~~~~~~~~~~~~~~~~ 2003 as 2003, - ~~~~~~~~~~~~~~~~~ 2004 as 2004, - ~~~~~~~~~~~~~~~~~ 2005 as 2005, - ~~~~~~~~~~~~~~~~~ 2006 as 2006, - ~~~~~~~~~~~~~~~~~ 2007 as 2007, - ~~~~~~~~~~~~~~~~~ 2008 as 2008, - ~~~~~~~~~~~~~~~~~ 2009 as 2009, - ~~~~~~~~~~~~~~~~~ 2010 as 2010, - ~~~~~~~~~~~~~~~~~ 2011 as 2011, - ~~~~~~~~~~~~~~~~~ 2012 as 2012, - ~~~~~~~~~~~~~~~~~ 2013 as 2013, - ~~~~~~~~~~~~~~~~~ 2014 as 2014, - ~~~~~~~~~~~~~~~~~ 2015 as 2015, - ~~~~~~~~~~~~~~~~~ 2016 as 2016, - ~~~~~~~~~~~~~~~~~ 2017 as 2017, - ~~~~~~~~~~~~~~~~~ 2018 as 2018, - ~~~~~~~~~~~~~~~~~ 2019 as 2019, - ~~~~~~~~~~~~~~~~~ 2020 as 2020, - ~~~~~~~~~~~~~~~~~ 2021 as 2021, - ~~~~~~~~~~~~~~~~~ 2022 as 2022, - ~~~~~~~~~~~~~~~~~ 2023 as 2023, - ~~~~~~~~~~~~~~~~~ 2024 as 2024, - ~~~~~~~~~~~~~~~~~ 2025 as 2025, - ~~~~~~~~~~~~~~~~~ 2026 as 2026, - ~~~~~~~~~~~~~~~~~ 2027 as 2027, - ~~~~~~~~~~~~~~~~~ 2028 as 2028, - ~~~~~~~~~~~~~~~~~ 2029 as 2029, - ~~~~~~~~~~~~~~~~~ 2030 as 2030, - ~~~~~~~~~~~~~~~~~ 2031 as 2031, - ~~~~~~~~~~~~~~~~~ 2032 as 2032, - ~~~~~~~~~~~~~~~~~ 2033 as 2033, - ~~~~~~~~~~~~~~~~~ 2034 as 2034, - ~~~~~~~~~~~~~~~~~ 2035 as 2035, - ~~~~~~~~~~~~~~~~~ 2036 as 2036, - ~~~~~~~~~~~~~~~~~ 2037 as 2037, - ~~~~~~~~~~~~~~~~~ 2038 as 2038, - ~~~~~~~~~~~~~~~~~ 2039 as 2039, - ~~~~~~~~~~~~~~~~~ 2040 as 2040, - ~~~~~~~~~~~~~~~~~ 2041 as 2041, - ~~~~~~~~~~~~~~~~~ 2042 as 2042, - ~~~~~~~~~~~~~~~~~ 2043 as 2043, - ~~~~~~~~~~~~~~~~~ 2044 as 2044, - ~~~~~~~~~~~~~~~~~ 2045 as 2045, - ~~~~~~~~~~~~~~~~~ 2046 as 2046, - ~~~~~~~~~~~~~~~~~ 2047 as 2047, - ~~~~~~~~~~~~~~~~~ 2048 as 2048, - ~~~~~~~~~~~~~~~~~ 2049 as 2049, - ~~~~~~~~~~~~~~~~~ 2050 as 2050, - ~~~~~~~~~~~~~~~~~ 2051 as 2051, - ~~~~~~~~~~~~~~~~~ 2052 as 2052, - ~~~~~~~~~~~~~~~~~ 2053 as 2053, - ~~~~~~~~~~~~~~~~~ 2054 as 2054, - ~~~~~~~~~~~~~~~~~ 2055 as 2055, - ~~~~~~~~~~~~~~~~~ 2056 as 2056, - ~~~~~~~~~~~~~~~~~ 2057 as 2057, - ~~~~~~~~~~~~~~~~~ 2058 as 2058, - ~~~~~~~~~~~~~~~~~ 2059 as 2059, - ~~~~~~~~~~~~~~~~~ 2060 as 2060, - ~~~~~~~~~~~~~~~~~ 2061 as 2061, - ~~~~~~~~~~~~~~~~~ 2062 as 2062, - ~~~~~~~~~~~~~~~~~ 2063 as 2063, - ~~~~~~~~~~~~~~~~~ 2064 as 2064, - ~~~~~~~~~~~~~~~~~ 2065 as 2065, - ~~~~~~~~~~~~~~~~~ 2066 as 2066, - ~~~~~~~~~~~~~~~~~ 2067 as 2067, - ~~~~~~~~~~~~~~~~~ 2068 as 2068, - ~~~~~~~~~~~~~~~~~ 2069 as 2069, - ~~~~~~~~~~~~~~~~~ 2070 as 2070, - ~~~~~~~~~~~~~~~~~ 2071 as 2071, - ~~~~~~~~~~~~~~~~~ 2072 as 2072, - ~~~~~~~~~~~~~~~~~ 2073 as 2073, - ~~~~~~~~~~~~~~~~~ 2074 as 2074, - ~~~~~~~~~~~~~~~~~ 2075 as 2075, - ~~~~~~~~~~~~~~~~~ 2076 as 2076, - ~~~~~~~~~~~~~~~~~ 2077 as 2077, - ~~~~~~~~~~~~~~~~~ 2078 as 2078, - ~~~~~~~~~~~~~~~~~ 2079 as 2079, - ~~~~~~~~~~~~~~~~~ 2080 as 2080, - ~~~~~~~~~~~~~~~~~ 2081 as 2081, - ~~~~~~~~~~~~~~~~~ 2082 as 2082, - ~~~~~~~~~~~~~~~~~ 2083 as 2083, - ~~~~~~~~~~~~~~~~~ 2084 as 2084, - ~~~~~~~~~~~~~~~~~ 2085 as 2085, - ~~~~~~~~~~~~~~~~~ 2086 as 2086, - ~~~~~~~~~~~~~~~~~ 2087 as 2087, - ~~~~~~~~~~~~~~~~~ 2088 as 2088, - ~~~~~~~~~~~~~~~~~ 2089 as 2089, - ~~~~~~~~~~~~~~~~~ 2090 as 2090, - ~~~~~~~~~~~~~~~~~ 2091 as 2091, - ~~~~~~~~~~~~~~~~~ 2092 as 2092, - ~~~~~~~~~~~~~~~~~ 2093 as 2093, - ~~~~~~~~~~~~~~~~~ 2094 as 2094, - ~~~~~~~~~~~~~~~~~ 2095 as 2095, - ~~~~~~~~~~~~~~~~~ 2096 as 2096, - ~~~~~~~~~~~~~~~~~ 2097 as 2097, - ~~~~~~~~~~~~~~~~~ 2098 as 2098, - ~~~~~~~~~~~~~~~~~ 2099 as 2099, - ~~~~~~~~~~~~~~~~~ 2100 as 2100, - ~~~~~~~~~~~~~~~~~ 2101 as 2101, - ~~~~~~~~~~~~~~~~~ 2102 as 2102, - ~~~~~~~~~~~~~~~~~ 2103 as 2103, - ~~~~~~~~~~~~~~~~~ 2104 as 2104, - ~~~~~~~~~~~~~~~~~ 2105 as 2105, - ~~~~~~~~~~~~~~~~~ 2106 as 2106, - ~~~~~~~~~~~~~~~~~ 2107 as 2107, - ~~~~~~~~~~~~~~~~~ 2108 as 2108, - ~~~~~~~~~~~~~~~~~ 2109 as 2109, - ~~~~~~~~~~~~~~~~~ 2110 as 2110, - ~~~~~~~~~~~~~~~~~ 2111 as 2111, - ~~~~~~~~~~~~~~~~~ 2112 as 2112, - ~~~~~~~~~~~~~~~~~ 2113 as 2113, - ~~~~~~~~~~~~~~~~~ 2114 as 2114, - ~~~~~~~~~~~~~~~~~ 2115 as 2115, - ~~~~~~~~~~~~~~~~~ 2116 as 2116, - ~~~~~~~~~~~~~~~~~ 2117 as 2117, - ~~~~~~~~~~~~~~~~~ 2118 as 2118, - ~~~~~~~~~~~~~~~~~ 2119 as 2119, - ~~~~~~~~~~~~~~~~~ 2120 as 2120, - ~~~~~~~~~~~~~~~~~ 2121 as 2121, - ~~~~~~~~~~~~~~~~~ 2122 as 2122, - ~~~~~~~~~~~~~~~~~ 2123 as 2123, - ~~~~~~~~~~~~~~~~~ 2124 as 2124, - ~~~~~~~~~~~~~~~~~ 2125 as 2125, - ~~~~~~~~~~~~~~~~~ 2126 as 2126, - ~~~~~~~~~~~~~~~~~ 2127 as 2127, - ~~~~~~~~~~~~~~~~~ 2128 as 2128, - ~~~~~~~~~~~~~~~~~ 2129 as 2129, - ~~~~~~~~~~~~~~~~~ 2130 as 2130, - ~~~~~~~~~~~~~~~~~ 2131 as 2131, - ~~~~~~~~~~~~~~~~~ 2132 as 2132, - ~~~~~~~~~~~~~~~~~ 2133 as 2133, - ~~~~~~~~~~~~~~~~~ 2134 as 2134, - ~~~~~~~~~~~~~~~~~ 2135 as 2135, - ~~~~~~~~~~~~~~~~~ 2136 as 2136, - ~~~~~~~~~~~~~~~~~ 2137 as 2137, - ~~~~~~~~~~~~~~~~~ 2138 as 2138, - ~~~~~~~~~~~~~~~~~ 2139 as 2139, - ~~~~~~~~~~~~~~~~~ 2140 as 2140, - ~~~~~~~~~~~~~~~~~ 2141 as 2141, - ~~~~~~~~~~~~~~~~~ 2142 as 2142, - ~~~~~~~~~~~~~~~~~ 2143 as 2143, - ~~~~~~~~~~~~~~~~~ 2144 as 2144, - ~~~~~~~~~~~~~~~~~ 2145 as 2145, - ~~~~~~~~~~~~~~~~~ 2146 as 2146, - ~~~~~~~~~~~~~~~~~ 2147 as 2147, - ~~~~~~~~~~~~~~~~~ 2148 as 2148, - ~~~~~~~~~~~~~~~~~ 2149 as 2149, - ~~~~~~~~~~~~~~~~~ 2150 as 2150, - ~~~~~~~~~~~~~~~~~ 2151 as 2151, - ~~~~~~~~~~~~~~~~~ 2152 as 2152, - ~~~~~~~~~~~~~~~~~ 2153 as 2153, - ~~~~~~~~~~~~~~~~~ 2154 as 2154, - ~~~~~~~~~~~~~~~~~ 2155 as 2155, - ~~~~~~~~~~~~~~~~~ 2156 as 2156, - ~~~~~~~~~~~~~~~~~ 2157 as 2157, - ~~~~~~~~~~~~~~~~~ 2158 as 2158, - ~~~~~~~~~~~~~~~~~ 2159 as 2159, - ~~~~~~~~~~~~~~~~~ 2160 as 2160, - ~~~~~~~~~~~~~~~~~ 2161 as 2161, - ~~~~~~~~~~~~~~~~~ 2162 as 2162, - ~~~~~~~~~~~~~~~~~ 2163 as 2163, - ~~~~~~~~~~~~~~~~~ 2164 as 2164, - ~~~~~~~~~~~~~~~~~ 2165 as 2165, - ~~~~~~~~~~~~~~~~~ 2166 as 2166, - ~~~~~~~~~~~~~~~~~ 2167 as 2167, - ~~~~~~~~~~~~~~~~~ 2168 as 2168, - ~~~~~~~~~~~~~~~~~ 2169 as 2169, - ~~~~~~~~~~~~~~~~~ 2170 as 2170, - ~~~~~~~~~~~~~~~~~ 2171 as 2171, - ~~~~~~~~~~~~~~~~~ 2172 as 2172, - ~~~~~~~~~~~~~~~~~ 2173 as 2173, - ~~~~~~~~~~~~~~~~~ 2174 as 2174, - ~~~~~~~~~~~~~~~~~ 2175 as 2175, - ~~~~~~~~~~~~~~~~~ 2176 as 2176, - ~~~~~~~~~~~~~~~~~ 2177 as 2177, - ~~~~~~~~~~~~~~~~~ 2178 as 2178, - ~~~~~~~~~~~~~~~~~ 2179 as 2179, - ~~~~~~~~~~~~~~~~~ 2180 as 2180, - ~~~~~~~~~~~~~~~~~ 2181 as 2181, - ~~~~~~~~~~~~~~~~~ 2182 as 2182, - ~~~~~~~~~~~~~~~~~ 2183 as 2183, - ~~~~~~~~~~~~~~~~~ 2184 as 2184, - ~~~~~~~~~~~~~~~~~ 2185 as 2185, - ~~~~~~~~~~~~~~~~~ 2186 as 2186, - ~~~~~~~~~~~~~~~~~ 2187 as 2187, - ~~~~~~~~~~~~~~~~~ 2188 as 2188, - ~~~~~~~~~~~~~~~~~ 2189 as 2189, - ~~~~~~~~~~~~~~~~~ 2190 as 2190, - ~~~~~~~~~~~~~~~~~ 2191 as 2191, - ~~~~~~~~~~~~~~~~~ 2192 as 2192, - ~~~~~~~~~~~~~~~~~ 2193 as 2193, - ~~~~~~~~~~~~~~~~~ 2194 as 2194, - ~~~~~~~~~~~~~~~~~ 2195 as 2195, - ~~~~~~~~~~~~~~~~~ 2196 as 2196, - ~~~~~~~~~~~~~~~~~ 2197 as 2197, - ~~~~~~~~~~~~~~~~~ 2198 as 2198, - ~~~~~~~~~~~~~~~~~ 2199 as 2199, - ~~~~~~~~~~~~~~~~~ 2200 as 2200, - ~~~~~~~~~~~~~~~~~ 2201 as 2201, - ~~~~~~~~~~~~~~~~~ 2202 as 2202, - ~~~~~~~~~~~~~~~~~ 2203 as 2203, - ~~~~~~~~~~~~~~~~~ 2204 as 2204, - ~~~~~~~~~~~~~~~~~ 2205 as 2205, - ~~~~~~~~~~~~~~~~~ 2206 as 2206, - ~~~~~~~~~~~~~~~~~ 2207 as 2207, - ~~~~~~~~~~~~~~~~~ 2208 as 2208, - ~~~~~~~~~~~~~~~~~ 2209 as 2209, - ~~~~~~~~~~~~~~~~~ 2210 as 2210, - ~~~~~~~~~~~~~~~~~ 2211 as 2211, - ~~~~~~~~~~~~~~~~~ 2212 as 2212, - ~~~~~~~~~~~~~~~~~ 2213 as 2213, - ~~~~~~~~~~~~~~~~~ 2214 as 2214, - ~~~~~~~~~~~~~~~~~ 2215 as 2215, - ~~~~~~~~~~~~~~~~~ 2216 as 2216, - ~~~~~~~~~~~~~~~~~ 2217 as 2217, - ~~~~~~~~~~~~~~~~~ 2218 as 2218, - ~~~~~~~~~~~~~~~~~ 2219 as 2219, - ~~~~~~~~~~~~~~~~~ 2220 as 2220, - ~~~~~~~~~~~~~~~~~ 2221 as 2221, - ~~~~~~~~~~~~~~~~~ 2222 as 2222, - ~~~~~~~~~~~~~~~~~ 2223 as 2223, - ~~~~~~~~~~~~~~~~~ 2224 as 2224, - ~~~~~~~~~~~~~~~~~ 2225 as 2225, - ~~~~~~~~~~~~~~~~~ 2226 as 2226, - ~~~~~~~~~~~~~~~~~ 2227 as 2227, - ~~~~~~~~~~~~~~~~~ 2228 as 2228, - ~~~~~~~~~~~~~~~~~ 2229 as 2229, - ~~~~~~~~~~~~~~~~~ 2230 as 2230, - ~~~~~~~~~~~~~~~~~ 2231 as 2231, - ~~~~~~~~~~~~~~~~~ 2232 as 2232, - ~~~~~~~~~~~~~~~~~ 2233 as 2233, - ~~~~~~~~~~~~~~~~~ 2234 as 2234, - ~~~~~~~~~~~~~~~~~ 2235 as 2235, - ~~~~~~~~~~~~~~~~~ 2236 as 2236, - ~~~~~~~~~~~~~~~~~ 2237 as 2237, - ~~~~~~~~~~~~~~~~~ 2238 as 2238, - ~~~~~~~~~~~~~~~~~ 2239 as 2239, - ~~~~~~~~~~~~~~~~~ 2240 as 2240, - ~~~~~~~~~~~~~~~~~ 2241 as 2241, - ~~~~~~~~~~~~~~~~~ 2242 as 2242, - ~~~~~~~~~~~~~~~~~ 2243 as 2243, - ~~~~~~~~~~~~~~~~~ 2244 as 2244, - ~~~~~~~~~~~~~~~~~ 2245 as 2245, - ~~~~~~~~~~~~~~~~~ 2246 as 2246, - ~~~~~~~~~~~~~~~~~ 2247 as 2247, - ~~~~~~~~~~~~~~~~~ 2248 as 2248, - ~~~~~~~~~~~~~~~~~ 2249 as 2249, - ~~~~~~~~~~~~~~~~~ 2250 as 2250, - ~~~~~~~~~~~~~~~~~ 2251 as 2251, - ~~~~~~~~~~~~~~~~~ 2252 as 2252, - ~~~~~~~~~~~~~~~~~ 2253 as 2253, - ~~~~~~~~~~~~~~~~~ 2254 as 2254, - ~~~~~~~~~~~~~~~~~ 2255 as 2255, - ~~~~~~~~~~~~~~~~~ 2256 as 2256, - ~~~~~~~~~~~~~~~~~ 2257 as 2257, - ~~~~~~~~~~~~~~~~~ 2258 as 2258, - ~~~~~~~~~~~~~~~~~ 2259 as 2259, - ~~~~~~~~~~~~~~~~~ 2260 as 2260, - ~~~~~~~~~~~~~~~~~ 2261 as 2261, - ~~~~~~~~~~~~~~~~~ 2262 as 2262, - ~~~~~~~~~~~~~~~~~ 2263 as 2263, - ~~~~~~~~~~~~~~~~~ 2264 as 2264, - ~~~~~~~~~~~~~~~~~ 2265 as 2265, - ~~~~~~~~~~~~~~~~~ 2266 as 2266, - ~~~~~~~~~~~~~~~~~ 2267 as 2267, - ~~~~~~~~~~~~~~~~~ 2268 as 2268, - ~~~~~~~~~~~~~~~~~ 2269 as 2269, - ~~~~~~~~~~~~~~~~~ 2270 as 2270, - ~~~~~~~~~~~~~~~~~ 2271 as 2271, - ~~~~~~~~~~~~~~~~~ 2272 as 2272, - ~~~~~~~~~~~~~~~~~ 2273 as 2273, - ~~~~~~~~~~~~~~~~~ 2274 as 2274, - ~~~~~~~~~~~~~~~~~ 2275 as 2275, - ~~~~~~~~~~~~~~~~~ 2276 as 2276, - ~~~~~~~~~~~~~~~~~ 2277 as 2277, - ~~~~~~~~~~~~~~~~~ 2278 as 2278, - ~~~~~~~~~~~~~~~~~ 2279 as 2279, - ~~~~~~~~~~~~~~~~~ 2280 as 2280, - ~~~~~~~~~~~~~~~~~ 2281 as 2281, - ~~~~~~~~~~~~~~~~~ 2282 as 2282, - ~~~~~~~~~~~~~~~~~ 2283 as 2283, - ~~~~~~~~~~~~~~~~~ 2284 as 2284, - ~~~~~~~~~~~~~~~~~ 2285 as 2285, - ~~~~~~~~~~~~~~~~~ 2286 as 2286, - ~~~~~~~~~~~~~~~~~ 2287 as 2287, - ~~~~~~~~~~~~~~~~~ 2288 as 2288, - ~~~~~~~~~~~~~~~~~ 2289 as 2289, - ~~~~~~~~~~~~~~~~~ 2290 as 2290, - ~~~~~~~~~~~~~~~~~ 2291 as 2291, - ~~~~~~~~~~~~~~~~~ 2292 as 2292, - ~~~~~~~~~~~~~~~~~ 2293 as 2293, - ~~~~~~~~~~~~~~~~~ 2294 as 2294, - ~~~~~~~~~~~~~~~~~ 2295 as 2295, - ~~~~~~~~~~~~~~~~~ 2296 as 2296, - ~~~~~~~~~~~~~~~~~ 2297 as 2297, - ~~~~~~~~~~~~~~~~~ 2298 as 2298, - ~~~~~~~~~~~~~~~~~ 2299 as 2299, - ~~~~~~~~~~~~~~~~~ 2300 as 2300, - ~~~~~~~~~~~~~~~~~ 2301 as 2301, - ~~~~~~~~~~~~~~~~~ 2302 as 2302, - ~~~~~~~~~~~~~~~~~ 2303 as 2303, - ~~~~~~~~~~~~~~~~~ 2304 as 2304, - ~~~~~~~~~~~~~~~~~ 2305 as 2305, - ~~~~~~~~~~~~~~~~~ 2306 as 2306, - ~~~~~~~~~~~~~~~~~ 2307 as 2307, - ~~~~~~~~~~~~~~~~~ 2308 as 2308, - ~~~~~~~~~~~~~~~~~ 2309 as 2309, - ~~~~~~~~~~~~~~~~~ 2310 as 2310, - ~~~~~~~~~~~~~~~~~ 2311 as 2311, - ~~~~~~~~~~~~~~~~~ 2312 as 2312, - ~~~~~~~~~~~~~~~~~ 2313 as 2313, - ~~~~~~~~~~~~~~~~~ 2314 as 2314, - ~~~~~~~~~~~~~~~~~ 2315 as 2315, - ~~~~~~~~~~~~~~~~~ 2316 as 2316, - ~~~~~~~~~~~~~~~~~ 2317 as 2317, - ~~~~~~~~~~~~~~~~~ 2318 as 2318, - ~~~~~~~~~~~~~~~~~ 2319 as 2319, - ~~~~~~~~~~~~~~~~~ 2320 as 2320, - ~~~~~~~~~~~~~~~~~ 2321 as 2321, - ~~~~~~~~~~~~~~~~~ 2322 as 2322, - ~~~~~~~~~~~~~~~~~ 2323 as 2323, - ~~~~~~~~~~~~~~~~~ 2324 as 2324, - ~~~~~~~~~~~~~~~~~ 2325 as 2325, - ~~~~~~~~~~~~~~~~~ 2326 as 2326, - ~~~~~~~~~~~~~~~~~ 2327 as 2327, - ~~~~~~~~~~~~~~~~~ 2328 as 2328, - ~~~~~~~~~~~~~~~~~ 2329 as 2329, - ~~~~~~~~~~~~~~~~~ 2330 as 2330, - ~~~~~~~~~~~~~~~~~ 2331 as 2331, - ~~~~~~~~~~~~~~~~~ 2332 as 2332, - ~~~~~~~~~~~~~~~~~ 2333 as 2333, - ~~~~~~~~~~~~~~~~~ 2334 as 2334, - ~~~~~~~~~~~~~~~~~ 2335 as 2335, - ~~~~~~~~~~~~~~~~~ 2336 as 2336, - ~~~~~~~~~~~~~~~~~ 2337 as 2337, - ~~~~~~~~~~~~~~~~~ 2338 as 2338, - ~~~~~~~~~~~~~~~~~ 2339 as 2339, - ~~~~~~~~~~~~~~~~~ 2340 as 2340, - ~~~~~~~~~~~~~~~~~ 2341 as 2341, - ~~~~~~~~~~~~~~~~~ 2342 as 2342, - ~~~~~~~~~~~~~~~~~ 2343 as 2343, - ~~~~~~~~~~~~~~~~~ 2344 as 2344, - ~~~~~~~~~~~~~~~~~ 2345 as 2345, - ~~~~~~~~~~~~~~~~~ 2346 as 2346, - ~~~~~~~~~~~~~~~~~ 2347 as 2347, - ~~~~~~~~~~~~~~~~~ 2348 as 2348, - ~~~~~~~~~~~~~~~~~ 2349 as 2349, - ~~~~~~~~~~~~~~~~~ 2350 as 2350, - ~~~~~~~~~~~~~~~~~ 2351 as 2351, - ~~~~~~~~~~~~~~~~~ 2352 as 2352, - ~~~~~~~~~~~~~~~~~ 2353 as 2353, - ~~~~~~~~~~~~~~~~~ 2354 as 2354, - ~~~~~~~~~~~~~~~~~ 2355 as 2355, - ~~~~~~~~~~~~~~~~~ 2356 as 2356, - ~~~~~~~~~~~~~~~~~ 2357 as 2357, - ~~~~~~~~~~~~~~~~~ 2358 as 2358, - ~~~~~~~~~~~~~~~~~ 2359 as 2359, - ~~~~~~~~~~~~~~~~~ 2360 as 2360, - ~~~~~~~~~~~~~~~~~ 2361 as 2361, - ~~~~~~~~~~~~~~~~~ 2362 as 2362, - ~~~~~~~~~~~~~~~~~ 2363 as 2363, - ~~~~~~~~~~~~~~~~~ 2364 as 2364, - ~~~~~~~~~~~~~~~~~ 2365 as 2365, - ~~~~~~~~~~~~~~~~~ 2366 as 2366, - ~~~~~~~~~~~~~~~~~ 2367 as 2367, - ~~~~~~~~~~~~~~~~~ 2368 as 2368, - ~~~~~~~~~~~~~~~~~ 2369 as 2369, - ~~~~~~~~~~~~~~~~~ 2370 as 2370, - ~~~~~~~~~~~~~~~~~ 2371 as 2371, - ~~~~~~~~~~~~~~~~~ 2372 as 2372, - ~~~~~~~~~~~~~~~~~ 2373 as 2373, - ~~~~~~~~~~~~~~~~~ 2374 as 2374, - ~~~~~~~~~~~~~~~~~ 2375 as 2375, - ~~~~~~~~~~~~~~~~~ 2376 as 2376, - ~~~~~~~~~~~~~~~~~ 2377 as 2377, - ~~~~~~~~~~~~~~~~~ 2378 as 2378, - ~~~~~~~~~~~~~~~~~ 2379 as 2379, - ~~~~~~~~~~~~~~~~~ 2380 as 2380, - ~~~~~~~~~~~~~~~~~ 2381 as 2381, - ~~~~~~~~~~~~~~~~~ 2382 as 2382, - ~~~~~~~~~~~~~~~~~ 2383 as 2383, - ~~~~~~~~~~~~~~~~~ 2384 as 2384, - ~~~~~~~~~~~~~~~~~ 2385 as 2385, - ~~~~~~~~~~~~~~~~~ 2386 as 2386, - ~~~~~~~~~~~~~~~~~ 2387 as 2387, - ~~~~~~~~~~~~~~~~~ 2388 as 2388, - ~~~~~~~~~~~~~~~~~ 2389 as 2389, - ~~~~~~~~~~~~~~~~~ 2390 as 2390, - ~~~~~~~~~~~~~~~~~ 2391 as 2391, - ~~~~~~~~~~~~~~~~~ 2392 as 2392, - ~~~~~~~~~~~~~~~~~ 2393 as 2393, - ~~~~~~~~~~~~~~~~~ 2394 as 2394, - ~~~~~~~~~~~~~~~~~ 2395 as 2395, - ~~~~~~~~~~~~~~~~~ 2396 as 2396, - ~~~~~~~~~~~~~~~~~ 2397 as 2397, - ~~~~~~~~~~~~~~~~~ 2398 as 2398, - ~~~~~~~~~~~~~~~~~ 2399 as 2399, - ~~~~~~~~~~~~~~~~~ 2400 as 2400, - ~~~~~~~~~~~~~~~~~ 2401 as 2401, - ~~~~~~~~~~~~~~~~~ 2402 as 2402, - ~~~~~~~~~~~~~~~~~ 2403 as 2403, - ~~~~~~~~~~~~~~~~~ 2404 as 2404, - ~~~~~~~~~~~~~~~~~ 2405 as 2405, - ~~~~~~~~~~~~~~~~~ 2406 as 2406, - ~~~~~~~~~~~~~~~~~ 2407 as 2407, - ~~~~~~~~~~~~~~~~~ 2408 as 2408, - ~~~~~~~~~~~~~~~~~ 2409 as 2409, - ~~~~~~~~~~~~~~~~~ 2410 as 2410, - ~~~~~~~~~~~~~~~~~ 2411 as 2411, - ~~~~~~~~~~~~~~~~~ 2412 as 2412, - ~~~~~~~~~~~~~~~~~ 2413 as 2413, - ~~~~~~~~~~~~~~~~~ 2414 as 2414, - ~~~~~~~~~~~~~~~~~ 2415 as 2415, - ~~~~~~~~~~~~~~~~~ 2416 as 2416, - ~~~~~~~~~~~~~~~~~ 2417 as 2417, - ~~~~~~~~~~~~~~~~~ 2418 as 2418, - ~~~~~~~~~~~~~~~~~ 2419 as 2419, - ~~~~~~~~~~~~~~~~~ 2420 as 2420, - ~~~~~~~~~~~~~~~~~ 2421 as 2421, - ~~~~~~~~~~~~~~~~~ 2422 as 2422, - ~~~~~~~~~~~~~~~~~ 2423 as 2423, - ~~~~~~~~~~~~~~~~~ 2424 as 2424, - ~~~~~~~~~~~~~~~~~ 2425 as 2425, - ~~~~~~~~~~~~~~~~~ 2426 as 2426, - ~~~~~~~~~~~~~~~~~ 2427 as 2427, - ~~~~~~~~~~~~~~~~~ 2428 as 2428, - ~~~~~~~~~~~~~~~~~ 2429 as 2429, - ~~~~~~~~~~~~~~~~~ 2430 as 2430, - ~~~~~~~~~~~~~~~~~ 2431 as 2431, - ~~~~~~~~~~~~~~~~~ 2432 as 2432, - ~~~~~~~~~~~~~~~~~ 2433 as 2433, - ~~~~~~~~~~~~~~~~~ 2434 as 2434, - ~~~~~~~~~~~~~~~~~ 2435 as 2435, - ~~~~~~~~~~~~~~~~~ 2436 as 2436, - ~~~~~~~~~~~~~~~~~ 2437 as 2437, - ~~~~~~~~~~~~~~~~~ 2438 as 2438, - ~~~~~~~~~~~~~~~~~ 2439 as 2439, - ~~~~~~~~~~~~~~~~~ 2440 as 2440, - ~~~~~~~~~~~~~~~~~ 2441 as 2441, - ~~~~~~~~~~~~~~~~~ 2442 as 2442, - ~~~~~~~~~~~~~~~~~ 2443 as 2443, - ~~~~~~~~~~~~~~~~~ 2444 as 2444, - ~~~~~~~~~~~~~~~~~ 2445 as 2445, - ~~~~~~~~~~~~~~~~~ 2446 as 2446, - ~~~~~~~~~~~~~~~~~ 2447 as 2447, - ~~~~~~~~~~~~~~~~~ 2448 as 2448, - ~~~~~~~~~~~~~~~~~ 2449 as 2449, - ~~~~~~~~~~~~~~~~~ 2450 as 2450, - ~~~~~~~~~~~~~~~~~ 2451 as 2451, - ~~~~~~~~~~~~~~~~~ 2452 as 2452, - ~~~~~~~~~~~~~~~~~ 2453 as 2453, - ~~~~~~~~~~~~~~~~~ 2454 as 2454, - ~~~~~~~~~~~~~~~~~ 2455 as 2455, - ~~~~~~~~~~~~~~~~~ 2456 as 2456, - ~~~~~~~~~~~~~~~~~ 2457 as 2457, - ~~~~~~~~~~~~~~~~~ 2458 as 2458, - ~~~~~~~~~~~~~~~~~ 2459 as 2459, - ~~~~~~~~~~~~~~~~~ 2460 as 2460, - ~~~~~~~~~~~~~~~~~ 2461 as 2461, - ~~~~~~~~~~~~~~~~~ 2462 as 2462, - ~~~~~~~~~~~~~~~~~ 2463 as 2463, - ~~~~~~~~~~~~~~~~~ 2464 as 2464, - ~~~~~~~~~~~~~~~~~ 2465 as 2465, - ~~~~~~~~~~~~~~~~~ 2466 as 2466, - ~~~~~~~~~~~~~~~~~ 2467 as 2467, - ~~~~~~~~~~~~~~~~~ 2468 as 2468, - ~~~~~~~~~~~~~~~~~ 2469 as 2469, - ~~~~~~~~~~~~~~~~~ 2470 as 2470, - ~~~~~~~~~~~~~~~~~ 2471 as 2471, - ~~~~~~~~~~~~~~~~~ 2472 as 2472, - ~~~~~~~~~~~~~~~~~ 2473 as 2473, - ~~~~~~~~~~~~~~~~~ 2474 as 2474, - ~~~~~~~~~~~~~~~~~ 2475 as 2475, - ~~~~~~~~~~~~~~~~~ 2476 as 2476, - ~~~~~~~~~~~~~~~~~ 2477 as 2477, - ~~~~~~~~~~~~~~~~~ 2478 as 2478, - ~~~~~~~~~~~~~~~~~ 2479 as 2479, - ~~~~~~~~~~~~~~~~~ 2480 as 2480, - ~~~~~~~~~~~~~~~~~ 2481 as 2481, - ~~~~~~~~~~~~~~~~~ 2482 as 2482, - ~~~~~~~~~~~~~~~~~ 2483 as 2483, - ~~~~~~~~~~~~~~~~~ 2484 as 2484, - ~~~~~~~~~~~~~~~~~ 2485 as 2485, - ~~~~~~~~~~~~~~~~~ 2486 as 2486, - ~~~~~~~~~~~~~~~~~ 2487 as 2487, - ~~~~~~~~~~~~~~~~~ 2488 as 2488, - ~~~~~~~~~~~~~~~~~ 2489 as 2489, - ~~~~~~~~~~~~~~~~~ 2490 as 2490, - ~~~~~~~~~~~~~~~~~ 2491 as 2491, - ~~~~~~~~~~~~~~~~~ 2492 as 2492, - ~~~~~~~~~~~~~~~~~ 2493 as 2493, - ~~~~~~~~~~~~~~~~~ 2494 as 2494, - ~~~~~~~~~~~~~~~~~ 2495 as 2495, - ~~~~~~~~~~~~~~~~~ 2496 as 2496, - ~~~~~~~~~~~~~~~~~ 2497 as 2497, - ~~~~~~~~~~~~~~~~~ 2498 as 2498, - ~~~~~~~~~~~~~~~~~ 2499 as 2499, - ~~~~~~~~~~~~~~~~~ 2500 as 2500, - ~~~~~~~~~~~~~~~~~ 2501 as 2501, - ~~~~~~~~~~~~~~~~~ 2502 as 2502, - ~~~~~~~~~~~~~~~~~ 2503 as 2503, - ~~~~~~~~~~~~~~~~~ 2504 as 2504, - ~~~~~~~~~~~~~~~~~ 2505 as 2505, - ~~~~~~~~~~~~~~~~~ 2506 as 2506, - ~~~~~~~~~~~~~~~~~ 2507 as 2507, - ~~~~~~~~~~~~~~~~~ 2508 as 2508, - ~~~~~~~~~~~~~~~~~ 2509 as 2509, - ~~~~~~~~~~~~~~~~~ 2510 as 2510, - ~~~~~~~~~~~~~~~~~ 2511 as 2511, - ~~~~~~~~~~~~~~~~~ 2512 as 2512, - ~~~~~~~~~~~~~~~~~ 2513 as 2513, - ~~~~~~~~~~~~~~~~~ 2514 as 2514, - ~~~~~~~~~~~~~~~~~ 2515 as 2515, - ~~~~~~~~~~~~~~~~~ 2516 as 2516, - ~~~~~~~~~~~~~~~~~ 2517 as 2517, - ~~~~~~~~~~~~~~~~~ 2518 as 2518, - ~~~~~~~~~~~~~~~~~ 2519 as 2519, - ~~~~~~~~~~~~~~~~~ 2520 as 2520, - ~~~~~~~~~~~~~~~~~ 2521 as 2521, - ~~~~~~~~~~~~~~~~~ 2522 as 2522, - ~~~~~~~~~~~~~~~~~ 2523 as 2523, - ~~~~~~~~~~~~~~~~~ 2524 as 2524, - ~~~~~~~~~~~~~~~~~ 2525 as 2525, - ~~~~~~~~~~~~~~~~~ 2526 as 2526, - ~~~~~~~~~~~~~~~~~ 2527 as 2527, - ~~~~~~~~~~~~~~~~~ 2528 as 2528, - ~~~~~~~~~~~~~~~~~ 2529 as 2529, - ~~~~~~~~~~~~~~~~~ 2530 as 2530, - ~~~~~~~~~~~~~~~~~ 2531 as 2531, - ~~~~~~~~~~~~~~~~~ 2532 as 2532, - ~~~~~~~~~~~~~~~~~ 2533 as 2533, - ~~~~~~~~~~~~~~~~~ 2534 as 2534, - ~~~~~~~~~~~~~~~~~ 2535 as 2535, - ~~~~~~~~~~~~~~~~~ 2536 as 2536, - ~~~~~~~~~~~~~~~~~ 2537 as 2537, - ~~~~~~~~~~~~~~~~~ 2538 as 2538, - ~~~~~~~~~~~~~~~~~ 2539 as 2539, - ~~~~~~~~~~~~~~~~~ 2540 as 2540, - ~~~~~~~~~~~~~~~~~ 2541 as 2541, - ~~~~~~~~~~~~~~~~~ 2542 as 2542, - ~~~~~~~~~~~~~~~~~ 2543 as 2543, - ~~~~~~~~~~~~~~~~~ 2544 as 2544, - ~~~~~~~~~~~~~~~~~ 2545 as 2545, - ~~~~~~~~~~~~~~~~~ 2546 as 2546, - ~~~~~~~~~~~~~~~~~ 2547 as 2547, - ~~~~~~~~~~~~~~~~~ 2548 as 2548, - ~~~~~~~~~~~~~~~~~ 2549 as 2549, - ~~~~~~~~~~~~~~~~~ 2550 as 2550, - ~~~~~~~~~~~~~~~~~ 2551 as 2551, - ~~~~~~~~~~~~~~~~~ 2552 as 2552, - ~~~~~~~~~~~~~~~~~ 2553 as 2553, - ~~~~~~~~~~~~~~~~~ 2554 as 2554, - ~~~~~~~~~~~~~~~~~ 2555 as 2555, - ~~~~~~~~~~~~~~~~~ 2556 as 2556, - ~~~~~~~~~~~~~~~~~ 2557 as 2557, - ~~~~~~~~~~~~~~~~~ 2558 as 2558, - ~~~~~~~~~~~~~~~~~ 2559 as 2559, - ~~~~~~~~~~~~~~~~~ 2560 as 2560, - ~~~~~~~~~~~~~~~~~ 2561 as 2561, - ~~~~~~~~~~~~~~~~~ 2562 as 2562, - ~~~~~~~~~~~~~~~~~ 2563 as 2563, - ~~~~~~~~~~~~~~~~~ 2564 as 2564, - ~~~~~~~~~~~~~~~~~ 2565 as 2565, - ~~~~~~~~~~~~~~~~~ 2566 as 2566, - ~~~~~~~~~~~~~~~~~ 2567 as 2567, - ~~~~~~~~~~~~~~~~~ 2568 as 2568, - ~~~~~~~~~~~~~~~~~ 2569 as 2569, - ~~~~~~~~~~~~~~~~~ 2570 as 2570, - ~~~~~~~~~~~~~~~~~ 2571 as 2571, - ~~~~~~~~~~~~~~~~~ 2572 as 2572, - ~~~~~~~~~~~~~~~~~ 2573 as 2573, - ~~~~~~~~~~~~~~~~~ 2574 as 2574, - ~~~~~~~~~~~~~~~~~ 2575 as 2575, - ~~~~~~~~~~~~~~~~~ 2576 as 2576, - ~~~~~~~~~~~~~~~~~ 2577 as 2577, - ~~~~~~~~~~~~~~~~~ 2578 as 2578, - ~~~~~~~~~~~~~~~~~ 2579 as 2579, - ~~~~~~~~~~~~~~~~~ 2580 as 2580, - ~~~~~~~~~~~~~~~~~ 2581 as 2581, - ~~~~~~~~~~~~~~~~~ 2582 as 2582, - ~~~~~~~~~~~~~~~~~ 2583 as 2583, - ~~~~~~~~~~~~~~~~~ 2584 as 2584, - ~~~~~~~~~~~~~~~~~ 2585 as 2585, - ~~~~~~~~~~~~~~~~~ 2586 as 2586, - ~~~~~~~~~~~~~~~~~ 2587 as 2587, - ~~~~~~~~~~~~~~~~~ 2588 as 2588, - ~~~~~~~~~~~~~~~~~ 2589 as 2589, - ~~~~~~~~~~~~~~~~~ 2590 as 2590, - ~~~~~~~~~~~~~~~~~ 2591 as 2591, - ~~~~~~~~~~~~~~~~~ 2592 as 2592, - ~~~~~~~~~~~~~~~~~ 2593 as 2593, - ~~~~~~~~~~~~~~~~~ 2594 as 2594, - ~~~~~~~~~~~~~~~~~ 2595 as 2595, - ~~~~~~~~~~~~~~~~~ 2596 as 2596, - ~~~~~~~~~~~~~~~~~ 2597 as 2597, - ~~~~~~~~~~~~~~~~~ 2598 as 2598, - ~~~~~~~~~~~~~~~~~ 2599 as 2599, - ~~~~~~~~~~~~~~~~~ 2600 as 2600, - ~~~~~~~~~~~~~~~~~ 2601 as 2601, - ~~~~~~~~~~~~~~~~~ 2602 as 2602, - ~~~~~~~~~~~~~~~~~ 2603 as 2603, - ~~~~~~~~~~~~~~~~~ 2604 as 2604, - ~~~~~~~~~~~~~~~~~ 2605 as 2605, - ~~~~~~~~~~~~~~~~~ 2606 as 2606, - ~~~~~~~~~~~~~~~~~ 2607 as 2607, - ~~~~~~~~~~~~~~~~~ 2608 as 2608, - ~~~~~~~~~~~~~~~~~ 2609 as 2609, - ~~~~~~~~~~~~~~~~~ 2610 as 2610, - ~~~~~~~~~~~~~~~~~ 2611 as 2611, - ~~~~~~~~~~~~~~~~~ 2612 as 2612, - ~~~~~~~~~~~~~~~~~ 2613 as 2613, - ~~~~~~~~~~~~~~~~~ 2614 as 2614, - ~~~~~~~~~~~~~~~~~ 2615 as 2615, - ~~~~~~~~~~~~~~~~~ 2616 as 2616, - ~~~~~~~~~~~~~~~~~ 2617 as 2617, - ~~~~~~~~~~~~~~~~~ 2618 as 2618, - ~~~~~~~~~~~~~~~~~ 2619 as 2619, - ~~~~~~~~~~~~~~~~~ 2620 as 2620, - ~~~~~~~~~~~~~~~~~ 2621 as 2621, - ~~~~~~~~~~~~~~~~~ 2622 as 2622, - ~~~~~~~~~~~~~~~~~ 2623 as 2623, - ~~~~~~~~~~~~~~~~~ 2624 as 2624, - ~~~~~~~~~~~~~~~~~ 2625 as 2625, - ~~~~~~~~~~~~~~~~~ 2626 as 2626, - ~~~~~~~~~~~~~~~~~ 2627 as 2627, - ~~~~~~~~~~~~~~~~~ 2628 as 2628, - ~~~~~~~~~~~~~~~~~ 2629 as 2629, - ~~~~~~~~~~~~~~~~~ 2630 as 2630, - ~~~~~~~~~~~~~~~~~ 2631 as 2631, - ~~~~~~~~~~~~~~~~~ 2632 as 2632, - ~~~~~~~~~~~~~~~~~ 2633 as 2633, - ~~~~~~~~~~~~~~~~~ 2634 as 2634, - ~~~~~~~~~~~~~~~~~ 2635 as 2635, - ~~~~~~~~~~~~~~~~~ 2636 as 2636, - ~~~~~~~~~~~~~~~~~ 2637 as 2637, - ~~~~~~~~~~~~~~~~~ 2638 as 2638, - ~~~~~~~~~~~~~~~~~ 2639 as 2639, - ~~~~~~~~~~~~~~~~~ 2640 as 2640, - ~~~~~~~~~~~~~~~~~ 2641 as 2641, - ~~~~~~~~~~~~~~~~~ 2642 as 2642, - ~~~~~~~~~~~~~~~~~ 2643 as 2643, - ~~~~~~~~~~~~~~~~~ 2644 as 2644, - ~~~~~~~~~~~~~~~~~ 2645 as 2645, - ~~~~~~~~~~~~~~~~~ 2646 as 2646, - ~~~~~~~~~~~~~~~~~ 2647 as 2647, - ~~~~~~~~~~~~~~~~~ 2648 as 2648, - ~~~~~~~~~~~~~~~~~ 2649 as 2649, - ~~~~~~~~~~~~~~~~~ 2650 as 2650, - ~~~~~~~~~~~~~~~~~ 2651 as 2651, - ~~~~~~~~~~~~~~~~~ 2652 as 2652, - ~~~~~~~~~~~~~~~~~ 2653 as 2653, - ~~~~~~~~~~~~~~~~~ 2654 as 2654, - ~~~~~~~~~~~~~~~~~ 2655 as 2655, - ~~~~~~~~~~~~~~~~~ 2656 as 2656, - ~~~~~~~~~~~~~~~~~ 2657 as 2657, - ~~~~~~~~~~~~~~~~~ 2658 as 2658, - ~~~~~~~~~~~~~~~~~ 2659 as 2659, - ~~~~~~~~~~~~~~~~~ 2660 as 2660, - ~~~~~~~~~~~~~~~~~ 2661 as 2661, - ~~~~~~~~~~~~~~~~~ 2662 as 2662, - ~~~~~~~~~~~~~~~~~ 2663 as 2663, - ~~~~~~~~~~~~~~~~~ 2664 as 2664, - ~~~~~~~~~~~~~~~~~ 2665 as 2665, - ~~~~~~~~~~~~~~~~~ 2666 as 2666, - ~~~~~~~~~~~~~~~~~ 2667 as 2667, - ~~~~~~~~~~~~~~~~~ 2668 as 2668, - ~~~~~~~~~~~~~~~~~ 2669 as 2669, - ~~~~~~~~~~~~~~~~~ 2670 as 2670, - ~~~~~~~~~~~~~~~~~ 2671 as 2671, - ~~~~~~~~~~~~~~~~~ 2672 as 2672, - ~~~~~~~~~~~~~~~~~ 2673 as 2673, - ~~~~~~~~~~~~~~~~~ 2674 as 2674, - ~~~~~~~~~~~~~~~~~ 2675 as 2675, - ~~~~~~~~~~~~~~~~~ 2676 as 2676, - ~~~~~~~~~~~~~~~~~ 2677 as 2677, - ~~~~~~~~~~~~~~~~~ 2678 as 2678, - ~~~~~~~~~~~~~~~~~ 2679 as 2679, - ~~~~~~~~~~~~~~~~~ 2680 as 2680, - ~~~~~~~~~~~~~~~~~ 2681 as 2681, - ~~~~~~~~~~~~~~~~~ 2682 as 2682, - ~~~~~~~~~~~~~~~~~ 2683 as 2683, - ~~~~~~~~~~~~~~~~~ 2684 as 2684, - ~~~~~~~~~~~~~~~~~ 2685 as 2685, - ~~~~~~~~~~~~~~~~~ 2686 as 2686, - ~~~~~~~~~~~~~~~~~ 2687 as 2687, - ~~~~~~~~~~~~~~~~~ 2688 as 2688, - ~~~~~~~~~~~~~~~~~ 2689 as 2689, - ~~~~~~~~~~~~~~~~~ 2690 as 2690, - ~~~~~~~~~~~~~~~~~ 2691 as 2691, - ~~~~~~~~~~~~~~~~~ 2692 as 2692, - ~~~~~~~~~~~~~~~~~ 2693 as 2693, - ~~~~~~~~~~~~~~~~~ 2694 as 2694, - ~~~~~~~~~~~~~~~~~ 2695 as 2695, - ~~~~~~~~~~~~~~~~~ 2696 as 2696, - ~~~~~~~~~~~~~~~~~ 2697 as 2697, - ~~~~~~~~~~~~~~~~~ 2698 as 2698, - ~~~~~~~~~~~~~~~~~ 2699 as 2699, - ~~~~~~~~~~~~~~~~~ 2700 as 2700, - ~~~~~~~~~~~~~~~~~ 2701 as 2701, - ~~~~~~~~~~~~~~~~~ 2702 as 2702, - ~~~~~~~~~~~~~~~~~ 2703 as 2703, - ~~~~~~~~~~~~~~~~~ 2704 as 2704, - ~~~~~~~~~~~~~~~~~ 2705 as 2705, - ~~~~~~~~~~~~~~~~~ 2706 as 2706, - ~~~~~~~~~~~~~~~~~ 2707 as 2707, - ~~~~~~~~~~~~~~~~~ 2708 as 2708, - ~~~~~~~~~~~~~~~~~ 2709 as 2709, - ~~~~~~~~~~~~~~~~~ 2710 as 2710, - ~~~~~~~~~~~~~~~~~ 2711 as 2711, - ~~~~~~~~~~~~~~~~~ 2712 as 2712, - ~~~~~~~~~~~~~~~~~ 2713 as 2713, - ~~~~~~~~~~~~~~~~~ 2714 as 2714, - ~~~~~~~~~~~~~~~~~ 2715 as 2715, - ~~~~~~~~~~~~~~~~~ 2716 as 2716, - ~~~~~~~~~~~~~~~~~ 2717 as 2717, - ~~~~~~~~~~~~~~~~~ 2718 as 2718, - ~~~~~~~~~~~~~~~~~ 2719 as 2719, - ~~~~~~~~~~~~~~~~~ 2720 as 2720, - ~~~~~~~~~~~~~~~~~ 2721 as 2721, - ~~~~~~~~~~~~~~~~~ 2722 as 2722, - ~~~~~~~~~~~~~~~~~ 2723 as 2723, - ~~~~~~~~~~~~~~~~~ 2724 as 2724, - ~~~~~~~~~~~~~~~~~ 2725 as 2725, - ~~~~~~~~~~~~~~~~~ 2726 as 2726, - ~~~~~~~~~~~~~~~~~ 2727 as 2727, - ~~~~~~~~~~~~~~~~~ 2728 as 2728, - ~~~~~~~~~~~~~~~~~ 2729 as 2729, - ~~~~~~~~~~~~~~~~~ 2730 as 2730, - ~~~~~~~~~~~~~~~~~ 2731 as 2731, - ~~~~~~~~~~~~~~~~~ 2732 as 2732, - ~~~~~~~~~~~~~~~~~ 2733 as 2733, - ~~~~~~~~~~~~~~~~~ 2734 as 2734, - ~~~~~~~~~~~~~~~~~ 2735 as 2735, - ~~~~~~~~~~~~~~~~~ 2736 as 2736, - ~~~~~~~~~~~~~~~~~ 2737 as 2737, - ~~~~~~~~~~~~~~~~~ 2738 as 2738, - ~~~~~~~~~~~~~~~~~ 2739 as 2739, - ~~~~~~~~~~~~~~~~~ 2740 as 2740, - ~~~~~~~~~~~~~~~~~ 2741 as 2741, - ~~~~~~~~~~~~~~~~~ 2742 as 2742, - ~~~~~~~~~~~~~~~~~ 2743 as 2743, - ~~~~~~~~~~~~~~~~~ 2744 as 2744, - ~~~~~~~~~~~~~~~~~ 2745 as 2745, - ~~~~~~~~~~~~~~~~~ 2746 as 2746, - ~~~~~~~~~~~~~~~~~ 2747 as 2747, - ~~~~~~~~~~~~~~~~~ 2748 as 2748, - ~~~~~~~~~~~~~~~~~ 2749 as 2749, - ~~~~~~~~~~~~~~~~~ 2750 as 2750, - ~~~~~~~~~~~~~~~~~ 2751 as 2751, - ~~~~~~~~~~~~~~~~~ 2752 as 2752, - ~~~~~~~~~~~~~~~~~ 2753 as 2753, - ~~~~~~~~~~~~~~~~~ 2754 as 2754, - ~~~~~~~~~~~~~~~~~ 2755 as 2755, - ~~~~~~~~~~~~~~~~~ 2756 as 2756, - ~~~~~~~~~~~~~~~~~ 2757 as 2757, - ~~~~~~~~~~~~~~~~~ 2758 as 2758, - ~~~~~~~~~~~~~~~~~ 2759 as 2759, - ~~~~~~~~~~~~~~~~~ 2760 as 2760, - ~~~~~~~~~~~~~~~~~ 2761 as 2761, - ~~~~~~~~~~~~~~~~~ 2762 as 2762, - ~~~~~~~~~~~~~~~~~ 2763 as 2763, - ~~~~~~~~~~~~~~~~~ 2764 as 2764, - ~~~~~~~~~~~~~~~~~ 2765 as 2765, - ~~~~~~~~~~~~~~~~~ 2766 as 2766, - ~~~~~~~~~~~~~~~~~ 2767 as 2767, - ~~~~~~~~~~~~~~~~~ 2768 as 2768, - ~~~~~~~~~~~~~~~~~ 2769 as 2769, - ~~~~~~~~~~~~~~~~~ 2770 as 2770, - ~~~~~~~~~~~~~~~~~ 2771 as 2771, - ~~~~~~~~~~~~~~~~~ 2772 as 2772, - ~~~~~~~~~~~~~~~~~ 2773 as 2773, - ~~~~~~~~~~~~~~~~~ 2774 as 2774, - ~~~~~~~~~~~~~~~~~ 2775 as 2775, - ~~~~~~~~~~~~~~~~~ 2776 as 2776, - ~~~~~~~~~~~~~~~~~ 2777 as 2777, - ~~~~~~~~~~~~~~~~~ 2778 as 2778, - ~~~~~~~~~~~~~~~~~ 2779 as 2779, - ~~~~~~~~~~~~~~~~~ 2780 as 2780, - ~~~~~~~~~~~~~~~~~ 2781 as 2781, - ~~~~~~~~~~~~~~~~~ 2782 as 2782, - ~~~~~~~~~~~~~~~~~ 2783 as 2783, - ~~~~~~~~~~~~~~~~~ 2784 as 2784, - ~~~~~~~~~~~~~~~~~ 2785 as 2785, - ~~~~~~~~~~~~~~~~~ 2786 as 2786, - ~~~~~~~~~~~~~~~~~ 2787 as 2787, - ~~~~~~~~~~~~~~~~~ 2788 as 2788, - ~~~~~~~~~~~~~~~~~ 2789 as 2789, - ~~~~~~~~~~~~~~~~~ 2790 as 2790, - ~~~~~~~~~~~~~~~~~ 2791 as 2791, - ~~~~~~~~~~~~~~~~~ 2792 as 2792, - ~~~~~~~~~~~~~~~~~ 2793 as 2793, - ~~~~~~~~~~~~~~~~~ 2794 as 2794, - ~~~~~~~~~~~~~~~~~ 2795 as 2795, - ~~~~~~~~~~~~~~~~~ 2796 as 2796, - ~~~~~~~~~~~~~~~~~ 2797 as 2797, - ~~~~~~~~~~~~~~~~~ 2798 as 2798, - ~~~~~~~~~~~~~~~~~ 2799 as 2799, - ~~~~~~~~~~~~~~~~~ 2800 as 2800, - ~~~~~~~~~~~~~~~~~ 2801 as 2801, - ~~~~~~~~~~~~~~~~~ 2802 as 2802, - ~~~~~~~~~~~~~~~~~ 2803 as 2803, - ~~~~~~~~~~~~~~~~~ 2804 as 2804, - ~~~~~~~~~~~~~~~~~ 2805 as 2805, - ~~~~~~~~~~~~~~~~~ 2806 as 2806, - ~~~~~~~~~~~~~~~~~ 2807 as 2807, - ~~~~~~~~~~~~~~~~~ 2808 as 2808, - ~~~~~~~~~~~~~~~~~ 2809 as 2809, - ~~~~~~~~~~~~~~~~~ 2810 as 2810, - ~~~~~~~~~~~~~~~~~ 2811 as 2811, - ~~~~~~~~~~~~~~~~~ 2812 as 2812, - ~~~~~~~~~~~~~~~~~ 2813 as 2813, - ~~~~~~~~~~~~~~~~~ 2814 as 2814, - ~~~~~~~~~~~~~~~~~ 2815 as 2815, - ~~~~~~~~~~~~~~~~~ 2816 as 2816, - ~~~~~~~~~~~~~~~~~ 2817 as 2817, - ~~~~~~~~~~~~~~~~~ 2818 as 2818, - ~~~~~~~~~~~~~~~~~ 2819 as 2819, - ~~~~~~~~~~~~~~~~~ 2820 as 2820, - ~~~~~~~~~~~~~~~~~ 2821 as 2821, - ~~~~~~~~~~~~~~~~~ 2822 as 2822, - ~~~~~~~~~~~~~~~~~ 2823 as 2823, - ~~~~~~~~~~~~~~~~~ 2824 as 2824, - ~~~~~~~~~~~~~~~~~ 2825 as 2825, - ~~~~~~~~~~~~~~~~~ 2826 as 2826, - ~~~~~~~~~~~~~~~~~ 2827 as 2827, - ~~~~~~~~~~~~~~~~~ 2828 as 2828, - ~~~~~~~~~~~~~~~~~ 2829 as 2829, - ~~~~~~~~~~~~~~~~~ 2830 as 2830, - ~~~~~~~~~~~~~~~~~ 2831 as 2831, - ~~~~~~~~~~~~~~~~~ 2832 as 2832, - ~~~~~~~~~~~~~~~~~ 2833 as 2833, - ~~~~~~~~~~~~~~~~~ 2834 as 2834, - ~~~~~~~~~~~~~~~~~ 2835 as 2835, - ~~~~~~~~~~~~~~~~~ 2836 as 2836, - ~~~~~~~~~~~~~~~~~ 2837 as 2837, - ~~~~~~~~~~~~~~~~~ 2838 as 2838, - ~~~~~~~~~~~~~~~~~ 2839 as 2839, - ~~~~~~~~~~~~~~~~~ 2840 as 2840, - ~~~~~~~~~~~~~~~~~ 2841 as 2841, - ~~~~~~~~~~~~~~~~~ 2842 as 2842, - ~~~~~~~~~~~~~~~~~ 2843 as 2843, - ~~~~~~~~~~~~~~~~~ 2844 as 2844, - ~~~~~~~~~~~~~~~~~ 2845 as 2845, - ~~~~~~~~~~~~~~~~~ 2846 as 2846, - ~~~~~~~~~~~~~~~~~ 2847 as 2847, - ~~~~~~~~~~~~~~~~~ 2848 as 2848, - ~~~~~~~~~~~~~~~~~ 2849 as 2849, - ~~~~~~~~~~~~~~~~~ 2850 as 2850, - ~~~~~~~~~~~~~~~~~ 2851 as 2851, - ~~~~~~~~~~~~~~~~~ 2852 as 2852, - ~~~~~~~~~~~~~~~~~ 2853 as 2853, - ~~~~~~~~~~~~~~~~~ 2854 as 2854, - ~~~~~~~~~~~~~~~~~ 2855 as 2855, - ~~~~~~~~~~~~~~~~~ 2856 as 2856, - ~~~~~~~~~~~~~~~~~ 2857 as 2857, - ~~~~~~~~~~~~~~~~~ 2858 as 2858, - ~~~~~~~~~~~~~~~~~ 2859 as 2859, - ~~~~~~~~~~~~~~~~~ 2860 as 2860, - ~~~~~~~~~~~~~~~~~ 2861 as 2861, - ~~~~~~~~~~~~~~~~~ 2862 as 2862, - ~~~~~~~~~~~~~~~~~ 2863 as 2863, - ~~~~~~~~~~~~~~~~~ 2864 as 2864, - ~~~~~~~~~~~~~~~~~ 2865 as 2865, - ~~~~~~~~~~~~~~~~~ 2866 as 2866, - ~~~~~~~~~~~~~~~~~ 2867 as 2867, - ~~~~~~~~~~~~~~~~~ 2868 as 2868, - ~~~~~~~~~~~~~~~~~ 2869 as 2869, - ~~~~~~~~~~~~~~~~~ 2870 as 2870, - ~~~~~~~~~~~~~~~~~ 2871 as 2871, - ~~~~~~~~~~~~~~~~~ 2872 as 2872, - ~~~~~~~~~~~~~~~~~ 2873 as 2873, - ~~~~~~~~~~~~~~~~~ 2874 as 2874, - ~~~~~~~~~~~~~~~~~ 2875 as 2875, - ~~~~~~~~~~~~~~~~~ 2876 as 2876, - ~~~~~~~~~~~~~~~~~ 2877 as 2877, - ~~~~~~~~~~~~~~~~~ 2878 as 2878, - ~~~~~~~~~~~~~~~~~ 2879 as 2879, - ~~~~~~~~~~~~~~~~~ 2880 as 2880, - ~~~~~~~~~~~~~~~~~ 2881 as 2881, - ~~~~~~~~~~~~~~~~~ 2882 as 2882, - ~~~~~~~~~~~~~~~~~ 2883 as 2883, - ~~~~~~~~~~~~~~~~~ 2884 as 2884, - ~~~~~~~~~~~~~~~~~ 2885 as 2885, - ~~~~~~~~~~~~~~~~~ 2886 as 2886, - ~~~~~~~~~~~~~~~~~ 2887 as 2887, - ~~~~~~~~~~~~~~~~~ 2888 as 2888, - ~~~~~~~~~~~~~~~~~ 2889 as 2889, - ~~~~~~~~~~~~~~~~~ 2890 as 2890, - ~~~~~~~~~~~~~~~~~ 2891 as 2891, - ~~~~~~~~~~~~~~~~~ 2892 as 2892, - ~~~~~~~~~~~~~~~~~ 2893 as 2893, - ~~~~~~~~~~~~~~~~~ 2894 as 2894, - ~~~~~~~~~~~~~~~~~ 2895 as 2895, - ~~~~~~~~~~~~~~~~~ 2896 as 2896, - ~~~~~~~~~~~~~~~~~ 2897 as 2897, - ~~~~~~~~~~~~~~~~~ 2898 as 2898, - ~~~~~~~~~~~~~~~~~ 2899 as 2899, - ~~~~~~~~~~~~~~~~~ 2900 as 2900, - ~~~~~~~~~~~~~~~~~ 2901 as 2901, - ~~~~~~~~~~~~~~~~~ 2902 as 2902, - ~~~~~~~~~~~~~~~~~ 2903 as 2903, - ~~~~~~~~~~~~~~~~~ 2904 as 2904, - ~~~~~~~~~~~~~~~~~ 2905 as 2905, - ~~~~~~~~~~~~~~~~~ 2906 as 2906, - ~~~~~~~~~~~~~~~~~ 2907 as 2907, - ~~~~~~~~~~~~~~~~~ 2908 as 2908, - ~~~~~~~~~~~~~~~~~ 2909 as 2909, - ~~~~~~~~~~~~~~~~~ 2910 as 2910, - ~~~~~~~~~~~~~~~~~ 2911 as 2911, - ~~~~~~~~~~~~~~~~~ 2912 as 2912, - ~~~~~~~~~~~~~~~~~ 2913 as 2913, - ~~~~~~~~~~~~~~~~~ 2914 as 2914, - ~~~~~~~~~~~~~~~~~ 2915 as 2915, - ~~~~~~~~~~~~~~~~~ 2916 as 2916, - ~~~~~~~~~~~~~~~~~ 2917 as 2917, - ~~~~~~~~~~~~~~~~~ 2918 as 2918, - ~~~~~~~~~~~~~~~~~ 2919 as 2919, - ~~~~~~~~~~~~~~~~~ 2920 as 2920, - ~~~~~~~~~~~~~~~~~ 2921 as 2921, - ~~~~~~~~~~~~~~~~~ 2922 as 2922, - ~~~~~~~~~~~~~~~~~ 2923 as 2923, - ~~~~~~~~~~~~~~~~~ 2924 as 2924, - ~~~~~~~~~~~~~~~~~ 2925 as 2925, - ~~~~~~~~~~~~~~~~~ 2926 as 2926, - ~~~~~~~~~~~~~~~~~ 2927 as 2927, - ~~~~~~~~~~~~~~~~~ 2928 as 2928, - ~~~~~~~~~~~~~~~~~ 2929 as 2929, - ~~~~~~~~~~~~~~~~~ 2930 as 2930, - ~~~~~~~~~~~~~~~~~ 2931 as 2931, - ~~~~~~~~~~~~~~~~~ 2932 as 2932, - ~~~~~~~~~~~~~~~~~ 2933 as 2933, - ~~~~~~~~~~~~~~~~~ 2934 as 2934, - ~~~~~~~~~~~~~~~~~ 2935 as 2935, - ~~~~~~~~~~~~~~~~~ 2936 as 2936, - ~~~~~~~~~~~~~~~~~ 2937 as 2937, - ~~~~~~~~~~~~~~~~~ 2938 as 2938, - ~~~~~~~~~~~~~~~~~ 2939 as 2939, - ~~~~~~~~~~~~~~~~~ 2940 as 2940, - ~~~~~~~~~~~~~~~~~ 2941 as 2941, - ~~~~~~~~~~~~~~~~~ 2942 as 2942, - ~~~~~~~~~~~~~~~~~ 2943 as 2943, - ~~~~~~~~~~~~~~~~~ 2944 as 2944, - ~~~~~~~~~~~~~~~~~ 2945 as 2945, - ~~~~~~~~~~~~~~~~~ 2946 as 2946, - ~~~~~~~~~~~~~~~~~ 2947 as 2947, - ~~~~~~~~~~~~~~~~~ 2948 as 2948, - ~~~~~~~~~~~~~~~~~ 2949 as 2949, - ~~~~~~~~~~~~~~~~~ 2950 as 2950, - ~~~~~~~~~~~~~~~~~ 2951 as 2951, - ~~~~~~~~~~~~~~~~~ 2952 as 2952, - ~~~~~~~~~~~~~~~~~ 2953 as 2953, - ~~~~~~~~~~~~~~~~~ 2954 as 2954, - ~~~~~~~~~~~~~~~~~ 2955 as 2955, - ~~~~~~~~~~~~~~~~~ 2956 as 2956, - ~~~~~~~~~~~~~~~~~ 2957 as 2957, - ~~~~~~~~~~~~~~~~~ 2958 as 2958, - ~~~~~~~~~~~~~~~~~ 2959 as 2959, - ~~~~~~~~~~~~~~~~~ 2960 as 2960, - ~~~~~~~~~~~~~~~~~ 2961 as 2961, - ~~~~~~~~~~~~~~~~~ 2962 as 2962, - ~~~~~~~~~~~~~~~~~ 2963 as 2963, - ~~~~~~~~~~~~~~~~~ 2964 as 2964, - ~~~~~~~~~~~~~~~~~ 2965 as 2965, - ~~~~~~~~~~~~~~~~~ 2966 as 2966, - ~~~~~~~~~~~~~~~~~ 2967 as 2967, - ~~~~~~~~~~~~~~~~~ 2968 as 2968, - ~~~~~~~~~~~~~~~~~ 2969 as 2969, - ~~~~~~~~~~~~~~~~~ 2970 as 2970, - ~~~~~~~~~~~~~~~~~ 2971 as 2971, - ~~~~~~~~~~~~~~~~~ 2972 as 2972, - ~~~~~~~~~~~~~~~~~ 2973 as 2973, - ~~~~~~~~~~~~~~~~~ 2974 as 2974, - ~~~~~~~~~~~~~~~~~ 2975 as 2975, - ~~~~~~~~~~~~~~~~~ 2976 as 2976, - ~~~~~~~~~~~~~~~~~ 2977 as 2977, - ~~~~~~~~~~~~~~~~~ 2978 as 2978, - ~~~~~~~~~~~~~~~~~ 2979 as 2979, - ~~~~~~~~~~~~~~~~~ 2980 as 2980, - ~~~~~~~~~~~~~~~~~ 2981 as 2981, - ~~~~~~~~~~~~~~~~~ 2982 as 2982, - ~~~~~~~~~~~~~~~~~ 2983 as 2983, - ~~~~~~~~~~~~~~~~~ 2984 as 2984, - ~~~~~~~~~~~~~~~~~ 2985 as 2985, - ~~~~~~~~~~~~~~~~~ 2986 as 2986, - ~~~~~~~~~~~~~~~~~ 2987 as 2987, - ~~~~~~~~~~~~~~~~~ 2988 as 2988, - ~~~~~~~~~~~~~~~~~ 2989 as 2989, - ~~~~~~~~~~~~~~~~~ 2990 as 2990, - ~~~~~~~~~~~~~~~~~ 2991 as 2991, - ~~~~~~~~~~~~~~~~~ 2992 as 2992, - ~~~~~~~~~~~~~~~~~ 2993 as 2993, - ~~~~~~~~~~~~~~~~~ 2994 as 2994, - ~~~~~~~~~~~~~~~~~ 2995 as 2995, - ~~~~~~~~~~~~~~~~~ 2996 as 2996, - ~~~~~~~~~~~~~~~~~ 2997 as 2997, - ~~~~~~~~~~~~~~~~~ 2998 as 2998, - ~~~~~~~~~~~~~~~~~ 2999 as 2999, - ~~~~~~~~~~~~~~~~~ 3000 as 3000, - ~~~~~~~~~~~~~~~~~ 3001 as 3001, - ~~~~~~~~~~~~~~~~~ 3002 as 3002, - ~~~~~~~~~~~~~~~~~ 3003 as 3003, - ~~~~~~~~~~~~~~~~~ 3004 as 3004, - ~~~~~~~~~~~~~~~~~ 3005 as 3005, - ~~~~~~~~~~~~~~~~~ 3006 as 3006, - ~~~~~~~~~~~~~~~~~ 3007 as 3007, - ~~~~~~~~~~~~~~~~~ 3008 as 3008, - ~~~~~~~~~~~~~~~~~ 3009 as 3009, - ~~~~~~~~~~~~~~~~~ 3010 as 3010, - ~~~~~~~~~~~~~~~~~ 3011 as 3011, - ~~~~~~~~~~~~~~~~~ 3012 as 3012, - ~~~~~~~~~~~~~~~~~ 3013 as 3013, - ~~~~~~~~~~~~~~~~~ 3014 as 3014, - ~~~~~~~~~~~~~~~~~ 3015 as 3015, - ~~~~~~~~~~~~~~~~~ 3016 as 3016, - ~~~~~~~~~~~~~~~~~ 3017 as 3017, - ~~~~~~~~~~~~~~~~~ 3018 as 3018, - ~~~~~~~~~~~~~~~~~ 3019 as 3019, - ~~~~~~~~~~~~~~~~~ 3020 as 3020, - ~~~~~~~~~~~~~~~~~ 3021 as 3021, - ~~~~~~~~~~~~~~~~~ 3022 as 3022, - ~~~~~~~~~~~~~~~~~ 3023 as 3023, - ~~~~~~~~~~~~~~~~~ 3024 as 3024, - ~~~~~~~~~~~~~~~~~ 3025 as 3025, - ~~~~~~~~~~~~~~~~~ 3026 as 3026, - ~~~~~~~~~~~~~~~~~ 3027 as 3027, - ~~~~~~~~~~~~~~~~~ 3028 as 3028, - ~~~~~~~~~~~~~~~~~ 3029 as 3029, - ~~~~~~~~~~~~~~~~~ 3030 as 3030, - ~~~~~~~~~~~~~~~~~ 3031 as 3031, - ~~~~~~~~~~~~~~~~~ 3032 as 3032, - ~~~~~~~~~~~~~~~~~ 3033 as 3033, - ~~~~~~~~~~~~~~~~~ 3034 as 3034, - ~~~~~~~~~~~~~~~~~ 3035 as 3035, - ~~~~~~~~~~~~~~~~~ 3036 as 3036, - ~~~~~~~~~~~~~~~~~ 3037 as 3037, - ~~~~~~~~~~~~~~~~~ 3038 as 3038, - ~~~~~~~~~~~~~~~~~ 3039 as 3039, - ~~~~~~~~~~~~~~~~~ 3040 as 3040, - ~~~~~~~~~~~~~~~~~ 3041 as 3041, - ~~~~~~~~~~~~~~~~~ 3042 as 3042, - ~~~~~~~~~~~~~~~~~ 3043 as 3043, - ~~~~~~~~~~~~~~~~~ 3044 as 3044, - ~~~~~~~~~~~~~~~~~ 3045 as 3045, - ~~~~~~~~~~~~~~~~~ 3046 as 3046, - ~~~~~~~~~~~~~~~~~ 3047 as 3047, - ~~~~~~~~~~~~~~~~~ 3048 as 3048, - ~~~~~~~~~~~~~~~~~ 3049 as 3049, - ~~~~~~~~~~~~~~~~~ 3050 as 3050, - ~~~~~~~~~~~~~~~~~ 3051 as 3051, - ~~~~~~~~~~~~~~~~~ 3052 as 3052, - ~~~~~~~~~~~~~~~~~ 3053 as 3053, - ~~~~~~~~~~~~~~~~~ 3054 as 3054, - ~~~~~~~~~~~~~~~~~ 3055 as 3055, - ~~~~~~~~~~~~~~~~~ 3056 as 3056, - ~~~~~~~~~~~~~~~~~ 3057 as 3057, - ~~~~~~~~~~~~~~~~~ 3058 as 3058, - ~~~~~~~~~~~~~~~~~ 3059 as 3059, - ~~~~~~~~~~~~~~~~~ 3060 as 3060, - ~~~~~~~~~~~~~~~~~ 3061 as 3061, - ~~~~~~~~~~~~~~~~~ 3062 as 3062, - ~~~~~~~~~~~~~~~~~ 3063 as 3063, - ~~~~~~~~~~~~~~~~~ 3064 as 3064, - ~~~~~~~~~~~~~~~~~ 3065 as 3065, - ~~~~~~~~~~~~~~~~~ 3066 as 3066, - ~~~~~~~~~~~~~~~~~ 3067 as 3067, - ~~~~~~~~~~~~~~~~~ 3068 as 3068, - ~~~~~~~~~~~~~~~~~ 3069 as 3069, - ~~~~~~~~~~~~~~~~~ 3070 as 3070, - ~~~~~~~~~~~~~~~~~ 3071 as 3071, - ~~~~~~~~~~~~~~~~~ 3072 as 3072, - ~~~~~~~~~~~~~~~~~ 3073 as 3073, - ~~~~~~~~~~~~~~~~~ 3074 as 3074, - ~~~~~~~~~~~~~~~~~ 3075 as 3075, - ~~~~~~~~~~~~~~~~~ 3076 as 3076, - ~~~~~~~~~~~~~~~~~ 3077 as 3077, - ~~~~~~~~~~~~~~~~~ 3078 as 3078, - ~~~~~~~~~~~~~~~~~ 3079 as 3079, - ~~~~~~~~~~~~~~~~~ 3080 as 3080, - ~~~~~~~~~~~~~~~~~ 3081 as 3081, - ~~~~~~~~~~~~~~~~~ 3082 as 3082, - ~~~~~~~~~~~~~~~~~ 3083 as 3083, - ~~~~~~~~~~~~~~~~~ 3084 as 3084, - ~~~~~~~~~~~~~~~~~ 3085 as 3085, - ~~~~~~~~~~~~~~~~~ 3086 as 3086, - ~~~~~~~~~~~~~~~~~ 3087 as 3087, - ~~~~~~~~~~~~~~~~~ 3088 as 3088, - ~~~~~~~~~~~~~~~~~ 3089 as 3089, - ~~~~~~~~~~~~~~~~~ 3090 as 3090, - ~~~~~~~~~~~~~~~~~ 3091 as 3091, - ~~~~~~~~~~~~~~~~~ 3092 as 3092, - ~~~~~~~~~~~~~~~~~ 3093 as 3093, - ~~~~~~~~~~~~~~~~~ 3094 as 3094, - ~~~~~~~~~~~~~~~~~ 3095 as 3095, - ~~~~~~~~~~~~~~~~~ 3096 as 3096, - ~~~~~~~~~~~~~~~~~ 3097 as 3097, - ~~~~~~~~~~~~~~~~~ 3098 as 3098, - ~~~~~~~~~~~~~~~~~ 3099 as 3099, - ~~~~~~~~~~~~~~~~~ 3100 as 3100, - ~~~~~~~~~~~~~~~~~ 3101 as 3101, - ~~~~~~~~~~~~~~~~~ 3102 as 3102, - ~~~~~~~~~~~~~~~~~ 3103 as 3103, - ~~~~~~~~~~~~~~~~~ 3104 as 3104, - ~~~~~~~~~~~~~~~~~ 3105 as 3105, - ~~~~~~~~~~~~~~~~~ 3106 as 3106, - ~~~~~~~~~~~~~~~~~ 3107 as 3107, - ~~~~~~~~~~~~~~~~~ 3108 as 3108, - ~~~~~~~~~~~~~~~~~ 3109 as 3109, - ~~~~~~~~~~~~~~~~~ 3110 as 3110, - ~~~~~~~~~~~~~~~~~ 3111 as 3111, - ~~~~~~~~~~~~~~~~~ 3112 as 3112, - ~~~~~~~~~~~~~~~~~ 3113 as 3113, - ~~~~~~~~~~~~~~~~~ 3114 as 3114, - ~~~~~~~~~~~~~~~~~ 3115 as 3115, - ~~~~~~~~~~~~~~~~~ 3116 as 3116, - ~~~~~~~~~~~~~~~~~ 3117 as 3117, - ~~~~~~~~~~~~~~~~~ 3118 as 3118, - ~~~~~~~~~~~~~~~~~ 3119 as 3119, - ~~~~~~~~~~~~~~~~~ 3120 as 3120, - ~~~~~~~~~~~~~~~~~ 3121 as 3121, - ~~~~~~~~~~~~~~~~~ 3122 as 3122, - ~~~~~~~~~~~~~~~~~ 3123 as 3123, - ~~~~~~~~~~~~~~~~~ 3124 as 3124, - ~~~~~~~~~~~~~~~~~ 3125 as 3125, - ~~~~~~~~~~~~~~~~~ 3126 as 3126, - ~~~~~~~~~~~~~~~~~ 3127 as 3127, - ~~~~~~~~~~~~~~~~~ 3128 as 3128, - ~~~~~~~~~~~~~~~~~ 3129 as 3129, - ~~~~~~~~~~~~~~~~~ 3130 as 3130, - ~~~~~~~~~~~~~~~~~ 3131 as 3131, - ~~~~~~~~~~~~~~~~~ 3132 as 3132, - ~~~~~~~~~~~~~~~~~ 3133 as 3133, - ~~~~~~~~~~~~~~~~~ 3134 as 3134, - ~~~~~~~~~~~~~~~~~ 3135 as 3135, - ~~~~~~~~~~~~~~~~~ 3136 as 3136, - ~~~~~~~~~~~~~~~~~ 3137 as 3137, - ~~~~~~~~~~~~~~~~~ 3138 as 3138, - ~~~~~~~~~~~~~~~~~ 3139 as 3139, - ~~~~~~~~~~~~~~~~~ 3140 as 3140, - ~~~~~~~~~~~~~~~~~ 3141 as 3141, - ~~~~~~~~~~~~~~~~~ 3142 as 3142, - ~~~~~~~~~~~~~~~~~ 3143 as 3143, - ~~~~~~~~~~~~~~~~~ 3144 as 3144, - ~~~~~~~~~~~~~~~~~ 3145 as 3145, - ~~~~~~~~~~~~~~~~~ 3146 as 3146, - ~~~~~~~~~~~~~~~~~ 3147 as 3147, - ~~~~~~~~~~~~~~~~~ 3148 as 3148, - ~~~~~~~~~~~~~~~~~ 3149 as 3149, - ~~~~~~~~~~~~~~~~~ 3150 as 3150, - ~~~~~~~~~~~~~~~~~ 3151 as 3151, - ~~~~~~~~~~~~~~~~~ 3152 as 3152, - ~~~~~~~~~~~~~~~~~ 3153 as 3153, - ~~~~~~~~~~~~~~~~~ 3154 as 3154, - ~~~~~~~~~~~~~~~~~ 3155 as 3155, - ~~~~~~~~~~~~~~~~~ 3156 as 3156, - ~~~~~~~~~~~~~~~~~ 3157 as 3157, - ~~~~~~~~~~~~~~~~~ 3158 as 3158, - ~~~~~~~~~~~~~~~~~ 3159 as 3159, - ~~~~~~~~~~~~~~~~~ 3160 as 3160, - ~~~~~~~~~~~~~~~~~ 3161 as 3161, - ~~~~~~~~~~~~~~~~~ 3162 as 3162, - ~~~~~~~~~~~~~~~~~ 3163 as 3163, - ~~~~~~~~~~~~~~~~~ 3164 as 3164, - ~~~~~~~~~~~~~~~~~ 3165 as 3165, - ~~~~~~~~~~~~~~~~~ 3166 as 3166, - ~~~~~~~~~~~~~~~~~ 3167 as 3167, - ~~~~~~~~~~~~~~~~~ 3168 as 3168, - ~~~~~~~~~~~~~~~~~ 3169 as 3169, - ~~~~~~~~~~~~~~~~~ 3170 as 3170, - ~~~~~~~~~~~~~~~~~ 3171 as 3171, - ~~~~~~~~~~~~~~~~~ 3172 as 3172, - ~~~~~~~~~~~~~~~~~ 3173 as 3173, - ~~~~~~~~~~~~~~~~~ 3174 as 3174, - ~~~~~~~~~~~~~~~~~ 3175 as 3175, - ~~~~~~~~~~~~~~~~~ 3176 as 3176, - ~~~~~~~~~~~~~~~~~ 3177 as 3177, - ~~~~~~~~~~~~~~~~~ 3178 as 3178, - ~~~~~~~~~~~~~~~~~ 3179 as 3179, - ~~~~~~~~~~~~~~~~~ 3180 as 3180, - ~~~~~~~~~~~~~~~~~ 3181 as 3181, - ~~~~~~~~~~~~~~~~~ 3182 as 3182, - ~~~~~~~~~~~~~~~~~ 3183 as 3183, - ~~~~~~~~~~~~~~~~~ 3184 as 3184, - ~~~~~~~~~~~~~~~~~ 3185 as 3185, - ~~~~~~~~~~~~~~~~~ 3186 as 3186, - ~~~~~~~~~~~~~~~~~ 3187 as 3187, - ~~~~~~~~~~~~~~~~~ 3188 as 3188, - ~~~~~~~~~~~~~~~~~ 3189 as 3189, - ~~~~~~~~~~~~~~~~~ 3190 as 3190, - ~~~~~~~~~~~~~~~~~ 3191 as 3191, - ~~~~~~~~~~~~~~~~~ 3192 as 3192, - ~~~~~~~~~~~~~~~~~ 3193 as 3193, - ~~~~~~~~~~~~~~~~~ 3194 as 3194, - ~~~~~~~~~~~~~~~~~ 3195 as 3195, - ~~~~~~~~~~~~~~~~~ 3196 as 3196, - ~~~~~~~~~~~~~~~~~ 3197 as 3197, - ~~~~~~~~~~~~~~~~~ 3198 as 3198, - ~~~~~~~~~~~~~~~~~ 3199 as 3199, - ~~~~~~~~~~~~~~~~~ 3200 as 3200, - ~~~~~~~~~~~~~~~~~ 3201 as 3201, - ~~~~~~~~~~~~~~~~~ 3202 as 3202, - ~~~~~~~~~~~~~~~~~ 3203 as 3203, - ~~~~~~~~~~~~~~~~~ 3204 as 3204, - ~~~~~~~~~~~~~~~~~ 3205 as 3205, - ~~~~~~~~~~~~~~~~~ 3206 as 3206, - ~~~~~~~~~~~~~~~~~ 3207 as 3207, - ~~~~~~~~~~~~~~~~~ 3208 as 3208, - ~~~~~~~~~~~~~~~~~ 3209 as 3209, - ~~~~~~~~~~~~~~~~~ 3210 as 3210, - ~~~~~~~~~~~~~~~~~ 3211 as 3211, - ~~~~~~~~~~~~~~~~~ 3212 as 3212, - ~~~~~~~~~~~~~~~~~ 3213 as 3213, - ~~~~~~~~~~~~~~~~~ 3214 as 3214, - ~~~~~~~~~~~~~~~~~ 3215 as 3215, - ~~~~~~~~~~~~~~~~~ 3216 as 3216, - ~~~~~~~~~~~~~~~~~ 3217 as 3217, - ~~~~~~~~~~~~~~~~~ 3218 as 3218, - ~~~~~~~~~~~~~~~~~ 3219 as 3219, - ~~~~~~~~~~~~~~~~~ 3220 as 3220, - ~~~~~~~~~~~~~~~~~ 3221 as 3221, - ~~~~~~~~~~~~~~~~~ 3222 as 3222, - ~~~~~~~~~~~~~~~~~ 3223 as 3223, - ~~~~~~~~~~~~~~~~~ 3224 as 3224, - ~~~~~~~~~~~~~~~~~ 3225 as 3225, - ~~~~~~~~~~~~~~~~~ 3226 as 3226, - ~~~~~~~~~~~~~~~~~ 3227 as 3227, - ~~~~~~~~~~~~~~~~~ 3228 as 3228, - ~~~~~~~~~~~~~~~~~ 3229 as 3229, - ~~~~~~~~~~~~~~~~~ 3230 as 3230, - ~~~~~~~~~~~~~~~~~ 3231 as 3231, - ~~~~~~~~~~~~~~~~~ 3232 as 3232, - ~~~~~~~~~~~~~~~~~ 3233 as 3233, - ~~~~~~~~~~~~~~~~~ 3234 as 3234, - ~~~~~~~~~~~~~~~~~ 3235 as 3235, - ~~~~~~~~~~~~~~~~~ 3236 as 3236, - ~~~~~~~~~~~~~~~~~ 3237 as 3237, - ~~~~~~~~~~~~~~~~~ 3238 as 3238, - ~~~~~~~~~~~~~~~~~ 3239 as 3239, - ~~~~~~~~~~~~~~~~~ 3240 as 3240, - ~~~~~~~~~~~~~~~~~ 3241 as 3241, - ~~~~~~~~~~~~~~~~~ 3242 as 3242, - ~~~~~~~~~~~~~~~~~ 3243 as 3243, - ~~~~~~~~~~~~~~~~~ 3244 as 3244, - ~~~~~~~~~~~~~~~~~ 3245 as 3245, - ~~~~~~~~~~~~~~~~~ 3246 as 3246, - ~~~~~~~~~~~~~~~~~ 3247 as 3247, - ~~~~~~~~~~~~~~~~~ 3248 as 3248, - ~~~~~~~~~~~~~~~~~ 3249 as 3249, - ~~~~~~~~~~~~~~~~~ 3250 as 3250, - ~~~~~~~~~~~~~~~~~ 3251 as 3251, - ~~~~~~~~~~~~~~~~~ 3252 as 3252, - ~~~~~~~~~~~~~~~~~ 3253 as 3253, - ~~~~~~~~~~~~~~~~~ 3254 as 3254, - ~~~~~~~~~~~~~~~~~ 3255 as 3255, - ~~~~~~~~~~~~~~~~~ 3256 as 3256, - ~~~~~~~~~~~~~~~~~ 3257 as 3257, - ~~~~~~~~~~~~~~~~~ 3258 as 3258, - ~~~~~~~~~~~~~~~~~ 3259 as 3259, - ~~~~~~~~~~~~~~~~~ 3260 as 3260, - ~~~~~~~~~~~~~~~~~ 3261 as 3261, - ~~~~~~~~~~~~~~~~~ 3262 as 3262, - ~~~~~~~~~~~~~~~~~ 3263 as 3263, - ~~~~~~~~~~~~~~~~~ 3264 as 3264, - ~~~~~~~~~~~~~~~~~ 3265 as 3265, - ~~~~~~~~~~~~~~~~~ 3266 as 3266, - ~~~~~~~~~~~~~~~~~ 3267 as 3267, - ~~~~~~~~~~~~~~~~~ 3268 as 3268, - ~~~~~~~~~~~~~~~~~ 3269 as 3269, - ~~~~~~~~~~~~~~~~~ 3270 as 3270, - ~~~~~~~~~~~~~~~~~ 3271 as 3271, - ~~~~~~~~~~~~~~~~~ 3272 as 3272, - ~~~~~~~~~~~~~~~~~ 3273 as 3273, - ~~~~~~~~~~~~~~~~~ 3274 as 3274, - ~~~~~~~~~~~~~~~~~ 3275 as 3275, - ~~~~~~~~~~~~~~~~~ 3276 as 3276, - ~~~~~~~~~~~~~~~~~ 3277 as 3277, - ~~~~~~~~~~~~~~~~~ 3278 as 3278, - ~~~~~~~~~~~~~~~~~ 3279 as 3279, - ~~~~~~~~~~~~~~~~~ 3280 as 3280, - ~~~~~~~~~~~~~~~~~ 3281 as 3281, - ~~~~~~~~~~~~~~~~~ 3282 as 3282, - ~~~~~~~~~~~~~~~~~ 3283 as 3283, - ~~~~~~~~~~~~~~~~~ 3284 as 3284, - ~~~~~~~~~~~~~~~~~ 3285 as 3285, - ~~~~~~~~~~~~~~~~~ 3286 as 3286, - ~~~~~~~~~~~~~~~~~ 3287 as 3287, - ~~~~~~~~~~~~~~~~~ 3288 as 3288, - ~~~~~~~~~~~~~~~~~ 3289 as 3289, - ~~~~~~~~~~~~~~~~~ 3290 as 3290, - ~~~~~~~~~~~~~~~~~ 3291 as 3291, - ~~~~~~~~~~~~~~~~~ 3292 as 3292, - ~~~~~~~~~~~~~~~~~ 3293 as 3293, - ~~~~~~~~~~~~~~~~~ 3294 as 3294, - ~~~~~~~~~~~~~~~~~ 3295 as 3295, - ~~~~~~~~~~~~~~~~~ 3296 as 3296, - ~~~~~~~~~~~~~~~~~ 3297 as 3297, - ~~~~~~~~~~~~~~~~~ 3298 as 3298, - ~~~~~~~~~~~~~~~~~ 3299 as 3299, - ~~~~~~~~~~~~~~~~~ 3300 as 3300, - ~~~~~~~~~~~~~~~~~ 3301 as 3301, - ~~~~~~~~~~~~~~~~~ 3302 as 3302, - ~~~~~~~~~~~~~~~~~ 3303 as 3303, - ~~~~~~~~~~~~~~~~~ 3304 as 3304, - ~~~~~~~~~~~~~~~~~ 3305 as 3305, - ~~~~~~~~~~~~~~~~~ 3306 as 3306, - ~~~~~~~~~~~~~~~~~ 3307 as 3307, - ~~~~~~~~~~~~~~~~~ 3308 as 3308, - ~~~~~~~~~~~~~~~~~ 3309 as 3309, - ~~~~~~~~~~~~~~~~~ 3310 as 3310, - ~~~~~~~~~~~~~~~~~ 3311 as 3311, - ~~~~~~~~~~~~~~~~~ 3312 as 3312, - ~~~~~~~~~~~~~~~~~ 3313 as 3313, - ~~~~~~~~~~~~~~~~~ 3314 as 3314, - ~~~~~~~~~~~~~~~~~ 3315 as 3315, - ~~~~~~~~~~~~~~~~~ 3316 as 3316, - ~~~~~~~~~~~~~~~~~ 3317 as 3317, - ~~~~~~~~~~~~~~~~~ 3318 as 3318, - ~~~~~~~~~~~~~~~~~ 3319 as 3319, - ~~~~~~~~~~~~~~~~~ 3320 as 3320, - ~~~~~~~~~~~~~~~~~ 3321 as 3321, - ~~~~~~~~~~~~~~~~~ 3322 as 3322, - ~~~~~~~~~~~~~~~~~ 3323 as 3323, - ~~~~~~~~~~~~~~~~~ 3324 as 3324, - ~~~~~~~~~~~~~~~~~ 3325 as 3325, - ~~~~~~~~~~~~~~~~~ 3326 as 3326, - ~~~~~~~~~~~~~~~~~ 3327 as 3327, - ~~~~~~~~~~~~~~~~~ 3328 as 3328, - ~~~~~~~~~~~~~~~~~ 3329 as 3329, - ~~~~~~~~~~~~~~~~~ 3330 as 3330, - ~~~~~~~~~~~~~~~~~ 3331 as 3331, - ~~~~~~~~~~~~~~~~~ 3332 as 3332, - ~~~~~~~~~~~~~~~~~ 3333 as 3333, - ~~~~~~~~~~~~~~~~~ 3334 as 3334, - ~~~~~~~~~~~~~~~~~ 3335 as 3335, - ~~~~~~~~~~~~~~~~~ 3336 as 3336, - ~~~~~~~~~~~~~~~~~ 3337 as 3337, - ~~~~~~~~~~~~~~~~~ 3338 as 3338, - ~~~~~~~~~~~~~~~~~ 3339 as 3339, - ~~~~~~~~~~~~~~~~~ 3340 as 3340, - ~~~~~~~~~~~~~~~~~ 3341 as 3341, - ~~~~~~~~~~~~~~~~~ 3342 as 3342, - ~~~~~~~~~~~~~~~~~ 3343 as 3343, - ~~~~~~~~~~~~~~~~~ 3344 as 3344, - ~~~~~~~~~~~~~~~~~ 3345 as 3345, - ~~~~~~~~~~~~~~~~~ 3346 as 3346, - ~~~~~~~~~~~~~~~~~ 3347 as 3347, - ~~~~~~~~~~~~~~~~~ 3348 as 3348, - ~~~~~~~~~~~~~~~~~ 3349 as 3349, - ~~~~~~~~~~~~~~~~~ 3350 as 3350, - ~~~~~~~~~~~~~~~~~ 3351 as 3351, - ~~~~~~~~~~~~~~~~~ 3352 as 3352, - ~~~~~~~~~~~~~~~~~ 3353 as 3353, - ~~~~~~~~~~~~~~~~~ 3354 as 3354, - ~~~~~~~~~~~~~~~~~ 3355 as 3355, - ~~~~~~~~~~~~~~~~~ 3356 as 3356, - ~~~~~~~~~~~~~~~~~ 3357 as 3357, - ~~~~~~~~~~~~~~~~~ 3358 as 3358, - ~~~~~~~~~~~~~~~~~ 3359 as 3359, - ~~~~~~~~~~~~~~~~~ 3360 as 3360, - ~~~~~~~~~~~~~~~~~ 3361 as 3361, - ~~~~~~~~~~~~~~~~~ 3362 as 3362, - ~~~~~~~~~~~~~~~~~ 3363 as 3363, - ~~~~~~~~~~~~~~~~~ 3364 as 3364, - ~~~~~~~~~~~~~~~~~ 3365 as 3365, - ~~~~~~~~~~~~~~~~~ 3366 as 3366, - ~~~~~~~~~~~~~~~~~ 3367 as 3367, - ~~~~~~~~~~~~~~~~~ 3368 as 3368, - ~~~~~~~~~~~~~~~~~ 3369 as 3369, - ~~~~~~~~~~~~~~~~~ 3370 as 3370, - ~~~~~~~~~~~~~~~~~ 3371 as 3371, - ~~~~~~~~~~~~~~~~~ 3372 as 3372, - ~~~~~~~~~~~~~~~~~ 3373 as 3373, - ~~~~~~~~~~~~~~~~~ 3374 as 3374, - ~~~~~~~~~~~~~~~~~ 3375 as 3375, - ~~~~~~~~~~~~~~~~~ 3376 as 3376, - ~~~~~~~~~~~~~~~~~ 3377 as 3377, - ~~~~~~~~~~~~~~~~~ 3378 as 3378, - ~~~~~~~~~~~~~~~~~ 3379 as 3379, - ~~~~~~~~~~~~~~~~~ 3380 as 3380, - ~~~~~~~~~~~~~~~~~ 3381 as 3381, - ~~~~~~~~~~~~~~~~~ 3382 as 3382, - ~~~~~~~~~~~~~~~~~ 3383 as 3383, - ~~~~~~~~~~~~~~~~~ 3384 as 3384, - ~~~~~~~~~~~~~~~~~ 3385 as 3385, - ~~~~~~~~~~~~~~~~~ 3386 as 3386, - ~~~~~~~~~~~~~~~~~ 3387 as 3387, - ~~~~~~~~~~~~~~~~~ 3388 as 3388, - ~~~~~~~~~~~~~~~~~ 3389 as 3389, - ~~~~~~~~~~~~~~~~~ 3390 as 3390, - ~~~~~~~~~~~~~~~~~ 3391 as 3391, - ~~~~~~~~~~~~~~~~~ 3392 as 3392, - ~~~~~~~~~~~~~~~~~ 3393 as 3393, - ~~~~~~~~~~~~~~~~~ 3394 as 3394, - ~~~~~~~~~~~~~~~~~ 3395 as 3395, - ~~~~~~~~~~~~~~~~~ 3396 as 3396, - ~~~~~~~~~~~~~~~~~ 3397 as 3397, - ~~~~~~~~~~~~~~~~~ 3398 as 3398, - ~~~~~~~~~~~~~~~~~ 3399 as 3399, - ~~~~~~~~~~~~~~~~~ 3400 as 3400, - ~~~~~~~~~~~~~~~~~ 3401 as 3401, - ~~~~~~~~~~~~~~~~~ 3402 as 3402, - ~~~~~~~~~~~~~~~~~ 3403 as 3403, - ~~~~~~~~~~~~~~~~~ 3404 as 3404, - ~~~~~~~~~~~~~~~~~ 3405 as 3405, - ~~~~~~~~~~~~~~~~~ 3406 as 3406, - ~~~~~~~~~~~~~~~~~ 3407 as 3407, - ~~~~~~~~~~~~~~~~~ 3408 as 3408, - ~~~~~~~~~~~~~~~~~ 3409 as 3409, - ~~~~~~~~~~~~~~~~~ 3410 as 3410, - ~~~~~~~~~~~~~~~~~ 3411 as 3411, - ~~~~~~~~~~~~~~~~~ 3412 as 3412, - ~~~~~~~~~~~~~~~~~ 3413 as 3413, - ~~~~~~~~~~~~~~~~~ 3414 as 3414, - ~~~~~~~~~~~~~~~~~ 3415 as 3415, - ~~~~~~~~~~~~~~~~~ 3416 as 3416, - ~~~~~~~~~~~~~~~~~ 3417 as 3417, - ~~~~~~~~~~~~~~~~~ 3418 as 3418, - ~~~~~~~~~~~~~~~~~ 3419 as 3419, - ~~~~~~~~~~~~~~~~~ 3420 as 3420, - ~~~~~~~~~~~~~~~~~ 3421 as 3421, - ~~~~~~~~~~~~~~~~~ 3422 as 3422, - ~~~~~~~~~~~~~~~~~ 3423 as 3423, - ~~~~~~~~~~~~~~~~~ 3424 as 3424, - ~~~~~~~~~~~~~~~~~ 3425 as 3425, - ~~~~~~~~~~~~~~~~~ 3426 as 3426, - ~~~~~~~~~~~~~~~~~ 3427 as 3427, - ~~~~~~~~~~~~~~~~~ 3428 as 3428, - ~~~~~~~~~~~~~~~~~ 3429 as 3429, - ~~~~~~~~~~~~~~~~~ 3430 as 3430, - ~~~~~~~~~~~~~~~~~ 3431 as 3431, - ~~~~~~~~~~~~~~~~~ 3432 as 3432, - ~~~~~~~~~~~~~~~~~ 3433 as 3433, - ~~~~~~~~~~~~~~~~~ 3434 as 3434, - ~~~~~~~~~~~~~~~~~ 3435 as 3435, - ~~~~~~~~~~~~~~~~~ 3436 as 3436, - ~~~~~~~~~~~~~~~~~ 3437 as 3437, - ~~~~~~~~~~~~~~~~~ 3438 as 3438, - ~~~~~~~~~~~~~~~~~ 3439 as 3439, - ~~~~~~~~~~~~~~~~~ 3440 as 3440, - ~~~~~~~~~~~~~~~~~ 3441 as 3441, - ~~~~~~~~~~~~~~~~~ 3442 as 3442, - ~~~~~~~~~~~~~~~~~ 3443 as 3443, - ~~~~~~~~~~~~~~~~~ 3444 as 3444, - ~~~~~~~~~~~~~~~~~ 3445 as 3445, - ~~~~~~~~~~~~~~~~~ 3446 as 3446, - ~~~~~~~~~~~~~~~~~ 3447 as 3447, - ~~~~~~~~~~~~~~~~~ 3448 as 3448, - ~~~~~~~~~~~~~~~~~ 3449 as 3449, - ~~~~~~~~~~~~~~~~~ 3450 as 3450, - ~~~~~~~~~~~~~~~~~ 3451 as 3451, - ~~~~~~~~~~~~~~~~~ 3452 as 3452, - ~~~~~~~~~~~~~~~~~ 3453 as 3453, - ~~~~~~~~~~~~~~~~~ 3454 as 3454, - ~~~~~~~~~~~~~~~~~ 3455 as 3455, - ~~~~~~~~~~~~~~~~~ 3456 as 3456, - ~~~~~~~~~~~~~~~~~ 3457 as 3457, - ~~~~~~~~~~~~~~~~~ 3458 as 3458, - ~~~~~~~~~~~~~~~~~ 3459 as 3459, - ~~~~~~~~~~~~~~~~~ 3460 as 3460, - ~~~~~~~~~~~~~~~~~ 3461 as 3461, - ~~~~~~~~~~~~~~~~~ 3462 as 3462, - ~~~~~~~~~~~~~~~~~ 3463 as 3463, - ~~~~~~~~~~~~~~~~~ 3464 as 3464, - ~~~~~~~~~~~~~~~~~ 3465 as 3465, - ~~~~~~~~~~~~~~~~~ 3466 as 3466, - ~~~~~~~~~~~~~~~~~ 3467 as 3467, - ~~~~~~~~~~~~~~~~~ 3468 as 3468, - ~~~~~~~~~~~~~~~~~ 3469 as 3469, - ~~~~~~~~~~~~~~~~~ 3470 as 3470, - ~~~~~~~~~~~~~~~~~ 3471 as 3471, - ~~~~~~~~~~~~~~~~~ 3472 as 3472, - ~~~~~~~~~~~~~~~~~ 3473 as 3473, - ~~~~~~~~~~~~~~~~~ 3474 as 3474, - ~~~~~~~~~~~~~~~~~ 3475 as 3475, - ~~~~~~~~~~~~~~~~~ 3476 as 3476, - ~~~~~~~~~~~~~~~~~ 3477 as 3477, - ~~~~~~~~~~~~~~~~~ 3478 as 3478, - ~~~~~~~~~~~~~~~~~ 3479 as 3479, - ~~~~~~~~~~~~~~~~~ 3480 as 3480, - ~~~~~~~~~~~~~~~~~ 3481 as 3481, - ~~~~~~~~~~~~~~~~~ 3482 as 3482, - ~~~~~~~~~~~~~~~~~ 3483 as 3483, - ~~~~~~~~~~~~~~~~~ 3484 as 3484, - ~~~~~~~~~~~~~~~~~ 3485 as 3485, - ~~~~~~~~~~~~~~~~~ 3486 as 3486, - ~~~~~~~~~~~~~~~~~ 3487 as 3487, - ~~~~~~~~~~~~~~~~~ 3488 as 3488, - ~~~~~~~~~~~~~~~~~ 3489 as 3489, - ~~~~~~~~~~~~~~~~~ 3490 as 3490, - ~~~~~~~~~~~~~~~~~ 3491 as 3491, - ~~~~~~~~~~~~~~~~~ 3492 as 3492, - ~~~~~~~~~~~~~~~~~ 3493 as 3493, - ~~~~~~~~~~~~~~~~~ 3494 as 3494, - ~~~~~~~~~~~~~~~~~ 3495 as 3495, - ~~~~~~~~~~~~~~~~~ 3496 as 3496, - ~~~~~~~~~~~~~~~~~ 3497 as 3497, - ~~~~~~~~~~~~~~~~~ 3498 as 3498, - ~~~~~~~~~~~~~~~~~ 3499 as 3499, - ~~~~~~~~~~~~~~~~~ 3500 as 3500, - ~~~~~~~~~~~~~~~~~ 3501 as 3501, - ~~~~~~~~~~~~~~~~~ 3502 as 3502, - ~~~~~~~~~~~~~~~~~ 3503 as 3503, - ~~~~~~~~~~~~~~~~~ 3504 as 3504, - ~~~~~~~~~~~~~~~~~ 3505 as 3505, - ~~~~~~~~~~~~~~~~~ 3506 as 3506, - ~~~~~~~~~~~~~~~~~ 3507 as 3507, - ~~~~~~~~~~~~~~~~~ 3508 as 3508, - ~~~~~~~~~~~~~~~~~ 3509 as 3509, - ~~~~~~~~~~~~~~~~~ 3510 as 3510, - ~~~~~~~~~~~~~~~~~ 3511 as 3511, - ~~~~~~~~~~~~~~~~~ 3512 as 3512, - ~~~~~~~~~~~~~~~~~ 3513 as 3513, - ~~~~~~~~~~~~~~~~~ 3514 as 3514, - ~~~~~~~~~~~~~~~~~ 3515 as 3515, - ~~~~~~~~~~~~~~~~~ 3516 as 3516, - ~~~~~~~~~~~~~~~~~ 3517 as 3517, - ~~~~~~~~~~~~~~~~~ 3518 as 3518, - ~~~~~~~~~~~~~~~~~ 3519 as 3519, - ~~~~~~~~~~~~~~~~~ 3520 as 3520, - ~~~~~~~~~~~~~~~~~ 3521 as 3521, - ~~~~~~~~~~~~~~~~~ 3522 as 3522, - ~~~~~~~~~~~~~~~~~ 3523 as 3523, - ~~~~~~~~~~~~~~~~~ 3524 as 3524, - ~~~~~~~~~~~~~~~~~ 3525 as 3525, - ~~~~~~~~~~~~~~~~~ 3526 as 3526, - ~~~~~~~~~~~~~~~~~ 3527 as 3527, - ~~~~~~~~~~~~~~~~~ 3528 as 3528, - ~~~~~~~~~~~~~~~~~ 3529 as 3529, - ~~~~~~~~~~~~~~~~~ 3530 as 3530, - ~~~~~~~~~~~~~~~~~ 3531 as 3531, - ~~~~~~~~~~~~~~~~~ 3532 as 3532, - ~~~~~~~~~~~~~~~~~ 3533 as 3533, - ~~~~~~~~~~~~~~~~~ 3534 as 3534, - ~~~~~~~~~~~~~~~~~ 3535 as 3535, - ~~~~~~~~~~~~~~~~~ 3536 as 3536, - ~~~~~~~~~~~~~~~~~ 3537 as 3537, - ~~~~~~~~~~~~~~~~~ 3538 as 3538, - ~~~~~~~~~~~~~~~~~ 3539 as 3539, - ~~~~~~~~~~~~~~~~~ 3540 as 3540, - ~~~~~~~~~~~~~~~~~ 3541 as 3541, - ~~~~~~~~~~~~~~~~~ 3542 as 3542, - ~~~~~~~~~~~~~~~~~ 3543 as 3543, - ~~~~~~~~~~~~~~~~~ 3544 as 3544, - ~~~~~~~~~~~~~~~~~ 3545 as 3545, - ~~~~~~~~~~~~~~~~~ 3546 as 3546, - ~~~~~~~~~~~~~~~~~ 3547 as 3547, - ~~~~~~~~~~~~~~~~~ 3548 as 3548, - ~~~~~~~~~~~~~~~~~ 3549 as 3549, - ~~~~~~~~~~~~~~~~~ 3550 as 3550, - ~~~~~~~~~~~~~~~~~ 3551 as 3551, - ~~~~~~~~~~~~~~~~~ 3552 as 3552, - ~~~~~~~~~~~~~~~~~ 3553 as 3553, - ~~~~~~~~~~~~~~~~~ 3554 as 3554, - ~~~~~~~~~~~~~~~~~ 3555 as 3555, - ~~~~~~~~~~~~~~~~~ 3556 as 3556, - ~~~~~~~~~~~~~~~~~ 3557 as 3557, - ~~~~~~~~~~~~~~~~~ 3558 as 3558, - ~~~~~~~~~~~~~~~~~ 3559 as 3559, - ~~~~~~~~~~~~~~~~~ 3560 as 3560, - ~~~~~~~~~~~~~~~~~ 3561 as 3561, - ~~~~~~~~~~~~~~~~~ 3562 as 3562, - ~~~~~~~~~~~~~~~~~ 3563 as 3563, - ~~~~~~~~~~~~~~~~~ 3564 as 3564, - ~~~~~~~~~~~~~~~~~ 3565 as 3565, - ~~~~~~~~~~~~~~~~~ 3566 as 3566, - ~~~~~~~~~~~~~~~~~ 3567 as 3567, - ~~~~~~~~~~~~~~~~~ 3568 as 3568, - ~~~~~~~~~~~~~~~~~ 3569 as 3569, - ~~~~~~~~~~~~~~~~~ 3570 as 3570, - ~~~~~~~~~~~~~~~~~ 3571 as 3571, - ~~~~~~~~~~~~~~~~~ 3572 as 3572, - ~~~~~~~~~~~~~~~~~ 3573 as 3573, - ~~~~~~~~~~~~~~~~~ 3574 as 3574, - ~~~~~~~~~~~~~~~~~ 3575 as 3575, - ~~~~~~~~~~~~~~~~~ 3576 as 3576, - ~~~~~~~~~~~~~~~~~ 3577 as 3577, - ~~~~~~~~~~~~~~~~~ 3578 as 3578, - ~~~~~~~~~~~~~~~~~ 3579 as 3579, - ~~~~~~~~~~~~~~~~~ 3580 as 3580, - ~~~~~~~~~~~~~~~~~ 3581 as 3581, - ~~~~~~~~~~~~~~~~~ 3582 as 3582, - ~~~~~~~~~~~~~~~~~ 3583 as 3583, - ~~~~~~~~~~~~~~~~~ 3584 as 3584, - ~~~~~~~~~~~~~~~~~ 3585 as 3585, - ~~~~~~~~~~~~~~~~~ 3586 as 3586, - ~~~~~~~~~~~~~~~~~ 3587 as 3587, - ~~~~~~~~~~~~~~~~~ 3588 as 3588, - ~~~~~~~~~~~~~~~~~ 3589 as 3589, - ~~~~~~~~~~~~~~~~~ 3590 as 3590, - ~~~~~~~~~~~~~~~~~ 3591 as 3591, - ~~~~~~~~~~~~~~~~~ 3592 as 3592, - ~~~~~~~~~~~~~~~~~ 3593 as 3593, - ~~~~~~~~~~~~~~~~~ 3594 as 3594, - ~~~~~~~~~~~~~~~~~ 3595 as 3595, - ~~~~~~~~~~~~~~~~~ 3596 as 3596, - ~~~~~~~~~~~~~~~~~ 3597 as 3597, - ~~~~~~~~~~~~~~~~~ 3598 as 3598, - ~~~~~~~~~~~~~~~~~ 3599 as 3599, - ~~~~~~~~~~~~~~~~~ 3600 as 3600, - ~~~~~~~~~~~~~~~~~ 3601 as 3601, - ~~~~~~~~~~~~~~~~~ 3602 as 3602, - ~~~~~~~~~~~~~~~~~ 3603 as 3603, - ~~~~~~~~~~~~~~~~~ 3604 as 3604, - ~~~~~~~~~~~~~~~~~ 3605 as 3605, - ~~~~~~~~~~~~~~~~~ 3606 as 3606, - ~~~~~~~~~~~~~~~~~ 3607 as 3607, - ~~~~~~~~~~~~~~~~~ 3608 as 3608, - ~~~~~~~~~~~~~~~~~ 3609 as 3609, - ~~~~~~~~~~~~~~~~~ 3610 as 3610, - ~~~~~~~~~~~~~~~~~ 3611 as 3611, - ~~~~~~~~~~~~~~~~~ 3612 as 3612, - ~~~~~~~~~~~~~~~~~ 3613 as 3613, - ~~~~~~~~~~~~~~~~~ 3614 as 3614, - ~~~~~~~~~~~~~~~~~ 3615 as 3615, - ~~~~~~~~~~~~~~~~~ 3616 as 3616, - ~~~~~~~~~~~~~~~~~ 3617 as 3617, - ~~~~~~~~~~~~~~~~~ 3618 as 3618, - ~~~~~~~~~~~~~~~~~ 3619 as 3619, - ~~~~~~~~~~~~~~~~~ 3620 as 3620, - ~~~~~~~~~~~~~~~~~ 3621 as 3621, - ~~~~~~~~~~~~~~~~~ 3622 as 3622, - ~~~~~~~~~~~~~~~~~ 3623 as 3623, - ~~~~~~~~~~~~~~~~~ 3624 as 3624, - ~~~~~~~~~~~~~~~~~ 3625 as 3625, - ~~~~~~~~~~~~~~~~~ 3626 as 3626, - ~~~~~~~~~~~~~~~~~ 3627 as 3627, - ~~~~~~~~~~~~~~~~~ 3628 as 3628, - ~~~~~~~~~~~~~~~~~ 3629 as 3629, - ~~~~~~~~~~~~~~~~~ 3630 as 3630, - ~~~~~~~~~~~~~~~~~ 3631 as 3631, - ~~~~~~~~~~~~~~~~~ 3632 as 3632, - ~~~~~~~~~~~~~~~~~ 3633 as 3633, - ~~~~~~~~~~~~~~~~~ 3634 as 3634, - ~~~~~~~~~~~~~~~~~ 3635 as 3635, - ~~~~~~~~~~~~~~~~~ 3636 as 3636, - ~~~~~~~~~~~~~~~~~ 3637 as 3637, - ~~~~~~~~~~~~~~~~~ 3638 as 3638, - ~~~~~~~~~~~~~~~~~ 3639 as 3639, - ~~~~~~~~~~~~~~~~~ 3640 as 3640, - ~~~~~~~~~~~~~~~~~ 3641 as 3641, - ~~~~~~~~~~~~~~~~~ 3642 as 3642, - ~~~~~~~~~~~~~~~~~ 3643 as 3643, - ~~~~~~~~~~~~~~~~~ 3644 as 3644, - ~~~~~~~~~~~~~~~~~ 3645 as 3645, - ~~~~~~~~~~~~~~~~~ 3646 as 3646, - ~~~~~~~~~~~~~~~~~ 3647 as 3647, - ~~~~~~~~~~~~~~~~~ 3648 as 3648, - ~~~~~~~~~~~~~~~~~ 3649 as 3649, - ~~~~~~~~~~~~~~~~~ 3650 as 3650, - ~~~~~~~~~~~~~~~~~ 3651 as 3651, - ~~~~~~~~~~~~~~~~~ 3652 as 3652, - ~~~~~~~~~~~~~~~~~ 3653 as 3653, - ~~~~~~~~~~~~~~~~~ 3654 as 3654, - ~~~~~~~~~~~~~~~~~ 3655 as 3655, - ~~~~~~~~~~~~~~~~~ 3656 as 3656, - ~~~~~~~~~~~~~~~~~ 3657 as 3657, - ~~~~~~~~~~~~~~~~~ 3658 as 3658, - ~~~~~~~~~~~~~~~~~ 3659 as 3659, - ~~~~~~~~~~~~~~~~~ 3660 as 3660, - ~~~~~~~~~~~~~~~~~ 3661 as 3661, - ~~~~~~~~~~~~~~~~~ 3662 as 3662, - ~~~~~~~~~~~~~~~~~ 3663 as 3663, - ~~~~~~~~~~~~~~~~~ 3664 as 3664, - ~~~~~~~~~~~~~~~~~ 3665 as 3665, - ~~~~~~~~~~~~~~~~~ 3666 as 3666, - ~~~~~~~~~~~~~~~~~ 3667 as 3667, - ~~~~~~~~~~~~~~~~~ 3668 as 3668, - ~~~~~~~~~~~~~~~~~ 3669 as 3669, - ~~~~~~~~~~~~~~~~~ 3670 as 3670, - ~~~~~~~~~~~~~~~~~ 3671 as 3671, - ~~~~~~~~~~~~~~~~~ 3672 as 3672, - ~~~~~~~~~~~~~~~~~ 3673 as 3673, - ~~~~~~~~~~~~~~~~~ 3674 as 3674, - ~~~~~~~~~~~~~~~~~ 3675 as 3675, - ~~~~~~~~~~~~~~~~~ 3676 as 3676, - ~~~~~~~~~~~~~~~~~ 3677 as 3677, - ~~~~~~~~~~~~~~~~~ 3678 as 3678, - ~~~~~~~~~~~~~~~~~ 3679 as 3679, - ~~~~~~~~~~~~~~~~~ 3680 as 3680, - ~~~~~~~~~~~~~~~~~ 3681 as 3681, - ~~~~~~~~~~~~~~~~~ 3682 as 3682, - ~~~~~~~~~~~~~~~~~ 3683 as 3683, - ~~~~~~~~~~~~~~~~~ 3684 as 3684, - ~~~~~~~~~~~~~~~~~ 3685 as 3685, - ~~~~~~~~~~~~~~~~~ 3686 as 3686, - ~~~~~~~~~~~~~~~~~ 3687 as 3687, - ~~~~~~~~~~~~~~~~~ 3688 as 3688, - ~~~~~~~~~~~~~~~~~ 3689 as 3689, - ~~~~~~~~~~~~~~~~~ 3690 as 3690, - ~~~~~~~~~~~~~~~~~ 3691 as 3691, - ~~~~~~~~~~~~~~~~~ 3692 as 3692, - ~~~~~~~~~~~~~~~~~ 3693 as 3693, - ~~~~~~~~~~~~~~~~~ 3694 as 3694, - ~~~~~~~~~~~~~~~~~ 3695 as 3695, - ~~~~~~~~~~~~~~~~~ 3696 as 3696, - ~~~~~~~~~~~~~~~~~ 3697 as 3697, - ~~~~~~~~~~~~~~~~~ 3698 as 3698, - ~~~~~~~~~~~~~~~~~ 3699 as 3699, - ~~~~~~~~~~~~~~~~~ 3700 as 3700, - ~~~~~~~~~~~~~~~~~ 3701 as 3701, - ~~~~~~~~~~~~~~~~~ 3702 as 3702, - ~~~~~~~~~~~~~~~~~ 3703 as 3703, - ~~~~~~~~~~~~~~~~~ 3704 as 3704, - ~~~~~~~~~~~~~~~~~ 3705 as 3705, - ~~~~~~~~~~~~~~~~~ 3706 as 3706, - ~~~~~~~~~~~~~~~~~ 3707 as 3707, - ~~~~~~~~~~~~~~~~~ 3708 as 3708, - ~~~~~~~~~~~~~~~~~ 3709 as 3709, - ~~~~~~~~~~~~~~~~~ 3710 as 3710, - ~~~~~~~~~~~~~~~~~ 3711 as 3711, - ~~~~~~~~~~~~~~~~~ 3712 as 3712, - ~~~~~~~~~~~~~~~~~ 3713 as 3713, - ~~~~~~~~~~~~~~~~~ 3714 as 3714, - ~~~~~~~~~~~~~~~~~ 3715 as 3715, - ~~~~~~~~~~~~~~~~~ 3716 as 3716, - ~~~~~~~~~~~~~~~~~ 3717 as 3717, - ~~~~~~~~~~~~~~~~~ 3718 as 3718, - ~~~~~~~~~~~~~~~~~ 3719 as 3719, - ~~~~~~~~~~~~~~~~~ 3720 as 3720, - ~~~~~~~~~~~~~~~~~ 3721 as 3721, - ~~~~~~~~~~~~~~~~~ 3722 as 3722, - ~~~~~~~~~~~~~~~~~ 3723 as 3723, - ~~~~~~~~~~~~~~~~~ 3724 as 3724, - ~~~~~~~~~~~~~~~~~ 3725 as 3725, - ~~~~~~~~~~~~~~~~~ 3726 as 3726, - ~~~~~~~~~~~~~~~~~ 3727 as 3727, - ~~~~~~~~~~~~~~~~~ 3728 as 3728, - ~~~~~~~~~~~~~~~~~ 3729 as 3729, - ~~~~~~~~~~~~~~~~~ 3730 as 3730, - ~~~~~~~~~~~~~~~~~ 3731 as 3731, - ~~~~~~~~~~~~~~~~~ 3732 as 3732, - ~~~~~~~~~~~~~~~~~ 3733 as 3733, - ~~~~~~~~~~~~~~~~~ 3734 as 3734, - ~~~~~~~~~~~~~~~~~ 3735 as 3735, - ~~~~~~~~~~~~~~~~~ 3736 as 3736, - ~~~~~~~~~~~~~~~~~ 3737 as 3737, - ~~~~~~~~~~~~~~~~~ 3738 as 3738, - ~~~~~~~~~~~~~~~~~ 3739 as 3739, - ~~~~~~~~~~~~~~~~~ 3740 as 3740, - ~~~~~~~~~~~~~~~~~ 3741 as 3741, - ~~~~~~~~~~~~~~~~~ 3742 as 3742, - ~~~~~~~~~~~~~~~~~ 3743 as 3743, - ~~~~~~~~~~~~~~~~~ 3744 as 3744, - ~~~~~~~~~~~~~~~~~ 3745 as 3745, - ~~~~~~~~~~~~~~~~~ 3746 as 3746, - ~~~~~~~~~~~~~~~~~ 3747 as 3747, - ~~~~~~~~~~~~~~~~~ 3748 as 3748, - ~~~~~~~~~~~~~~~~~ 3749 as 3749, - ~~~~~~~~~~~~~~~~~ 3750 as 3750, - ~~~~~~~~~~~~~~~~~ 3751 as 3751, - ~~~~~~~~~~~~~~~~~ 3752 as 3752, - ~~~~~~~~~~~~~~~~~ 3753 as 3753, - ~~~~~~~~~~~~~~~~~ 3754 as 3754, - ~~~~~~~~~~~~~~~~~ 3755 as 3755, - ~~~~~~~~~~~~~~~~~ 3756 as 3756, - ~~~~~~~~~~~~~~~~~ 3757 as 3757, - ~~~~~~~~~~~~~~~~~ 3758 as 3758, - ~~~~~~~~~~~~~~~~~ 3759 as 3759, - ~~~~~~~~~~~~~~~~~ 3760 as 3760, - ~~~~~~~~~~~~~~~~~ 3761 as 3761, - ~~~~~~~~~~~~~~~~~ 3762 as 3762, - ~~~~~~~~~~~~~~~~~ 3763 as 3763, - ~~~~~~~~~~~~~~~~~ 3764 as 3764, - ~~~~~~~~~~~~~~~~~ 3765 as 3765, - ~~~~~~~~~~~~~~~~~ 3766 as 3766, - ~~~~~~~~~~~~~~~~~ 3767 as 3767, - ~~~~~~~~~~~~~~~~~ 3768 as 3768, - ~~~~~~~~~~~~~~~~~ 3769 as 3769, - ~~~~~~~~~~~~~~~~~ 3770 as 3770, - ~~~~~~~~~~~~~~~~~ 3771 as 3771, - ~~~~~~~~~~~~~~~~~ 3772 as 3772, - ~~~~~~~~~~~~~~~~~ 3773 as 3773, - ~~~~~~~~~~~~~~~~~ 3774 as 3774, - ~~~~~~~~~~~~~~~~~ 3775 as 3775, - ~~~~~~~~~~~~~~~~~ 3776 as 3776, - ~~~~~~~~~~~~~~~~~ 3777 as 3777, - ~~~~~~~~~~~~~~~~~ 3778 as 3778, - ~~~~~~~~~~~~~~~~~ 3779 as 3779, - ~~~~~~~~~~~~~~~~~ 3780 as 3780, - ~~~~~~~~~~~~~~~~~ 3781 as 3781, - ~~~~~~~~~~~~~~~~~ 3782 as 3782, - ~~~~~~~~~~~~~~~~~ 3783 as 3783, - ~~~~~~~~~~~~~~~~~ 3784 as 3784, - ~~~~~~~~~~~~~~~~~ 3785 as 3785, - ~~~~~~~~~~~~~~~~~ 3786 as 3786, - ~~~~~~~~~~~~~~~~~ 3787 as 3787, - ~~~~~~~~~~~~~~~~~ 3788 as 3788, - ~~~~~~~~~~~~~~~~~ 3789 as 3789, - ~~~~~~~~~~~~~~~~~ 3790 as 3790, - ~~~~~~~~~~~~~~~~~ 3791 as 3791, - ~~~~~~~~~~~~~~~~~ 3792 as 3792, - ~~~~~~~~~~~~~~~~~ 3793 as 3793, - ~~~~~~~~~~~~~~~~~ 3794 as 3794, - ~~~~~~~~~~~~~~~~~ 3795 as 3795, - ~~~~~~~~~~~~~~~~~ 3796 as 3796, - ~~~~~~~~~~~~~~~~~ 3797 as 3797, - ~~~~~~~~~~~~~~~~~ 3798 as 3798, - ~~~~~~~~~~~~~~~~~ 3799 as 3799, - ~~~~~~~~~~~~~~~~~ 3800 as 3800, - ~~~~~~~~~~~~~~~~~ 3801 as 3801, - ~~~~~~~~~~~~~~~~~ 3802 as 3802, - ~~~~~~~~~~~~~~~~~ 3803 as 3803, - ~~~~~~~~~~~~~~~~~ 3804 as 3804, - ~~~~~~~~~~~~~~~~~ 3805 as 3805, - ~~~~~~~~~~~~~~~~~ 3806 as 3806, - ~~~~~~~~~~~~~~~~~ 3807 as 3807, - ~~~~~~~~~~~~~~~~~ 3808 as 3808, - ~~~~~~~~~~~~~~~~~ 3809 as 3809, - ~~~~~~~~~~~~~~~~~ 3810 as 3810, - ~~~~~~~~~~~~~~~~~ 3811 as 3811, - ~~~~~~~~~~~~~~~~~ 3812 as 3812, - ~~~~~~~~~~~~~~~~~ 3813 as 3813, - ~~~~~~~~~~~~~~~~~ 3814 as 3814, - ~~~~~~~~~~~~~~~~~ 3815 as 3815, - ~~~~~~~~~~~~~~~~~ 3816 as 3816, - ~~~~~~~~~~~~~~~~~ 3817 as 3817, - ~~~~~~~~~~~~~~~~~ 3818 as 3818, - ~~~~~~~~~~~~~~~~~ 3819 as 3819, - ~~~~~~~~~~~~~~~~~ 3820 as 3820, - ~~~~~~~~~~~~~~~~~ 3821 as 3821, - ~~~~~~~~~~~~~~~~~ 3822 as 3822, - ~~~~~~~~~~~~~~~~~ 3823 as 3823, - ~~~~~~~~~~~~~~~~~ 3824 as 3824, - ~~~~~~~~~~~~~~~~~ 3825 as 3825, - ~~~~~~~~~~~~~~~~~ 3826 as 3826, - ~~~~~~~~~~~~~~~~~ 3827 as 3827, - ~~~~~~~~~~~~~~~~~ 3828 as 3828, - ~~~~~~~~~~~~~~~~~ 3829 as 3829, - ~~~~~~~~~~~~~~~~~ 3830 as 3830, - ~~~~~~~~~~~~~~~~~ 3831 as 3831, - ~~~~~~~~~~~~~~~~~ 3832 as 3832, - ~~~~~~~~~~~~~~~~~ 3833 as 3833, - ~~~~~~~~~~~~~~~~~ 3834 as 3834, - ~~~~~~~~~~~~~~~~~ 3835 as 3835, - ~~~~~~~~~~~~~~~~~ 3836 as 3836, - ~~~~~~~~~~~~~~~~~ 3837 as 3837, - ~~~~~~~~~~~~~~~~~ 3838 as 3838, - ~~~~~~~~~~~~~~~~~ 3839 as 3839, - ~~~~~~~~~~~~~~~~~ 3840 as 3840, - ~~~~~~~~~~~~~~~~~ 3841 as 3841, - ~~~~~~~~~~~~~~~~~ 3842 as 3842, - ~~~~~~~~~~~~~~~~~ 3843 as 3843, - ~~~~~~~~~~~~~~~~~ 3844 as 3844, - ~~~~~~~~~~~~~~~~~ 3845 as 3845, - ~~~~~~~~~~~~~~~~~ 3846 as 3846, - ~~~~~~~~~~~~~~~~~ 3847 as 3847, - ~~~~~~~~~~~~~~~~~ 3848 as 3848, - ~~~~~~~~~~~~~~~~~ 3849 as 3849, - ~~~~~~~~~~~~~~~~~ 3850 as 3850, - ~~~~~~~~~~~~~~~~~ 3851 as 3851, - ~~~~~~~~~~~~~~~~~ 3852 as 3852, - ~~~~~~~~~~~~~~~~~ 3853 as 3853, - ~~~~~~~~~~~~~~~~~ 3854 as 3854, - ~~~~~~~~~~~~~~~~~ 3855 as 3855, - ~~~~~~~~~~~~~~~~~ 3856 as 3856, - ~~~~~~~~~~~~~~~~~ 3857 as 3857, - ~~~~~~~~~~~~~~~~~ 3858 as 3858, - ~~~~~~~~~~~~~~~~~ 3859 as 3859, - ~~~~~~~~~~~~~~~~~ 3860 as 3860, - ~~~~~~~~~~~~~~~~~ 3861 as 3861, - ~~~~~~~~~~~~~~~~~ 3862 as 3862, - ~~~~~~~~~~~~~~~~~ 3863 as 3863, - ~~~~~~~~~~~~~~~~~ 3864 as 3864, - ~~~~~~~~~~~~~~~~~ 3865 as 3865, - ~~~~~~~~~~~~~~~~~ 3866 as 3866, - ~~~~~~~~~~~~~~~~~ 3867 as 3867, - ~~~~~~~~~~~~~~~~~ 3868 as 3868, - ~~~~~~~~~~~~~~~~~ 3869 as 3869, - ~~~~~~~~~~~~~~~~~ 3870 as 3870, - ~~~~~~~~~~~~~~~~~ 3871 as 3871, - ~~~~~~~~~~~~~~~~~ 3872 as 3872, - ~~~~~~~~~~~~~~~~~ 3873 as 3873, - ~~~~~~~~~~~~~~~~~ 3874 as 3874, - ~~~~~~~~~~~~~~~~~ 3875 as 3875, - ~~~~~~~~~~~~~~~~~ 3876 as 3876, - ~~~~~~~~~~~~~~~~~ 3877 as 3877, - ~~~~~~~~~~~~~~~~~ 3878 as 3878, - ~~~~~~~~~~~~~~~~~ 3879 as 3879, - ~~~~~~~~~~~~~~~~~ 3880 as 3880, - ~~~~~~~~~~~~~~~~~ 3881 as 3881, - ~~~~~~~~~~~~~~~~~ 3882 as 3882, - ~~~~~~~~~~~~~~~~~ 3883 as 3883, - ~~~~~~~~~~~~~~~~~ 3884 as 3884, - ~~~~~~~~~~~~~~~~~ 3885 as 3885, - ~~~~~~~~~~~~~~~~~ 3886 as 3886, - ~~~~~~~~~~~~~~~~~ 3887 as 3887, - ~~~~~~~~~~~~~~~~~ 3888 as 3888, - ~~~~~~~~~~~~~~~~~ 3889 as 3889, - ~~~~~~~~~~~~~~~~~ 3890 as 3890, - ~~~~~~~~~~~~~~~~~ 3891 as 3891, - ~~~~~~~~~~~~~~~~~ 3892 as 3892, - ~~~~~~~~~~~~~~~~~ 3893 as 3893, - ~~~~~~~~~~~~~~~~~ 3894 as 3894, - ~~~~~~~~~~~~~~~~~ 3895 as 3895, - ~~~~~~~~~~~~~~~~~ 3896 as 3896, - ~~~~~~~~~~~~~~~~~ 3897 as 3897, - ~~~~~~~~~~~~~~~~~ 3898 as 3898, - ~~~~~~~~~~~~~~~~~ 3899 as 3899, - ~~~~~~~~~~~~~~~~~ 3900 as 3900, - ~~~~~~~~~~~~~~~~~ 3901 as 3901, - ~~~~~~~~~~~~~~~~~ 3902 as 3902, - ~~~~~~~~~~~~~~~~~ 3903 as 3903, - ~~~~~~~~~~~~~~~~~ 3904 as 3904, - ~~~~~~~~~~~~~~~~~ 3905 as 3905, - ~~~~~~~~~~~~~~~~~ 3906 as 3906, - ~~~~~~~~~~~~~~~~~ 3907 as 3907, - ~~~~~~~~~~~~~~~~~ 3908 as 3908, - ~~~~~~~~~~~~~~~~~ 3909 as 3909, - ~~~~~~~~~~~~~~~~~ 3910 as 3910, - ~~~~~~~~~~~~~~~~~ 3911 as 3911, - ~~~~~~~~~~~~~~~~~ 3912 as 3912, - ~~~~~~~~~~~~~~~~~ 3913 as 3913, - ~~~~~~~~~~~~~~~~~ 3914 as 3914, - ~~~~~~~~~~~~~~~~~ 3915 as 3915, - ~~~~~~~~~~~~~~~~~ 3916 as 3916, - ~~~~~~~~~~~~~~~~~ 3917 as 3917, - ~~~~~~~~~~~~~~~~~ 3918 as 3918, - ~~~~~~~~~~~~~~~~~ 3919 as 3919, - ~~~~~~~~~~~~~~~~~ 3920 as 3920, - ~~~~~~~~~~~~~~~~~ 3921 as 3921, - ~~~~~~~~~~~~~~~~~ 3922 as 3922, - ~~~~~~~~~~~~~~~~~ 3923 as 3923, - ~~~~~~~~~~~~~~~~~ 3924 as 3924, - ~~~~~~~~~~~~~~~~~ 3925 as 3925, - ~~~~~~~~~~~~~~~~~ 3926 as 3926, - ~~~~~~~~~~~~~~~~~ 3927 as 3927, - ~~~~~~~~~~~~~~~~~ 3928 as 3928, - ~~~~~~~~~~~~~~~~~ 3929 as 3929, - ~~~~~~~~~~~~~~~~~ 3930 as 3930, - ~~~~~~~~~~~~~~~~~ 3931 as 3931, - ~~~~~~~~~~~~~~~~~ 3932 as 3932, - ~~~~~~~~~~~~~~~~~ 3933 as 3933, - ~~~~~~~~~~~~~~~~~ 3934 as 3934, - ~~~~~~~~~~~~~~~~~ 3935 as 3935, - ~~~~~~~~~~~~~~~~~ 3936 as 3936, - ~~~~~~~~~~~~~~~~~ 3937 as 3937, - ~~~~~~~~~~~~~~~~~ 3938 as 3938, - ~~~~~~~~~~~~~~~~~ 3939 as 3939, - ~~~~~~~~~~~~~~~~~ 3940 as 3940, - ~~~~~~~~~~~~~~~~~ 3941 as 3941, - ~~~~~~~~~~~~~~~~~ 3942 as 3942, - ~~~~~~~~~~~~~~~~~ 3943 as 3943, - ~~~~~~~~~~~~~~~~~ 3944 as 3944, - ~~~~~~~~~~~~~~~~~ 3945 as 3945, - ~~~~~~~~~~~~~~~~~ 3946 as 3946, - ~~~~~~~~~~~~~~~~~ 3947 as 3947, - ~~~~~~~~~~~~~~~~~ 3948 as 3948, - ~~~~~~~~~~~~~~~~~ 3949 as 3949, - ~~~~~~~~~~~~~~~~~ 3950 as 3950, - ~~~~~~~~~~~~~~~~~ 3951 as 3951, - ~~~~~~~~~~~~~~~~~ 3952 as 3952, - ~~~~~~~~~~~~~~~~~ 3953 as 3953, - ~~~~~~~~~~~~~~~~~ 3954 as 3954, - ~~~~~~~~~~~~~~~~~ 3955 as 3955, - ~~~~~~~~~~~~~~~~~ 3956 as 3956, - ~~~~~~~~~~~~~~~~~ 3957 as 3957, - ~~~~~~~~~~~~~~~~~ 3958 as 3958, - ~~~~~~~~~~~~~~~~~ 3959 as 3959, - ~~~~~~~~~~~~~~~~~ 3960 as 3960, - ~~~~~~~~~~~~~~~~~ 3961 as 3961, - ~~~~~~~~~~~~~~~~~ 3962 as 3962, - ~~~~~~~~~~~~~~~~~ 3963 as 3963, - ~~~~~~~~~~~~~~~~~ 3964 as 3964, - ~~~~~~~~~~~~~~~~~ 3965 as 3965, - ~~~~~~~~~~~~~~~~~ 3966 as 3966, - ~~~~~~~~~~~~~~~~~ 3967 as 3967, - ~~~~~~~~~~~~~~~~~ 3968 as 3968, - ~~~~~~~~~~~~~~~~~ 3969 as 3969, - ~~~~~~~~~~~~~~~~~ 3970 as 3970, - ~~~~~~~~~~~~~~~~~ 3971 as 3971, - ~~~~~~~~~~~~~~~~~ 3972 as 3972, - ~~~~~~~~~~~~~~~~~ 3973 as 3973, - ~~~~~~~~~~~~~~~~~ 3974 as 3974, - ~~~~~~~~~~~~~~~~~ 3975 as 3975, - ~~~~~~~~~~~~~~~~~ 3976 as 3976, - ~~~~~~~~~~~~~~~~~ 3977 as 3977, - ~~~~~~~~~~~~~~~~~ 3978 as 3978, - ~~~~~~~~~~~~~~~~~ 3979 as 3979, - ~~~~~~~~~~~~~~~~~ 3980 as 3980, - ~~~~~~~~~~~~~~~~~ 3981 as 3981, - ~~~~~~~~~~~~~~~~~ 3982 as 3982, - ~~~~~~~~~~~~~~~~~ 3983 as 3983, - ~~~~~~~~~~~~~~~~~ 3984 as 3984, - ~~~~~~~~~~~~~~~~~ 3985 as 3985, - ~~~~~~~~~~~~~~~~~ 3986 as 3986, - ~~~~~~~~~~~~~~~~~ 3987 as 3987, - ~~~~~~~~~~~~~~~~~ 3988 as 3988, - ~~~~~~~~~~~~~~~~~ 3989 as 3989, - ~~~~~~~~~~~~~~~~~ 3990 as 3990, - ~~~~~~~~~~~~~~~~~ 3991 as 3991, - ~~~~~~~~~~~~~~~~~ 3992 as 3992, - ~~~~~~~~~~~~~~~~~ 3993 as 3993, - ~~~~~~~~~~~~~~~~~ 3994 as 3994, - ~~~~~~~~~~~~~~~~~ 3995 as 3995, - ~~~~~~~~~~~~~~~~~ 3996 as 3996, - ~~~~~~~~~~~~~~~~~ 3997 as 3997, - ~~~~~~~~~~~~~~~~~ 3998 as 3998, - ~~~~~~~~~~~~~~~~~ 3999 as 3999, - ~~~~~~~~~~~~~~~~~ 4000 as 4000, - ~~~~~~~~~~~~~~~~~ 4001 as 4001, - ~~~~~~~~~~~~~~~~~ 4002 as 4002, - ~~~~~~~~~~~~~~~~~ 4003 as 4003, - ~~~~~~~~~~~~~~~~~ 4004 as 4004, - ~~~~~~~~~~~~~~~~~ 4005 as 4005, - ~~~~~~~~~~~~~~~~~ 4006 as 4006, - ~~~~~~~~~~~~~~~~~ 4007 as 4007, - ~~~~~~~~~~~~~~~~~ 4008 as 4008, - ~~~~~~~~~~~~~~~~~ 4009 as 4009, - ~~~~~~~~~~~~~~~~~ 4010 as 4010, - ~~~~~~~~~~~~~~~~~ 4011 as 4011, - ~~~~~~~~~~~~~~~~~ 4012 as 4012, - ~~~~~~~~~~~~~~~~~ 4013 as 4013, - ~~~~~~~~~~~~~~~~~ 4014 as 4014, - ~~~~~~~~~~~~~~~~~ 4015 as 4015, - ~~~~~~~~~~~~~~~~~ 4016 as 4016, - ~~~~~~~~~~~~~~~~~ 4017 as 4017, - ~~~~~~~~~~~~~~~~~ 4018 as 4018, - ~~~~~~~~~~~~~~~~~ 4019 as 4019, - ~~~~~~~~~~~~~~~~~ 4020 as 4020, - ~~~~~~~~~~~~~~~~~ 4021 as 4021, - ~~~~~~~~~~~~~~~~~ 4022 as 4022, - ~~~~~~~~~~~~~~~~~ 4023 as 4023, - ~~~~~~~~~~~~~~~~~ 4024 as 4024, - ~~~~~~~~~~~~~~~~~ 4025 as 4025, - ~~~~~~~~~~~~~~~~~ 4026 as 4026, - ~~~~~~~~~~~~~~~~~ 4027 as 4027, - ~~~~~~~~~~~~~~~~~ 4028 as 4028, - ~~~~~~~~~~~~~~~~~ 4029 as 4029, - ~~~~~~~~~~~~~~~~~ 4030 as 4030, - ~~~~~~~~~~~~~~~~~ 4031 as 4031, - ~~~~~~~~~~~~~~~~~ 4032 as 4032, - ~~~~~~~~~~~~~~~~~ 4033 as 4033, - ~~~~~~~~~~~~~~~~~ 4034 as 4034, - ~~~~~~~~~~~~~~~~~ 4035 as 4035, - ~~~~~~~~~~~~~~~~~ 4036 as 4036, - ~~~~~~~~~~~~~~~~~ 4037 as 4037, - ~~~~~~~~~~~~~~~~~ 4038 as 4038, - ~~~~~~~~~~~~~~~~~ 4039 as 4039, - ~~~~~~~~~~~~~~~~~ 4040 as 4040, - ~~~~~~~~~~~~~~~~~ 4041 as 4041, - ~~~~~~~~~~~~~~~~~ 4042 as 4042, - ~~~~~~~~~~~~~~~~~ 4043 as 4043, - ~~~~~~~~~~~~~~~~~ 4044 as 4044, - ~~~~~~~~~~~~~~~~~ 4045 as 4045, - ~~~~~~~~~~~~~~~~~ 4046 as 4046, - ~~~~~~~~~~~~~~~~~ 4047 as 4047, - ~~~~~~~~~~~~~~~~~ 4048 as 4048, - ~~~~~~~~~~~~~~~~~ 4049 as 4049, - ~~~~~~~~~~~~~~~~~ 4050 as 4050, - ~~~~~~~~~~~~~~~~~ 4051 as 4051, - ~~~~~~~~~~~~~~~~~ 4052 as 4052, - ~~~~~~~~~~~~~~~~~ 4053 as 4053, - ~~~~~~~~~~~~~~~~~ 4054 as 4054, - ~~~~~~~~~~~~~~~~~ 4055 as 4055, - ~~~~~~~~~~~~~~~~~ 4056 as 4056, - ~~~~~~~~~~~~~~~~~ 4057 as 4057, - ~~~~~~~~~~~~~~~~~ 4058 as 4058, - ~~~~~~~~~~~~~~~~~ 4059 as 4059, - ~~~~~~~~~~~~~~~~~ 4060 as 4060, - ~~~~~~~~~~~~~~~~~ 4061 as 4061, - ~~~~~~~~~~~~~~~~~ 4062 as 4062, - ~~~~~~~~~~~~~~~~~ 4063 as 4063, - ~~~~~~~~~~~~~~~~~ 4064 as 4064, - ~~~~~~~~~~~~~~~~~ 4065 as 4065, - ~~~~~~~~~~~~~~~~~ 4066 as 4066, - ~~~~~~~~~~~~~~~~~ 4067 as 4067, - ~~~~~~~~~~~~~~~~~ 4068 as 4068, - ~~~~~~~~~~~~~~~~~ 4069 as 4069, - ~~~~~~~~~~~~~~~~~ 4070 as 4070, - ~~~~~~~~~~~~~~~~~ 4071 as 4071, - ~~~~~~~~~~~~~~~~~ 4072 as 4072, - ~~~~~~~~~~~~~~~~~ 4073 as 4073, - ~~~~~~~~~~~~~~~~~ 4074 as 4074, - ~~~~~~~~~~~~~~~~~ 4075 as 4075, - ~~~~~~~~~~~~~~~~~ 4076 as 4076, - ~~~~~~~~~~~~~~~~~ 4077 as 4077, - ~~~~~~~~~~~~~~~~~ 4078 as 4078, - ~~~~~~~~~~~~~~~~~ 4079 as 4079, - ~~~~~~~~~~~~~~~~~ 4080 as 4080, - ~~~~~~~~~~~~~~~~~ 4081 as 4081, - ~~~~~~~~~~~~~~~~~ 4082 as 4082, - ~~~~~~~~~~~~~~~~~ 4083 as 4083, - ~~~~~~~~~~~~~~~~~ 4084 as 4084, - ~~~~~~~~~~~~~~~~~ 4085 as 4085, - ~~~~~~~~~~~~~~~~~ 4086 as 4086, - ~~~~~~~~~~~~~~~~~ 4087 as 4087, - ~~~~~~~~~~~~~~~~~ 4088 as 4088, - ~~~~~~~~~~~~~~~~~ 4089 as 4089, - ~~~~~~~~~~~~~~~~~ 4090 as 4090, - ~~~~~~~~~~~~~~~~~ 4091 as 4091, - ~~~~~~~~~~~~~~~~~ 4092 as 4092, - ~~~~~~~~~~~~~~~~~ 4093 as 4093, - ~~~~~~~~~~~~~~~~~ 4094 as 4094, - ~~~~~~~~~~~~~~~~~ 4095 as 4095, - ~~~~~~~~~~~~~~~~~ 4096 as 4096, - ~~~~~~~~~~~~~~~~~ 4097 as 4097, - ~~~~~~~~~~~~~~~~~ 4098 as 4098, - ~~~~~~~~~~~~~~~~~ 4099 as 4099, - ~~~~~~~~~~~~~~~~~ 4100 as 4100, - ~~~~~~~~~~~~~~~~~ 4101 as 4101, - ~~~~~~~~~~~~~~~~~ 4102 as 4102, - ~~~~~~~~~~~~~~~~~ 4103 as 4103, - ~~~~~~~~~~~~~~~~~ 4104 as 4104, - ~~~~~~~~~~~~~~~~~ 4105 as 4105, - ~~~~~~~~~~~~~~~~~ 4106 as 4106, - ~~~~~~~~~~~~~~~~~ 4107 as 4107, - ~~~~~~~~~~~~~~~~~ 4108 as 4108, - ~~~~~~~~~~~~~~~~~ 4109 as 4109, - ~~~~~~~~~~~~~~~~~ 4110 as 4110, - ~~~~~~~~~~~~~~~~~ 4111 as 4111, - ~~~~~~~~~~~~~~~~~ 4112 as 4112, - ~~~~~~~~~~~~~~~~~ 4113 as 4113, - ~~~~~~~~~~~~~~~~~ 4114 as 4114, - ~~~~~~~~~~~~~~~~~ 4115 as 4115, - ~~~~~~~~~~~~~~~~~ 4116 as 4116, - ~~~~~~~~~~~~~~~~~ 4117 as 4117, - ~~~~~~~~~~~~~~~~~ 4118 as 4118, - ~~~~~~~~~~~~~~~~~ 4119 as 4119, - ~~~~~~~~~~~~~~~~~ 4120 as 4120, - ~~~~~~~~~~~~~~~~~ 4121 as 4121, - ~~~~~~~~~~~~~~~~~ 4122 as 4122, - ~~~~~~~~~~~~~~~~~ 4123 as 4123, - ~~~~~~~~~~~~~~~~~ 4124 as 4124, - ~~~~~~~~~~~~~~~~~ 4125 as 4125, - ~~~~~~~~~~~~~~~~~ 4126 as 4126, - ~~~~~~~~~~~~~~~~~ 4127 as 4127, - ~~~~~~~~~~~~~~~~~ 4128 as 4128, - ~~~~~~~~~~~~~~~~~ 4129 as 4129, - ~~~~~~~~~~~~~~~~~ 4130 as 4130, - ~~~~~~~~~~~~~~~~~ 4131 as 4131, - ~~~~~~~~~~~~~~~~~ 4132 as 4132, - ~~~~~~~~~~~~~~~~~ 4133 as 4133, - ~~~~~~~~~~~~~~~~~ 4134 as 4134, - ~~~~~~~~~~~~~~~~~ 4135 as 4135, - ~~~~~~~~~~~~~~~~~ 4136 as 4136, - ~~~~~~~~~~~~~~~~~ 4137 as 4137, - ~~~~~~~~~~~~~~~~~ 4138 as 4138, - ~~~~~~~~~~~~~~~~~ 4139 as 4139, - ~~~~~~~~~~~~~~~~~ 4140 as 4140, - ~~~~~~~~~~~~~~~~~ 4141 as 4141, - ~~~~~~~~~~~~~~~~~ 4142 as 4142, - ~~~~~~~~~~~~~~~~~ 4143 as 4143, - ~~~~~~~~~~~~~~~~~ 4144 as 4144, - ~~~~~~~~~~~~~~~~~ 4145 as 4145, - ~~~~~~~~~~~~~~~~~ 4146 as 4146, - ~~~~~~~~~~~~~~~~~ 4147 as 4147, - ~~~~~~~~~~~~~~~~~ 4148 as 4148, - ~~~~~~~~~~~~~~~~~ 4149 as 4149, - ~~~~~~~~~~~~~~~~~ 4150 as 4150, - ~~~~~~~~~~~~~~~~~ 4151 as 4151, - ~~~~~~~~~~~~~~~~~ 4152 as 4152, - ~~~~~~~~~~~~~~~~~ 4153 as 4153, - ~~~~~~~~~~~~~~~~~ 4154 as 4154, - ~~~~~~~~~~~~~~~~~ 4155 as 4155, - ~~~~~~~~~~~~~~~~~ 4156 as 4156, - ~~~~~~~~~~~~~~~~~ 4157 as 4157, - ~~~~~~~~~~~~~~~~~ 4158 as 4158, - ~~~~~~~~~~~~~~~~~ 4159 as 4159, - ~~~~~~~~~~~~~~~~~ 4160 as 4160, - ~~~~~~~~~~~~~~~~~ 4161 as 4161, - ~~~~~~~~~~~~~~~~~ 4162 as 4162, - ~~~~~~~~~~~~~~~~~ 4163 as 4163, - ~~~~~~~~~~~~~~~~~ 4164 as 4164, - ~~~~~~~~~~~~~~~~~ 4165 as 4165, - ~~~~~~~~~~~~~~~~~ 4166 as 4166, - ~~~~~~~~~~~~~~~~~ 4167 as 4167, - ~~~~~~~~~~~~~~~~~ 4168 as 4168, - ~~~~~~~~~~~~~~~~~ 4169 as 4169, - ~~~~~~~~~~~~~~~~~ 4170 as 4170, - ~~~~~~~~~~~~~~~~~ 4171 as 4171, - ~~~~~~~~~~~~~~~~~ 4172 as 4172, - ~~~~~~~~~~~~~~~~~ 4173 as 4173, - ~~~~~~~~~~~~~~~~~ 4174 as 4174, - ~~~~~~~~~~~~~~~~~ 4175 as 4175, - ~~~~~~~~~~~~~~~~~ 4176 as 4176, - ~~~~~~~~~~~~~~~~~ 4177 as 4177, - ~~~~~~~~~~~~~~~~~ 4178 as 4178, - ~~~~~~~~~~~~~~~~~ 4179 as 4179, - ~~~~~~~~~~~~~~~~~ 4180 as 4180, - ~~~~~~~~~~~~~~~~~ 4181 as 4181, - ~~~~~~~~~~~~~~~~~ 4182 as 4182, - ~~~~~~~~~~~~~~~~~ 4183 as 4183, - ~~~~~~~~~~~~~~~~~ 4184 as 4184, - ~~~~~~~~~~~~~~~~~ 4185 as 4185, - ~~~~~~~~~~~~~~~~~ 4186 as 4186, - ~~~~~~~~~~~~~~~~~ 4187 as 4187, - ~~~~~~~~~~~~~~~~~ 4188 as 4188, - ~~~~~~~~~~~~~~~~~ 4189 as 4189, - ~~~~~~~~~~~~~~~~~ 4190 as 4190, - ~~~~~~~~~~~~~~~~~ 4191 as 4191, - ~~~~~~~~~~~~~~~~~ 4192 as 4192, - ~~~~~~~~~~~~~~~~~ 4193 as 4193, - ~~~~~~~~~~~~~~~~~ 4194 as 4194, - ~~~~~~~~~~~~~~~~~ 4195 as 4195, - ~~~~~~~~~~~~~~~~~ 4196 as 4196, - ~~~~~~~~~~~~~~~~~ 4197 as 4197, - ~~~~~~~~~~~~~~~~~ 4198 as 4198, - ~~~~~~~~~~~~~~~~~ 4199 as 4199, - ~~~~~~~~~~~~~~~~~ 4200 as 4200, - ~~~~~~~~~~~~~~~~~ 4201 as 4201, - ~~~~~~~~~~~~~~~~~ 4202 as 4202, - ~~~~~~~~~~~~~~~~~ 4203 as 4203, - ~~~~~~~~~~~~~~~~~ 4204 as 4204, - ~~~~~~~~~~~~~~~~~ 4205 as 4205, - ~~~~~~~~~~~~~~~~~ 4206 as 4206, - ~~~~~~~~~~~~~~~~~ 4207 as 4207, - ~~~~~~~~~~~~~~~~~ 4208 as 4208, - ~~~~~~~~~~~~~~~~~ 4209 as 4209, - ~~~~~~~~~~~~~~~~~ 4210 as 4210, - ~~~~~~~~~~~~~~~~~ 4211 as 4211, - ~~~~~~~~~~~~~~~~~ 4212 as 4212, - ~~~~~~~~~~~~~~~~~ 4213 as 4213, - ~~~~~~~~~~~~~~~~~ 4214 as 4214, - ~~~~~~~~~~~~~~~~~ 4215 as 4215, - ~~~~~~~~~~~~~~~~~ 4216 as 4216, - ~~~~~~~~~~~~~~~~~ 4217 as 4217, - ~~~~~~~~~~~~~~~~~ 4218 as 4218, - ~~~~~~~~~~~~~~~~~ 4219 as 4219, - ~~~~~~~~~~~~~~~~~ 4220 as 4220, - ~~~~~~~~~~~~~~~~~ 4221 as 4221, - ~~~~~~~~~~~~~~~~~ 4222 as 4222, - ~~~~~~~~~~~~~~~~~ 4223 as 4223, - ~~~~~~~~~~~~~~~~~ 4224 as 4224, - ~~~~~~~~~~~~~~~~~ 4225 as 4225, - ~~~~~~~~~~~~~~~~~ 4226 as 4226, - ~~~~~~~~~~~~~~~~~ 4227 as 4227, - ~~~~~~~~~~~~~~~~~ 4228 as 4228, - ~~~~~~~~~~~~~~~~~ 4229 as 4229, - ~~~~~~~~~~~~~~~~~ 4230 as 4230, - ~~~~~~~~~~~~~~~~~ 4231 as 4231, - ~~~~~~~~~~~~~~~~~ 4232 as 4232, - ~~~~~~~~~~~~~~~~~ 4233 as 4233, - ~~~~~~~~~~~~~~~~~ 4234 as 4234, - ~~~~~~~~~~~~~~~~~ 4235 as 4235, - ~~~~~~~~~~~~~~~~~ 4236 as 4236, - ~~~~~~~~~~~~~~~~~ 4237 as 4237, - ~~~~~~~~~~~~~~~~~ 4238 as 4238, - ~~~~~~~~~~~~~~~~~ 4239 as 4239, - ~~~~~~~~~~~~~~~~~ 4240 as 4240, - ~~~~~~~~~~~~~~~~~ 4241 as 4241, - ~~~~~~~~~~~~~~~~~ 4242 as 4242, - ~~~~~~~~~~~~~~~~~ 4243 as 4243, - ~~~~~~~~~~~~~~~~~ 4244 as 4244, - ~~~~~~~~~~~~~~~~~ 4245 as 4245, - ~~~~~~~~~~~~~~~~~ 4246 as 4246, - ~~~~~~~~~~~~~~~~~ 4247 as 4247, - ~~~~~~~~~~~~~~~~~ 4248 as 4248, - ~~~~~~~~~~~~~~~~~ 4249 as 4249, - ~~~~~~~~~~~~~~~~~ 4250 as 4250, - ~~~~~~~~~~~~~~~~~ 4251 as 4251, - ~~~~~~~~~~~~~~~~~ 4252 as 4252, - ~~~~~~~~~~~~~~~~~ 4253 as 4253, - ~~~~~~~~~~~~~~~~~ 4254 as 4254, - ~~~~~~~~~~~~~~~~~ 4255 as 4255, - ~~~~~~~~~~~~~~~~~ 4256 as 4256, - ~~~~~~~~~~~~~~~~~ 4257 as 4257, - ~~~~~~~~~~~~~~~~~ 4258 as 4258, - ~~~~~~~~~~~~~~~~~ 4259 as 4259, - ~~~~~~~~~~~~~~~~~ 4260 as 4260, - ~~~~~~~~~~~~~~~~~ 4261 as 4261, - ~~~~~~~~~~~~~~~~~ 4262 as 4262, - ~~~~~~~~~~~~~~~~~ 4263 as 4263, - ~~~~~~~~~~~~~~~~~ 4264 as 4264, - ~~~~~~~~~~~~~~~~~ 4265 as 4265, - ~~~~~~~~~~~~~~~~~ 4266 as 4266, - ~~~~~~~~~~~~~~~~~ 4267 as 4267, - ~~~~~~~~~~~~~~~~~ 4268 as 4268, - ~~~~~~~~~~~~~~~~~ 4269 as 4269, - ~~~~~~~~~~~~~~~~~ 4270 as 4270, - ~~~~~~~~~~~~~~~~~ 4271 as 4271, - ~~~~~~~~~~~~~~~~~ 4272 as 4272, - ~~~~~~~~~~~~~~~~~ 4273 as 4273, - ~~~~~~~~~~~~~~~~~ 4274 as 4274, - ~~~~~~~~~~~~~~~~~ 4275 as 4275, - ~~~~~~~~~~~~~~~~~ 4276 as 4276, - ~~~~~~~~~~~~~~~~~ 4277 as 4277, - ~~~~~~~~~~~~~~~~~ 4278 as 4278, - ~~~~~~~~~~~~~~~~~ 4279 as 4279, - ~~~~~~~~~~~~~~~~~ 4280 as 4280, - ~~~~~~~~~~~~~~~~~ 4281 as 4281, - ~~~~~~~~~~~~~~~~~ 4282 as 4282, - ~~~~~~~~~~~~~~~~~ 4283 as 4283, - ~~~~~~~~~~~~~~~~~ 4284 as 4284, - ~~~~~~~~~~~~~~~~~ 4285 as 4285, - ~~~~~~~~~~~~~~~~~ 4286 as 4286, - ~~~~~~~~~~~~~~~~~ 4287 as 4287, - ~~~~~~~~~~~~~~~~~ 4288 as 4288, - ~~~~~~~~~~~~~~~~~ 4289 as 4289, - ~~~~~~~~~~~~~~~~~ 4290 as 4290, - ~~~~~~~~~~~~~~~~~ 4291 as 4291, - ~~~~~~~~~~~~~~~~~ 4292 as 4292, - ~~~~~~~~~~~~~~~~~ 4293 as 4293, - ~~~~~~~~~~~~~~~~~ 4294 as 4294, - ~~~~~~~~~~~~~~~~~ 4295 as 4295, - ~~~~~~~~~~~~~~~~~ 4296 as 4296, - ~~~~~~~~~~~~~~~~~ 4297 as 4297, - ~~~~~~~~~~~~~~~~~ 4298 as 4298, - ~~~~~~~~~~~~~~~~~ 4299 as 4299, - ~~~~~~~~~~~~~~~~~ 4300 as 4300, - ~~~~~~~~~~~~~~~~~ 4301 as 4301, - ~~~~~~~~~~~~~~~~~ 4302 as 4302, - ~~~~~~~~~~~~~~~~~ 4303 as 4303, - ~~~~~~~~~~~~~~~~~ 4304 as 4304, - ~~~~~~~~~~~~~~~~~ 4305 as 4305, - ~~~~~~~~~~~~~~~~~ 4306 as 4306, - ~~~~~~~~~~~~~~~~~ 4307 as 4307, - ~~~~~~~~~~~~~~~~~ 4308 as 4308, - ~~~~~~~~~~~~~~~~~ 4309 as 4309, - ~~~~~~~~~~~~~~~~~ 4310 as 4310, - ~~~~~~~~~~~~~~~~~ 4311 as 4311, - ~~~~~~~~~~~~~~~~~ 4312 as 4312, - ~~~~~~~~~~~~~~~~~ 4313 as 4313, - ~~~~~~~~~~~~~~~~~ 4314 as 4314, - ~~~~~~~~~~~~~~~~~ 4315 as 4315, - ~~~~~~~~~~~~~~~~~ 4316 as 4316, - ~~~~~~~~~~~~~~~~~ 4317 as 4317, - ~~~~~~~~~~~~~~~~~ 4318 as 4318, - ~~~~~~~~~~~~~~~~~ 4319 as 4319, - ~~~~~~~~~~~~~~~~~ 4320 as 4320, - ~~~~~~~~~~~~~~~~~ 4321 as 4321, - ~~~~~~~~~~~~~~~~~ 4322 as 4322, - ~~~~~~~~~~~~~~~~~ 4323 as 4323, - ~~~~~~~~~~~~~~~~~ 4324 as 4324, - ~~~~~~~~~~~~~~~~~ 4325 as 4325, - ~~~~~~~~~~~~~~~~~ 4326 as 4326, - ~~~~~~~~~~~~~~~~~ 4327 as 4327, - ~~~~~~~~~~~~~~~~~ 4328 as 4328, - ~~~~~~~~~~~~~~~~~ 4329 as 4329, - ~~~~~~~~~~~~~~~~~ 4330 as 4330, - ~~~~~~~~~~~~~~~~~ 4331 as 4331, - ~~~~~~~~~~~~~~~~~ 4332 as 4332, - ~~~~~~~~~~~~~~~~~ 4333 as 4333, - ~~~~~~~~~~~~~~~~~ 4334 as 4334, - ~~~~~~~~~~~~~~~~~ 4335 as 4335, - ~~~~~~~~~~~~~~~~~ 4336 as 4336, - ~~~~~~~~~~~~~~~~~ 4337 as 4337, - ~~~~~~~~~~~~~~~~~ 4338 as 4338, - ~~~~~~~~~~~~~~~~~ 4339 as 4339, - ~~~~~~~~~~~~~~~~~ 4340 as 4340, - ~~~~~~~~~~~~~~~~~ 4341 as 4341, - ~~~~~~~~~~~~~~~~~ 4342 as 4342, - ~~~~~~~~~~~~~~~~~ 4343 as 4343, - ~~~~~~~~~~~~~~~~~ 4344 as 4344, - ~~~~~~~~~~~~~~~~~ 4345 as 4345, - ~~~~~~~~~~~~~~~~~ 4346 as 4346, - ~~~~~~~~~~~~~~~~~ 4347 as 4347, - ~~~~~~~~~~~~~~~~~ 4348 as 4348, - ~~~~~~~~~~~~~~~~~ 4349 as 4349, - ~~~~~~~~~~~~~~~~~ 4350 as 4350, - ~~~~~~~~~~~~~~~~~ 4351 as 4351, - ~~~~~~~~~~~~~~~~~ 4352 as 4352, - ~~~~~~~~~~~~~~~~~ 4353 as 4353, - ~~~~~~~~~~~~~~~~~ 4354 as 4354, - ~~~~~~~~~~~~~~~~~ 4355 as 4355, - ~~~~~~~~~~~~~~~~~ 4356 as 4356, - ~~~~~~~~~~~~~~~~~ 4357 as 4357, - ~~~~~~~~~~~~~~~~~ 4358 as 4358, - ~~~~~~~~~~~~~~~~~ 4359 as 4359, - ~~~~~~~~~~~~~~~~~ 4360 as 4360, - ~~~~~~~~~~~~~~~~~ 4361 as 4361, - ~~~~~~~~~~~~~~~~~ 4362 as 4362, - ~~~~~~~~~~~~~~~~~ 4363 as 4363, - ~~~~~~~~~~~~~~~~~ 4364 as 4364, - ~~~~~~~~~~~~~~~~~ 4365 as 4365, - ~~~~~~~~~~~~~~~~~ 4366 as 4366, - ~~~~~~~~~~~~~~~~~ 4367 as 4367, - ~~~~~~~~~~~~~~~~~ 4368 as 4368, - ~~~~~~~~~~~~~~~~~ 4369 as 4369, - ~~~~~~~~~~~~~~~~~ 4370 as 4370, - ~~~~~~~~~~~~~~~~~ 4371 as 4371, - ~~~~~~~~~~~~~~~~~ 4372 as 4372, - ~~~~~~~~~~~~~~~~~ 4373 as 4373, - ~~~~~~~~~~~~~~~~~ 4374 as 4374, - ~~~~~~~~~~~~~~~~~ 4375 as 4375, - ~~~~~~~~~~~~~~~~~ 4376 as 4376, - ~~~~~~~~~~~~~~~~~ 4377 as 4377, - ~~~~~~~~~~~~~~~~~ 4378 as 4378, - ~~~~~~~~~~~~~~~~~ 4379 as 4379, - ~~~~~~~~~~~~~~~~~ 4380 as 4380, - ~~~~~~~~~~~~~~~~~ 4381 as 4381, - ~~~~~~~~~~~~~~~~~ 4382 as 4382, - ~~~~~~~~~~~~~~~~~ 4383 as 4383, - ~~~~~~~~~~~~~~~~~ 4384 as 4384, - ~~~~~~~~~~~~~~~~~ 4385 as 4385, - ~~~~~~~~~~~~~~~~~ 4386 as 4386, - ~~~~~~~~~~~~~~~~~ 4387 as 4387, - ~~~~~~~~~~~~~~~~~ 4388 as 4388, - ~~~~~~~~~~~~~~~~~ 4389 as 4389, - ~~~~~~~~~~~~~~~~~ 4390 as 4390, - ~~~~~~~~~~~~~~~~~ 4391 as 4391, - ~~~~~~~~~~~~~~~~~ 4392 as 4392, - ~~~~~~~~~~~~~~~~~ 4393 as 4393, - ~~~~~~~~~~~~~~~~~ 4394 as 4394, - ~~~~~~~~~~~~~~~~~ 4395 as 4395, - ~~~~~~~~~~~~~~~~~ 4396 as 4396, - ~~~~~~~~~~~~~~~~~ 4397 as 4397, - ~~~~~~~~~~~~~~~~~ 4398 as 4398, - ~~~~~~~~~~~~~~~~~ 4399 as 4399, - ~~~~~~~~~~~~~~~~~ 4400 as 4400, - ~~~~~~~~~~~~~~~~~ 4401 as 4401, - ~~~~~~~~~~~~~~~~~ 4402 as 4402, - ~~~~~~~~~~~~~~~~~ 4403 as 4403, - ~~~~~~~~~~~~~~~~~ 4404 as 4404, - ~~~~~~~~~~~~~~~~~ 4405 as 4405, - ~~~~~~~~~~~~~~~~~ 4406 as 4406, - ~~~~~~~~~~~~~~~~~ 4407 as 4407, - ~~~~~~~~~~~~~~~~~ 4408 as 4408, - ~~~~~~~~~~~~~~~~~ 4409 as 4409, - ~~~~~~~~~~~~~~~~~ 4410 as 4410, - ~~~~~~~~~~~~~~~~~ 4411 as 4411, - ~~~~~~~~~~~~~~~~~ 4412 as 4412, - ~~~~~~~~~~~~~~~~~ 4413 as 4413, - ~~~~~~~~~~~~~~~~~ 4414 as 4414, - ~~~~~~~~~~~~~~~~~ 4415 as 4415, - ~~~~~~~~~~~~~~~~~ 4416 as 4416, - ~~~~~~~~~~~~~~~~~ 4417 as 4417, - ~~~~~~~~~~~~~~~~~ 4418 as 4418, - ~~~~~~~~~~~~~~~~~ 4419 as 4419, - ~~~~~~~~~~~~~~~~~ 4420 as 4420, - ~~~~~~~~~~~~~~~~~ 4421 as 4421, - ~~~~~~~~~~~~~~~~~ 4422 as 4422, - ~~~~~~~~~~~~~~~~~ 4423 as 4423, - ~~~~~~~~~~~~~~~~~ 4424 as 4424, - ~~~~~~~~~~~~~~~~~ 4425 as 4425, - ~~~~~~~~~~~~~~~~~ 4426 as 4426, - ~~~~~~~~~~~~~~~~~ 4427 as 4427, - ~~~~~~~~~~~~~~~~~ 4428 as 4428, - ~~~~~~~~~~~~~~~~~ 4429 as 4429, - ~~~~~~~~~~~~~~~~~ 4430 as 4430, - ~~~~~~~~~~~~~~~~~ 4431 as 4431, - ~~~~~~~~~~~~~~~~~ 4432 as 4432, - ~~~~~~~~~~~~~~~~~ 4433 as 4433, - ~~~~~~~~~~~~~~~~~ 4434 as 4434, - ~~~~~~~~~~~~~~~~~ 4435 as 4435, - ~~~~~~~~~~~~~~~~~ 4436 as 4436, - ~~~~~~~~~~~~~~~~~ 4437 as 4437, - ~~~~~~~~~~~~~~~~~ 4438 as 4438, - ~~~~~~~~~~~~~~~~~ 4439 as 4439, - ~~~~~~~~~~~~~~~~~ 4440 as 4440, - ~~~~~~~~~~~~~~~~~ 4441 as 4441, - ~~~~~~~~~~~~~~~~~ 4442 as 4442, - ~~~~~~~~~~~~~~~~~ 4443 as 4443, - ~~~~~~~~~~~~~~~~~ 4444 as 4444, - ~~~~~~~~~~~~~~~~~ 4445 as 4445, - ~~~~~~~~~~~~~~~~~ 4446 as 4446, - ~~~~~~~~~~~~~~~~~ 4447 as 4447, - ~~~~~~~~~~~~~~~~~ 4448 as 4448, - ~~~~~~~~~~~~~~~~~ 4449 as 4449, - ~~~~~~~~~~~~~~~~~ 4450 as 4450, - ~~~~~~~~~~~~~~~~~ 4451 as 4451, - ~~~~~~~~~~~~~~~~~ 4452 as 4452, - ~~~~~~~~~~~~~~~~~ 4453 as 4453, - ~~~~~~~~~~~~~~~~~ 4454 as 4454, - ~~~~~~~~~~~~~~~~~ 4455 as 4455, - ~~~~~~~~~~~~~~~~~ 4456 as 4456, - ~~~~~~~~~~~~~~~~~ 4457 as 4457, - ~~~~~~~~~~~~~~~~~ 4458 as 4458, - ~~~~~~~~~~~~~~~~~ 4459 as 4459, - ~~~~~~~~~~~~~~~~~ 4460 as 4460, - ~~~~~~~~~~~~~~~~~ 4461 as 4461, - ~~~~~~~~~~~~~~~~~ 4462 as 4462, - ~~~~~~~~~~~~~~~~~ 4463 as 4463, - ~~~~~~~~~~~~~~~~~ 4464 as 4464, - ~~~~~~~~~~~~~~~~~ 4465 as 4465, - ~~~~~~~~~~~~~~~~~ 4466 as 4466, - ~~~~~~~~~~~~~~~~~ 4467 as 4467, - ~~~~~~~~~~~~~~~~~ 4468 as 4468, - ~~~~~~~~~~~~~~~~~ 4469 as 4469, - ~~~~~~~~~~~~~~~~~ 4470 as 4470, - ~~~~~~~~~~~~~~~~~ 4471 as 4471, - ~~~~~~~~~~~~~~~~~ 4472 as 4472, - ~~~~~~~~~~~~~~~~~ 4473 as 4473, - ~~~~~~~~~~~~~~~~~ 4474 as 4474, - ~~~~~~~~~~~~~~~~~ 4475 as 4475, - ~~~~~~~~~~~~~~~~~ 4476 as 4476, - ~~~~~~~~~~~~~~~~~ 4477 as 4477, - ~~~~~~~~~~~~~~~~~ 4478 as 4478, - ~~~~~~~~~~~~~~~~~ 4479 as 4479, - ~~~~~~~~~~~~~~~~~ 4480 as 4480, - ~~~~~~~~~~~~~~~~~ 4481 as 4481, - ~~~~~~~~~~~~~~~~~ 4482 as 4482, - ~~~~~~~~~~~~~~~~~ 4483 as 4483, - ~~~~~~~~~~~~~~~~~ 4484 as 4484, - ~~~~~~~~~~~~~~~~~ 4485 as 4485, - ~~~~~~~~~~~~~~~~~ 4486 as 4486, - ~~~~~~~~~~~~~~~~~ 4487 as 4487, - ~~~~~~~~~~~~~~~~~ 4488 as 4488, - ~~~~~~~~~~~~~~~~~ 4489 as 4489, - ~~~~~~~~~~~~~~~~~ 4490 as 4490, - ~~~~~~~~~~~~~~~~~ 4491 as 4491, - ~~~~~~~~~~~~~~~~~ 4492 as 4492, - ~~~~~~~~~~~~~~~~~ 4493 as 4493, - ~~~~~~~~~~~~~~~~~ 4494 as 4494, - ~~~~~~~~~~~~~~~~~ 4495 as 4495, - ~~~~~~~~~~~~~~~~~ 4496 as 4496, - ~~~~~~~~~~~~~~~~~ 4497 as 4497, - ~~~~~~~~~~~~~~~~~ 4498 as 4498, - ~~~~~~~~~~~~~~~~~ 4499 as 4499, - ~~~~~~~~~~~~~~~~~ 4500 as 4500, - ~~~~~~~~~~~~~~~~~ 4501 as 4501, - ~~~~~~~~~~~~~~~~~ 4502 as 4502, - ~~~~~~~~~~~~~~~~~ 4503 as 4503, - ~~~~~~~~~~~~~~~~~ 4504 as 4504, - ~~~~~~~~~~~~~~~~~ 4505 as 4505, - ~~~~~~~~~~~~~~~~~ 4506 as 4506, - ~~~~~~~~~~~~~~~~~ 4507 as 4507, - ~~~~~~~~~~~~~~~~~ 4508 as 4508, - ~~~~~~~~~~~~~~~~~ 4509 as 4509, - ~~~~~~~~~~~~~~~~~ 4510 as 4510, - ~~~~~~~~~~~~~~~~~ 4511 as 4511, - ~~~~~~~~~~~~~~~~~ 4512 as 4512, - ~~~~~~~~~~~~~~~~~ 4513 as 4513, - ~~~~~~~~~~~~~~~~~ 4514 as 4514, - ~~~~~~~~~~~~~~~~~ 4515 as 4515, - ~~~~~~~~~~~~~~~~~ 4516 as 4516, - ~~~~~~~~~~~~~~~~~ 4517 as 4517, - ~~~~~~~~~~~~~~~~~ 4518 as 4518, - ~~~~~~~~~~~~~~~~~ 4519 as 4519, - ~~~~~~~~~~~~~~~~~ 4520 as 4520, - ~~~~~~~~~~~~~~~~~ 4521 as 4521, - ~~~~~~~~~~~~~~~~~ 4522 as 4522, - ~~~~~~~~~~~~~~~~~ 4523 as 4523, - ~~~~~~~~~~~~~~~~~ 4524 as 4524, - ~~~~~~~~~~~~~~~~~ 4525 as 4525, - ~~~~~~~~~~~~~~~~~ 4526 as 4526, - ~~~~~~~~~~~~~~~~~ 4527 as 4527, - ~~~~~~~~~~~~~~~~~ 4528 as 4528, - ~~~~~~~~~~~~~~~~~ 4529 as 4529, - ~~~~~~~~~~~~~~~~~ 4530 as 4530, - ~~~~~~~~~~~~~~~~~ 4531 as 4531, - ~~~~~~~~~~~~~~~~~ 4532 as 4532, - ~~~~~~~~~~~~~~~~~ 4533 as 4533, - ~~~~~~~~~~~~~~~~~ 4534 as 4534, - ~~~~~~~~~~~~~~~~~ 4535 as 4535, - ~~~~~~~~~~~~~~~~~ 4536 as 4536, - ~~~~~~~~~~~~~~~~~ 4537 as 4537, - ~~~~~~~~~~~~~~~~~ 4538 as 4538, - ~~~~~~~~~~~~~~~~~ 4539 as 4539, - ~~~~~~~~~~~~~~~~~ 4540 as 4540, - ~~~~~~~~~~~~~~~~~ 4541 as 4541, - ~~~~~~~~~~~~~~~~~ 4542 as 4542, - ~~~~~~~~~~~~~~~~~ 4543 as 4543, - ~~~~~~~~~~~~~~~~~ 4544 as 4544, - ~~~~~~~~~~~~~~~~~ 4545 as 4545, - ~~~~~~~~~~~~~~~~~ 4546 as 4546, - ~~~~~~~~~~~~~~~~~ 4547 as 4547, - ~~~~~~~~~~~~~~~~~ 4548 as 4548, - ~~~~~~~~~~~~~~~~~ 4549 as 4549, - ~~~~~~~~~~~~~~~~~ 4550 as 4550, - ~~~~~~~~~~~~~~~~~ 4551 as 4551, - ~~~~~~~~~~~~~~~~~ 4552 as 4552, - ~~~~~~~~~~~~~~~~~ 4553 as 4553, - ~~~~~~~~~~~~~~~~~ 4554 as 4554, - ~~~~~~~~~~~~~~~~~ 4555 as 4555, - ~~~~~~~~~~~~~~~~~ 4556 as 4556, - ~~~~~~~~~~~~~~~~~ 4557 as 4557, - ~~~~~~~~~~~~~~~~~ 4558 as 4558, - ~~~~~~~~~~~~~~~~~ 4559 as 4559, - ~~~~~~~~~~~~~~~~~ 4560 as 4560, - ~~~~~~~~~~~~~~~~~ 4561 as 4561, - ~~~~~~~~~~~~~~~~~ 4562 as 4562, - ~~~~~~~~~~~~~~~~~ 4563 as 4563, - ~~~~~~~~~~~~~~~~~ 4564 as 4564, - ~~~~~~~~~~~~~~~~~ 4565 as 4565, - ~~~~~~~~~~~~~~~~~ 4566 as 4566, - ~~~~~~~~~~~~~~~~~ 4567 as 4567, - ~~~~~~~~~~~~~~~~~ 4568 as 4568, - ~~~~~~~~~~~~~~~~~ 4569 as 4569, - ~~~~~~~~~~~~~~~~~ 4570 as 4570, - ~~~~~~~~~~~~~~~~~ 4571 as 4571, - ~~~~~~~~~~~~~~~~~ 4572 as 4572, - ~~~~~~~~~~~~~~~~~ 4573 as 4573, - ~~~~~~~~~~~~~~~~~ 4574 as 4574, - ~~~~~~~~~~~~~~~~~ 4575 as 4575, - ~~~~~~~~~~~~~~~~~ 4576 as 4576, - ~~~~~~~~~~~~~~~~~ 4577 as 4577, - ~~~~~~~~~~~~~~~~~ 4578 as 4578, - ~~~~~~~~~~~~~~~~~ 4579 as 4579, - ~~~~~~~~~~~~~~~~~ 4580 as 4580, - ~~~~~~~~~~~~~~~~~ 4581 as 4581, - ~~~~~~~~~~~~~~~~~ 4582 as 4582, - ~~~~~~~~~~~~~~~~~ 4583 as 4583, - ~~~~~~~~~~~~~~~~~ 4584 as 4584, - ~~~~~~~~~~~~~~~~~ 4585 as 4585, - ~~~~~~~~~~~~~~~~~ 4586 as 4586, - ~~~~~~~~~~~~~~~~~ 4587 as 4587, - ~~~~~~~~~~~~~~~~~ 4588 as 4588, - ~~~~~~~~~~~~~~~~~ 4589 as 4589, - ~~~~~~~~~~~~~~~~~ 4590 as 4590, - ~~~~~~~~~~~~~~~~~ 4591 as 4591, - ~~~~~~~~~~~~~~~~~ 4592 as 4592, - ~~~~~~~~~~~~~~~~~ 4593 as 4593, - ~~~~~~~~~~~~~~~~~ 4594 as 4594, - ~~~~~~~~~~~~~~~~~ 4595 as 4595, - ~~~~~~~~~~~~~~~~~ 4596 as 4596, - ~~~~~~~~~~~~~~~~~ 4597 as 4597, - ~~~~~~~~~~~~~~~~~ 4598 as 4598, - ~~~~~~~~~~~~~~~~~ 4599 as 4599, - ~~~~~~~~~~~~~~~~~ 4600 as 4600, - ~~~~~~~~~~~~~~~~~ 4601 as 4601, - ~~~~~~~~~~~~~~~~~ 4602 as 4602, - ~~~~~~~~~~~~~~~~~ 4603 as 4603, - ~~~~~~~~~~~~~~~~~ 4604 as 4604, - ~~~~~~~~~~~~~~~~~ 4605 as 4605, - ~~~~~~~~~~~~~~~~~ 4606 as 4606, - ~~~~~~~~~~~~~~~~~ 4607 as 4607, - ~~~~~~~~~~~~~~~~~ 4608 as 4608, - ~~~~~~~~~~~~~~~~~ 4609 as 4609, - ~~~~~~~~~~~~~~~~~ 4610 as 4610, - ~~~~~~~~~~~~~~~~~ 4611 as 4611, - ~~~~~~~~~~~~~~~~~ 4612 as 4612, - ~~~~~~~~~~~~~~~~~ 4613 as 4613, - ~~~~~~~~~~~~~~~~~ 4614 as 4614, - ~~~~~~~~~~~~~~~~~ 4615 as 4615, - ~~~~~~~~~~~~~~~~~ 4616 as 4616, - ~~~~~~~~~~~~~~~~~ 4617 as 4617, - ~~~~~~~~~~~~~~~~~ 4618 as 4618, - ~~~~~~~~~~~~~~~~~ 4619 as 4619, - ~~~~~~~~~~~~~~~~~ 4620 as 4620, - ~~~~~~~~~~~~~~~~~ 4621 as 4621, - ~~~~~~~~~~~~~~~~~ 4622 as 4622, - ~~~~~~~~~~~~~~~~~ 4623 as 4623, - ~~~~~~~~~~~~~~~~~ 4624 as 4624, - ~~~~~~~~~~~~~~~~~ 4625 as 4625, - ~~~~~~~~~~~~~~~~~ 4626 as 4626, - ~~~~~~~~~~~~~~~~~ 4627 as 4627, - ~~~~~~~~~~~~~~~~~ 4628 as 4628, - ~~~~~~~~~~~~~~~~~ 4629 as 4629, - ~~~~~~~~~~~~~~~~~ 4630 as 4630, - ~~~~~~~~~~~~~~~~~ 4631 as 4631, - ~~~~~~~~~~~~~~~~~ 4632 as 4632, - ~~~~~~~~~~~~~~~~~ 4633 as 4633, - ~~~~~~~~~~~~~~~~~ 4634 as 4634, - ~~~~~~~~~~~~~~~~~ 4635 as 4635, - ~~~~~~~~~~~~~~~~~ 4636 as 4636, - ~~~~~~~~~~~~~~~~~ 4637 as 4637, - ~~~~~~~~~~~~~~~~~ 4638 as 4638, - ~~~~~~~~~~~~~~~~~ 4639 as 4639, - ~~~~~~~~~~~~~~~~~ 4640 as 4640, - ~~~~~~~~~~~~~~~~~ 4641 as 4641, - ~~~~~~~~~~~~~~~~~ 4642 as 4642, - ~~~~~~~~~~~~~~~~~ 4643 as 4643, - ~~~~~~~~~~~~~~~~~ 4644 as 4644, - ~~~~~~~~~~~~~~~~~ 4645 as 4645, - ~~~~~~~~~~~~~~~~~ 4646 as 4646, - ~~~~~~~~~~~~~~~~~ 4647 as 4647, - ~~~~~~~~~~~~~~~~~ 4648 as 4648, - ~~~~~~~~~~~~~~~~~ 4649 as 4649, - ~~~~~~~~~~~~~~~~~ 4650 as 4650, - ~~~~~~~~~~~~~~~~~ 4651 as 4651, - ~~~~~~~~~~~~~~~~~ 4652 as 4652, - ~~~~~~~~~~~~~~~~~ 4653 as 4653, - ~~~~~~~~~~~~~~~~~ 4654 as 4654, - ~~~~~~~~~~~~~~~~~ 4655 as 4655, - ~~~~~~~~~~~~~~~~~ 4656 as 4656, - ~~~~~~~~~~~~~~~~~ 4657 as 4657, - ~~~~~~~~~~~~~~~~~ 4658 as 4658, - ~~~~~~~~~~~~~~~~~ 4659 as 4659, - ~~~~~~~~~~~~~~~~~ 4660 as 4660, - ~~~~~~~~~~~~~~~~~ 4661 as 4661, - ~~~~~~~~~~~~~~~~~ 4662 as 4662, - ~~~~~~~~~~~~~~~~~ 4663 as 4663, - ~~~~~~~~~~~~~~~~~ 4664 as 4664, - ~~~~~~~~~~~~~~~~~ 4665 as 4665, - ~~~~~~~~~~~~~~~~~ 4666 as 4666, - ~~~~~~~~~~~~~~~~~ 4667 as 4667, - ~~~~~~~~~~~~~~~~~ 4668 as 4668, - ~~~~~~~~~~~~~~~~~ 4669 as 4669, - ~~~~~~~~~~~~~~~~~ 4670 as 4670, - ~~~~~~~~~~~~~~~~~ 4671 as 4671, - ~~~~~~~~~~~~~~~~~ 4672 as 4672, - ~~~~~~~~~~~~~~~~~ 4673 as 4673, - ~~~~~~~~~~~~~~~~~ 4674 as 4674, - ~~~~~~~~~~~~~~~~~ 4675 as 4675, - ~~~~~~~~~~~~~~~~~ 4676 as 4676, - ~~~~~~~~~~~~~~~~~ 4677 as 4677, - ~~~~~~~~~~~~~~~~~ 4678 as 4678, - ~~~~~~~~~~~~~~~~~ 4679 as 4679, - ~~~~~~~~~~~~~~~~~ 4680 as 4680, - ~~~~~~~~~~~~~~~~~ 4681 as 4681, - ~~~~~~~~~~~~~~~~~ 4682 as 4682, - ~~~~~~~~~~~~~~~~~ 4683 as 4683, - ~~~~~~~~~~~~~~~~~ 4684 as 4684, - ~~~~~~~~~~~~~~~~~ 4685 as 4685, - ~~~~~~~~~~~~~~~~~ 4686 as 4686, - ~~~~~~~~~~~~~~~~~ 4687 as 4687, - ~~~~~~~~~~~~~~~~~ 4688 as 4688, - ~~~~~~~~~~~~~~~~~ 4689 as 4689, - ~~~~~~~~~~~~~~~~~ 4690 as 4690, - ~~~~~~~~~~~~~~~~~ 4691 as 4691, - ~~~~~~~~~~~~~~~~~ 4692 as 4692, - ~~~~~~~~~~~~~~~~~ 4693 as 4693, - ~~~~~~~~~~~~~~~~~ 4694 as 4694, - ~~~~~~~~~~~~~~~~~ 4695 as 4695, - ~~~~~~~~~~~~~~~~~ 4696 as 4696, - ~~~~~~~~~~~~~~~~~ 4697 as 4697, - ~~~~~~~~~~~~~~~~~ 4698 as 4698, - ~~~~~~~~~~~~~~~~~ 4699 as 4699, - ~~~~~~~~~~~~~~~~~ 4700 as 4700, - ~~~~~~~~~~~~~~~~~ 4701 as 4701, - ~~~~~~~~~~~~~~~~~ 4702 as 4702, - ~~~~~~~~~~~~~~~~~ 4703 as 4703, - ~~~~~~~~~~~~~~~~~ 4704 as 4704, - ~~~~~~~~~~~~~~~~~ 4705 as 4705, - ~~~~~~~~~~~~~~~~~ 4706 as 4706, - ~~~~~~~~~~~~~~~~~ 4707 as 4707, - ~~~~~~~~~~~~~~~~~ 4708 as 4708, - ~~~~~~~~~~~~~~~~~ 4709 as 4709, - ~~~~~~~~~~~~~~~~~ 4710 as 4710, - ~~~~~~~~~~~~~~~~~ 4711 as 4711, - ~~~~~~~~~~~~~~~~~ 4712 as 4712, - ~~~~~~~~~~~~~~~~~ 4713 as 4713, - ~~~~~~~~~~~~~~~~~ 4714 as 4714, - ~~~~~~~~~~~~~~~~~ 4715 as 4715, - ~~~~~~~~~~~~~~~~~ 4716 as 4716, - ~~~~~~~~~~~~~~~~~ 4717 as 4717, - ~~~~~~~~~~~~~~~~~ 4718 as 4718, - ~~~~~~~~~~~~~~~~~ 4719 as 4719, - ~~~~~~~~~~~~~~~~~ 4720 as 4720, - ~~~~~~~~~~~~~~~~~ 4721 as 4721, - ~~~~~~~~~~~~~~~~~ 4722 as 4722, - ~~~~~~~~~~~~~~~~~ 4723 as 4723, - ~~~~~~~~~~~~~~~~~ 4724 as 4724, - ~~~~~~~~~~~~~~~~~ 4725 as 4725, - ~~~~~~~~~~~~~~~~~ 4726 as 4726, - ~~~~~~~~~~~~~~~~~ 4727 as 4727, - ~~~~~~~~~~~~~~~~~ 4728 as 4728, - ~~~~~~~~~~~~~~~~~ 4729 as 4729, - ~~~~~~~~~~~~~~~~~ 4730 as 4730, - ~~~~~~~~~~~~~~~~~ 4731 as 4731, - ~~~~~~~~~~~~~~~~~ 4732 as 4732, - ~~~~~~~~~~~~~~~~~ 4733 as 4733, - ~~~~~~~~~~~~~~~~~ 4734 as 4734, - ~~~~~~~~~~~~~~~~~ 4735 as 4735, - ~~~~~~~~~~~~~~~~~ 4736 as 4736, - ~~~~~~~~~~~~~~~~~ 4737 as 4737, - ~~~~~~~~~~~~~~~~~ 4738 as 4738, - ~~~~~~~~~~~~~~~~~ 4739 as 4739, - ~~~~~~~~~~~~~~~~~ 4740 as 4740, - ~~~~~~~~~~~~~~~~~ 4741 as 4741, - ~~~~~~~~~~~~~~~~~ 4742 as 4742, - ~~~~~~~~~~~~~~~~~ 4743 as 4743, - ~~~~~~~~~~~~~~~~~ 4744 as 4744, - ~~~~~~~~~~~~~~~~~ 4745 as 4745, - ~~~~~~~~~~~~~~~~~ 4746 as 4746, - ~~~~~~~~~~~~~~~~~ 4747 as 4747, - ~~~~~~~~~~~~~~~~~ 4748 as 4748, - ~~~~~~~~~~~~~~~~~ 4749 as 4749, - ~~~~~~~~~~~~~~~~~ 4750 as 4750, - ~~~~~~~~~~~~~~~~~ 4751 as 4751, - ~~~~~~~~~~~~~~~~~ 4752 as 4752, - ~~~~~~~~~~~~~~~~~ 4753 as 4753, - ~~~~~~~~~~~~~~~~~ 4754 as 4754, - ~~~~~~~~~~~~~~~~~ 4755 as 4755, - ~~~~~~~~~~~~~~~~~ 4756 as 4756, - ~~~~~~~~~~~~~~~~~ 4757 as 4757, - ~~~~~~~~~~~~~~~~~ 4758 as 4758, - ~~~~~~~~~~~~~~~~~ 4759 as 4759, - ~~~~~~~~~~~~~~~~~ 4760 as 4760, - ~~~~~~~~~~~~~~~~~ 4761 as 4761, - ~~~~~~~~~~~~~~~~~ 4762 as 4762, - ~~~~~~~~~~~~~~~~~ 4763 as 4763, - ~~~~~~~~~~~~~~~~~ 4764 as 4764, - ~~~~~~~~~~~~~~~~~ 4765 as 4765, - ~~~~~~~~~~~~~~~~~ 4766 as 4766, - ~~~~~~~~~~~~~~~~~ 4767 as 4767, - ~~~~~~~~~~~~~~~~~ 4768 as 4768, - ~~~~~~~~~~~~~~~~~ 4769 as 4769, - ~~~~~~~~~~~~~~~~~ 4770 as 4770, - ~~~~~~~~~~~~~~~~~ 4771 as 4771, - ~~~~~~~~~~~~~~~~~ 4772 as 4772, - ~~~~~~~~~~~~~~~~~ 4773 as 4773, - ~~~~~~~~~~~~~~~~~ 4774 as 4774, - ~~~~~~~~~~~~~~~~~ 4775 as 4775, - ~~~~~~~~~~~~~~~~~ 4776 as 4776, - ~~~~~~~~~~~~~~~~~ 4777 as 4777, - ~~~~~~~~~~~~~~~~~ 4778 as 4778, - ~~~~~~~~~~~~~~~~~ 4779 as 4779, - ~~~~~~~~~~~~~~~~~ 4780 as 4780, - ~~~~~~~~~~~~~~~~~ 4781 as 4781, - ~~~~~~~~~~~~~~~~~ 4782 as 4782, - ~~~~~~~~~~~~~~~~~ 4783 as 4783, - ~~~~~~~~~~~~~~~~~ 4784 as 4784, - ~~~~~~~~~~~~~~~~~ 4785 as 4785, - ~~~~~~~~~~~~~~~~~ 4786 as 4786, - ~~~~~~~~~~~~~~~~~ 4787 as 4787, - ~~~~~~~~~~~~~~~~~ 4788 as 4788, - ~~~~~~~~~~~~~~~~~ 4789 as 4789, - ~~~~~~~~~~~~~~~~~ 4790 as 4790, - ~~~~~~~~~~~~~~~~~ 4791 as 4791, - ~~~~~~~~~~~~~~~~~ 4792 as 4792, - ~~~~~~~~~~~~~~~~~ 4793 as 4793, - ~~~~~~~~~~~~~~~~~ 4794 as 4794, - ~~~~~~~~~~~~~~~~~ 4795 as 4795, - ~~~~~~~~~~~~~~~~~ 4796 as 4796, - ~~~~~~~~~~~~~~~~~ 4797 as 4797, - ~~~~~~~~~~~~~~~~~ 4798 as 4798, - ~~~~~~~~~~~~~~~~~ 4799 as 4799, - ~~~~~~~~~~~~~~~~~ 4800 as 4800, - ~~~~~~~~~~~~~~~~~ 4801 as 4801, - ~~~~~~~~~~~~~~~~~ 4802 as 4802, - ~~~~~~~~~~~~~~~~~ 4803 as 4803, - ~~~~~~~~~~~~~~~~~ 4804 as 4804, - ~~~~~~~~~~~~~~~~~ 4805 as 4805, - ~~~~~~~~~~~~~~~~~ 4806 as 4806, - ~~~~~~~~~~~~~~~~~ 4807 as 4807, - ~~~~~~~~~~~~~~~~~ 4808 as 4808, - ~~~~~~~~~~~~~~~~~ 4809 as 4809, - ~~~~~~~~~~~~~~~~~ 4810 as 4810, - ~~~~~~~~~~~~~~~~~ 4811 as 4811, - ~~~~~~~~~~~~~~~~~ 4812 as 4812, - ~~~~~~~~~~~~~~~~~ 4813 as 4813, - ~~~~~~~~~~~~~~~~~ 4814 as 4814, - ~~~~~~~~~~~~~~~~~ 4815 as 4815, - ~~~~~~~~~~~~~~~~~ 4816 as 4816, - ~~~~~~~~~~~~~~~~~ 4817 as 4817, - ~~~~~~~~~~~~~~~~~ 4818 as 4818, - ~~~~~~~~~~~~~~~~~ 4819 as 4819, - ~~~~~~~~~~~~~~~~~ 4820 as 4820, - ~~~~~~~~~~~~~~~~~ 4821 as 4821, - ~~~~~~~~~~~~~~~~~ 4822 as 4822, - ~~~~~~~~~~~~~~~~~ 4823 as 4823, - ~~~~~~~~~~~~~~~~~ 4824 as 4824, - ~~~~~~~~~~~~~~~~~ 4825 as 4825, - ~~~~~~~~~~~~~~~~~ 4826 as 4826, - ~~~~~~~~~~~~~~~~~ 4827 as 4827, - ~~~~~~~~~~~~~~~~~ 4828 as 4828, - ~~~~~~~~~~~~~~~~~ 4829 as 4829, - ~~~~~~~~~~~~~~~~~ 4830 as 4830, - ~~~~~~~~~~~~~~~~~ 4831 as 4831, - ~~~~~~~~~~~~~~~~~ 4832 as 4832, - ~~~~~~~~~~~~~~~~~ 4833 as 4833, - ~~~~~~~~~~~~~~~~~ 4834 as 4834, - ~~~~~~~~~~~~~~~~~ 4835 as 4835, - ~~~~~~~~~~~~~~~~~ 4836 as 4836, - ~~~~~~~~~~~~~~~~~ 4837 as 4837, - ~~~~~~~~~~~~~~~~~ 4838 as 4838, - ~~~~~~~~~~~~~~~~~ 4839 as 4839, - ~~~~~~~~~~~~~~~~~ 4840 as 4840, - ~~~~~~~~~~~~~~~~~ 4841 as 4841, - ~~~~~~~~~~~~~~~~~ 4842 as 4842, - ~~~~~~~~~~~~~~~~~ 4843 as 4843, - ~~~~~~~~~~~~~~~~~ 4844 as 4844, - ~~~~~~~~~~~~~~~~~ 4845 as 4845, - ~~~~~~~~~~~~~~~~~ 4846 as 4846, - ~~~~~~~~~~~~~~~~~ 4847 as 4847, - ~~~~~~~~~~~~~~~~~ 4848 as 4848, - ~~~~~~~~~~~~~~~~~ 4849 as 4849, - ~~~~~~~~~~~~~~~~~ 4850 as 4850, - ~~~~~~~~~~~~~~~~~ 4851 as 4851, - ~~~~~~~~~~~~~~~~~ 4852 as 4852, - ~~~~~~~~~~~~~~~~~ 4853 as 4853, - ~~~~~~~~~~~~~~~~~ 4854 as 4854, - ~~~~~~~~~~~~~~~~~ 4855 as 4855, - ~~~~~~~~~~~~~~~~~ 4856 as 4856, - ~~~~~~~~~~~~~~~~~ 4857 as 4857, - ~~~~~~~~~~~~~~~~~ 4858 as 4858, - ~~~~~~~~~~~~~~~~~ 4859 as 4859, - ~~~~~~~~~~~~~~~~~ 4860 as 4860, - ~~~~~~~~~~~~~~~~~ 4861 as 4861, - ~~~~~~~~~~~~~~~~~ 4862 as 4862, - ~~~~~~~~~~~~~~~~~ 4863 as 4863, - ~~~~~~~~~~~~~~~~~ 4864 as 4864, - ~~~~~~~~~~~~~~~~~ 4865 as 4865, - ~~~~~~~~~~~~~~~~~ 4866 as 4866, - ~~~~~~~~~~~~~~~~~ 4867 as 4867, - ~~~~~~~~~~~~~~~~~ 4868 as 4868, - ~~~~~~~~~~~~~~~~~ 4869 as 4869, - ~~~~~~~~~~~~~~~~~ 4870 as 4870, - ~~~~~~~~~~~~~~~~~ 4871 as 4871, - ~~~~~~~~~~~~~~~~~ 4872 as 4872, - ~~~~~~~~~~~~~~~~~ 4873 as 4873, - ~~~~~~~~~~~~~~~~~ 4874 as 4874, - ~~~~~~~~~~~~~~~~~ 4875 as 4875, - ~~~~~~~~~~~~~~~~~ 4876 as 4876, - ~~~~~~~~~~~~~~~~~ 4877 as 4877, - ~~~~~~~~~~~~~~~~~ 4878 as 4878, - ~~~~~~~~~~~~~~~~~ 4879 as 4879, - ~~~~~~~~~~~~~~~~~ 4880 as 4880, - ~~~~~~~~~~~~~~~~~ 4881 as 4881, - ~~~~~~~~~~~~~~~~~ 4882 as 4882, - ~~~~~~~~~~~~~~~~~ 4883 as 4883, - ~~~~~~~~~~~~~~~~~ 4884 as 4884, - ~~~~~~~~~~~~~~~~~ 4885 as 4885, - ~~~~~~~~~~~~~~~~~ 4886 as 4886, - ~~~~~~~~~~~~~~~~~ 4887 as 4887, - ~~~~~~~~~~~~~~~~~ 4888 as 4888, - ~~~~~~~~~~~~~~~~~ 4889 as 4889, - ~~~~~~~~~~~~~~~~~ 4890 as 4890, - ~~~~~~~~~~~~~~~~~ 4891 as 4891, - ~~~~~~~~~~~~~~~~~ 4892 as 4892, - ~~~~~~~~~~~~~~~~~ 4893 as 4893, - ~~~~~~~~~~~~~~~~~ 4894 as 4894, - ~~~~~~~~~~~~~~~~~ 4895 as 4895, - ~~~~~~~~~~~~~~~~~ 4896 as 4896, - ~~~~~~~~~~~~~~~~~ 4897 as 4897, - ~~~~~~~~~~~~~~~~~ 4898 as 4898, - ~~~~~~~~~~~~~~~~~ 4899 as 4899, - ~~~~~~~~~~~~~~~~~ 4900 as 4900, - ~~~~~~~~~~~~~~~~~ 4901 as 4901, - ~~~~~~~~~~~~~~~~~ 4902 as 4902, - ~~~~~~~~~~~~~~~~~ 4903 as 4903, - ~~~~~~~~~~~~~~~~~ 4904 as 4904, - ~~~~~~~~~~~~~~~~~ 4905 as 4905, - ~~~~~~~~~~~~~~~~~ 4906 as 4906, - ~~~~~~~~~~~~~~~~~ 4907 as 4907, - ~~~~~~~~~~~~~~~~~ 4908 as 4908, - ~~~~~~~~~~~~~~~~~ 4909 as 4909, - ~~~~~~~~~~~~~~~~~ 4910 as 4910, - ~~~~~~~~~~~~~~~~~ 4911 as 4911, - ~~~~~~~~~~~~~~~~~ 4912 as 4912, - ~~~~~~~~~~~~~~~~~ 4913 as 4913, - ~~~~~~~~~~~~~~~~~ 4914 as 4914, - ~~~~~~~~~~~~~~~~~ 4915 as 4915, - ~~~~~~~~~~~~~~~~~ 4916 as 4916, - ~~~~~~~~~~~~~~~~~ 4917 as 4917, - ~~~~~~~~~~~~~~~~~ 4918 as 4918, - ~~~~~~~~~~~~~~~~~ 4919 as 4919, - ~~~~~~~~~~~~~~~~~ 4920 as 4920, - ~~~~~~~~~~~~~~~~~ 4921 as 4921, - ~~~~~~~~~~~~~~~~~ 4922 as 4922, - ~~~~~~~~~~~~~~~~~ 4923 as 4923, - ~~~~~~~~~~~~~~~~~ 4924 as 4924, - ~~~~~~~~~~~~~~~~~ 4925 as 4925, - ~~~~~~~~~~~~~~~~~ 4926 as 4926, - ~~~~~~~~~~~~~~~~~ 4927 as 4927, - ~~~~~~~~~~~~~~~~~ 4928 as 4928, - ~~~~~~~~~~~~~~~~~ 4929 as 4929, - ~~~~~~~~~~~~~~~~~ 4930 as 4930, - ~~~~~~~~~~~~~~~~~ 4931 as 4931, - ~~~~~~~~~~~~~~~~~ 4932 as 4932, - ~~~~~~~~~~~~~~~~~ 4933 as 4933, - ~~~~~~~~~~~~~~~~~ 4934 as 4934, - ~~~~~~~~~~~~~~~~~ 4935 as 4935, - ~~~~~~~~~~~~~~~~~ 4936 as 4936, - ~~~~~~~~~~~~~~~~~ 4937 as 4937, - ~~~~~~~~~~~~~~~~~ 4938 as 4938, - ~~~~~~~~~~~~~~~~~ 4939 as 4939, - ~~~~~~~~~~~~~~~~~ 4940 as 4940, - ~~~~~~~~~~~~~~~~~ 4941 as 4941, - ~~~~~~~~~~~~~~~~~ 4942 as 4942, - ~~~~~~~~~~~~~~~~~ 4943 as 4943, - ~~~~~~~~~~~~~~~~~ 4944 as 4944, - ~~~~~~~~~~~~~~~~~ 4945 as 4945, - ~~~~~~~~~~~~~~~~~ 4946 as 4946, - ~~~~~~~~~~~~~~~~~ 4947 as 4947, - ~~~~~~~~~~~~~~~~~ 4948 as 4948, - ~~~~~~~~~~~~~~~~~ 4949 as 4949, - ~~~~~~~~~~~~~~~~~ 4950 as 4950, - ~~~~~~~~~~~~~~~~~ 4951 as 4951, - ~~~~~~~~~~~~~~~~~ 4952 as 4952, - ~~~~~~~~~~~~~~~~~ 4953 as 4953, - ~~~~~~~~~~~~~~~~~ 4954 as 4954, - ~~~~~~~~~~~~~~~~~ 4955 as 4955, - ~~~~~~~~~~~~~~~~~ 4956 as 4956, - ~~~~~~~~~~~~~~~~~ 4957 as 4957, - ~~~~~~~~~~~~~~~~~ 4958 as 4958, - ~~~~~~~~~~~~~~~~~ 4959 as 4959, - ~~~~~~~~~~~~~~~~~ 4960 as 4960, - ~~~~~~~~~~~~~~~~~ 4961 as 4961, - ~~~~~~~~~~~~~~~~~ 4962 as 4962, - ~~~~~~~~~~~~~~~~~ 4963 as 4963, - ~~~~~~~~~~~~~~~~~ 4964 as 4964, - ~~~~~~~~~~~~~~~~~ 4965 as 4965, - ~~~~~~~~~~~~~~~~~ 4966 as 4966, - ~~~~~~~~~~~~~~~~~ 4967 as 4967, - ~~~~~~~~~~~~~~~~~ 4968 as 4968, - ~~~~~~~~~~~~~~~~~ 4969 as 4969, - ~~~~~~~~~~~~~~~~~ 4970 as 4970, - ~~~~~~~~~~~~~~~~~ 4971 as 4971, - ~~~~~~~~~~~~~~~~~ 4972 as 4972, - ~~~~~~~~~~~~~~~~~ 4973 as 4973, - ~~~~~~~~~~~~~~~~~ 4974 as 4974, - ~~~~~~~~~~~~~~~~~ 4975 as 4975, - ~~~~~~~~~~~~~~~~~ 4976 as 4976, - ~~~~~~~~~~~~~~~~~ 4977 as 4977, - ~~~~~~~~~~~~~~~~~ 4978 as 4978, - ~~~~~~~~~~~~~~~~~ 4979 as 4979, - ~~~~~~~~~~~~~~~~~ 4980 as 4980, - ~~~~~~~~~~~~~~~~~ 4981 as 4981, - ~~~~~~~~~~~~~~~~~ 4982 as 4982, - ~~~~~~~~~~~~~~~~~ 4983 as 4983, - ~~~~~~~~~~~~~~~~~ 4984 as 4984, - ~~~~~~~~~~~~~~~~~ 4985 as 4985, - ~~~~~~~~~~~~~~~~~ 4986 as 4986, - ~~~~~~~~~~~~~~~~~ 4987 as 4987, - ~~~~~~~~~~~~~~~~~ 4988 as 4988, - ~~~~~~~~~~~~~~~~~ 4989 as 4989, - ~~~~~~~~~~~~~~~~~ 4990 as 4990, - ~~~~~~~~~~~~~~~~~ 4991 as 4991, - ~~~~~~~~~~~~~~~~~ 4992 as 4992, - ~~~~~~~~~~~~~~~~~ 4993 as 4993, - ~~~~~~~~~~~~~~~~~ 4994 as 4994, - ~~~~~~~~~~~~~~~~~ 4995 as 4995, - ~~~~~~~~~~~~~~~~~ 4996 as 4996, - ~~~~~~~~~~~~~~~~~ 4997 as 4997, - ~~~~~~~~~~~~~~~~~ 4998 as 4998, - ~~~~~~~~~~~~~~~~~ 4999 as 4999, - ~~~~~~~~~~~~~~~~~ 5000 as 5000, - ~~~~~~~~~~~~~~~~~ 5001 as 5001, - ~~~~~~~~~~~~~~~~~ ]; - ~ -!!! error TS2590: Expression produces a union type that is too complex to represent. let b = [ ~ diff --git a/tests/baselines/reference/unionSubtypeReductionErrors.types b/tests/baselines/reference/unionSubtypeReductionErrors.types index 0df721a8ee094..0f4927a294cf1 100644 --- a/tests/baselines/reference/unionSubtypeReductionErrors.types +++ b/tests/baselines/reference/unionSubtypeReductionErrors.types @@ -1,7 +1,7 @@ === tests/cases/compiler/unionSubtypeReductionErrors.ts === let a = [ ->a : any[] ->[ 0 as 0, 1 as 1, 2 as 2, 3 as 3, 4 as 4, 5 as 5, 6 as 6, 7 as 7, 8 as 8, 9 as 9, 10 as 10, 11 as 11, 12 as 12, 13 as 13, 14 as 14, 15 as 15, 16 as 16, 17 as 17, 18 as 18, 19 as 19, 20 as 20, 21 as 21, 22 as 22, 23 as 23, 24 as 24, 25 as 25, 26 as 26, 27 as 27, 28 as 28, 29 as 29, 30 as 30, 31 as 31, 32 as 32, 33 as 33, 34 as 34, 35 as 35, 36 as 36, 37 as 37, 38 as 38, 39 as 39, 40 as 40, 41 as 41, 42 as 42, 43 as 43, 44 as 44, 45 as 45, 46 as 46, 47 as 47, 48 as 48, 49 as 49, 50 as 50, 51 as 51, 52 as 52, 53 as 53, 54 as 54, 55 as 55, 56 as 56, 57 as 57, 58 as 58, 59 as 59, 60 as 60, 61 as 61, 62 as 62, 63 as 63, 64 as 64, 65 as 65, 66 as 66, 67 as 67, 68 as 68, 69 as 69, 70 as 70, 71 as 71, 72 as 72, 73 as 73, 74 as 74, 75 as 75, 76 as 76, 77 as 77, 78 as 78, 79 as 79, 80 as 80, 81 as 81, 82 as 82, 83 as 83, 84 as 84, 85 as 85, 86 as 86, 87 as 87, 88 as 88, 89 as 89, 90 as 90, 91 as 91, 92 as 92, 93 as 93, 94 as 94, 95 as 95, 96 as 96, 97 as 97, 98 as 98, 99 as 99, 100 as 100, 101 as 101, 102 as 102, 103 as 103, 104 as 104, 105 as 105, 106 as 106, 107 as 107, 108 as 108, 109 as 109, 110 as 110, 111 as 111, 112 as 112, 113 as 113, 114 as 114, 115 as 115, 116 as 116, 117 as 117, 118 as 118, 119 as 119, 120 as 120, 121 as 121, 122 as 122, 123 as 123, 124 as 124, 125 as 125, 126 as 126, 127 as 127, 128 as 128, 129 as 129, 130 as 130, 131 as 131, 132 as 132, 133 as 133, 134 as 134, 135 as 135, 136 as 136, 137 as 137, 138 as 138, 139 as 139, 140 as 140, 141 as 141, 142 as 142, 143 as 143, 144 as 144, 145 as 145, 146 as 146, 147 as 147, 148 as 148, 149 as 149, 150 as 150, 151 as 151, 152 as 152, 153 as 153, 154 as 154, 155 as 155, 156 as 156, 157 as 157, 158 as 158, 159 as 159, 160 as 160, 161 as 161, 162 as 162, 163 as 163, 164 as 164, 165 as 165, 166 as 166, 167 as 167, 168 as 168, 169 as 169, 170 as 170, 171 as 171, 172 as 172, 173 as 173, 174 as 174, 175 as 175, 176 as 176, 177 as 177, 178 as 178, 179 as 179, 180 as 180, 181 as 181, 182 as 182, 183 as 183, 184 as 184, 185 as 185, 186 as 186, 187 as 187, 188 as 188, 189 as 189, 190 as 190, 191 as 191, 192 as 192, 193 as 193, 194 as 194, 195 as 195, 196 as 196, 197 as 197, 198 as 198, 199 as 199, 200 as 200, 201 as 201, 202 as 202, 203 as 203, 204 as 204, 205 as 205, 206 as 206, 207 as 207, 208 as 208, 209 as 209, 210 as 210, 211 as 211, 212 as 212, 213 as 213, 214 as 214, 215 as 215, 216 as 216, 217 as 217, 218 as 218, 219 as 219, 220 as 220, 221 as 221, 222 as 222, 223 as 223, 224 as 224, 225 as 225, 226 as 226, 227 as 227, 228 as 228, 229 as 229, 230 as 230, 231 as 231, 232 as 232, 233 as 233, 234 as 234, 235 as 235, 236 as 236, 237 as 237, 238 as 238, 239 as 239, 240 as 240, 241 as 241, 242 as 242, 243 as 243, 244 as 244, 245 as 245, 246 as 246, 247 as 247, 248 as 248, 249 as 249, 250 as 250, 251 as 251, 252 as 252, 253 as 253, 254 as 254, 255 as 255, 256 as 256, 257 as 257, 258 as 258, 259 as 259, 260 as 260, 261 as 261, 262 as 262, 263 as 263, 264 as 264, 265 as 265, 266 as 266, 267 as 267, 268 as 268, 269 as 269, 270 as 270, 271 as 271, 272 as 272, 273 as 273, 274 as 274, 275 as 275, 276 as 276, 277 as 277, 278 as 278, 279 as 279, 280 as 280, 281 as 281, 282 as 282, 283 as 283, 284 as 284, 285 as 285, 286 as 286, 287 as 287, 288 as 288, 289 as 289, 290 as 290, 291 as 291, 292 as 292, 293 as 293, 294 as 294, 295 as 295, 296 as 296, 297 as 297, 298 as 298, 299 as 299, 300 as 300, 301 as 301, 302 as 302, 303 as 303, 304 as 304, 305 as 305, 306 as 306, 307 as 307, 308 as 308, 309 as 309, 310 as 310, 311 as 311, 312 as 312, 313 as 313, 314 as 314, 315 as 315, 316 as 316, 317 as 317, 318 as 318, 319 as 319, 320 as 320, 321 as 321, 322 as 322, 323 as 323, 324 as 324, 325 as 325, 326 as 326, 327 as 327, 328 as 328, 329 as 329, 330 as 330, 331 as 331, 332 as 332, 333 as 333, 334 as 334, 335 as 335, 336 as 336, 337 as 337, 338 as 338, 339 as 339, 340 as 340, 341 as 341, 342 as 342, 343 as 343, 344 as 344, 345 as 345, 346 as 346, 347 as 347, 348 as 348, 349 as 349, 350 as 350, 351 as 351, 352 as 352, 353 as 353, 354 as 354, 355 as 355, 356 as 356, 357 as 357, 358 as 358, 359 as 359, 360 as 360, 361 as 361, 362 as 362, 363 as 363, 364 as 364, 365 as 365, 366 as 366, 367 as 367, 368 as 368, 369 as 369, 370 as 370, 371 as 371, 372 as 372, 373 as 373, 374 as 374, 375 as 375, 376 as 376, 377 as 377, 378 as 378, 379 as 379, 380 as 380, 381 as 381, 382 as 382, 383 as 383, 384 as 384, 385 as 385, 386 as 386, 387 as 387, 388 as 388, 389 as 389, 390 as 390, 391 as 391, 392 as 392, 393 as 393, 394 as 394, 395 as 395, 396 as 396, 397 as 397, 398 as 398, 399 as 399, 400 as 400, 401 as 401, 402 as 402, 403 as 403, 404 as 404, 405 as 405, 406 as 406, 407 as 407, 408 as 408, 409 as 409, 410 as 410, 411 as 411, 412 as 412, 413 as 413, 414 as 414, 415 as 415, 416 as 416, 417 as 417, 418 as 418, 419 as 419, 420 as 420, 421 as 421, 422 as 422, 423 as 423, 424 as 424, 425 as 425, 426 as 426, 427 as 427, 428 as 428, 429 as 429, 430 as 430, 431 as 431, 432 as 432, 433 as 433, 434 as 434, 435 as 435, 436 as 436, 437 as 437, 438 as 438, 439 as 439, 440 as 440, 441 as 441, 442 as 442, 443 as 443, 444 as 444, 445 as 445, 446 as 446, 447 as 447, 448 as 448, 449 as 449, 450 as 450, 451 as 451, 452 as 452, 453 as 453, 454 as 454, 455 as 455, 456 as 456, 457 as 457, 458 as 458, 459 as 459, 460 as 460, 461 as 461, 462 as 462, 463 as 463, 464 as 464, 465 as 465, 466 as 466, 467 as 467, 468 as 468, 469 as 469, 470 as 470, 471 as 471, 472 as 472, 473 as 473, 474 as 474, 475 as 475, 476 as 476, 477 as 477, 478 as 478, 479 as 479, 480 as 480, 481 as 481, 482 as 482, 483 as 483, 484 as 484, 485 as 485, 486 as 486, 487 as 487, 488 as 488, 489 as 489, 490 as 490, 491 as 491, 492 as 492, 493 as 493, 494 as 494, 495 as 495, 496 as 496, 497 as 497, 498 as 498, 499 as 499, 500 as 500, 501 as 501, 502 as 502, 503 as 503, 504 as 504, 505 as 505, 506 as 506, 507 as 507, 508 as 508, 509 as 509, 510 as 510, 511 as 511, 512 as 512, 513 as 513, 514 as 514, 515 as 515, 516 as 516, 517 as 517, 518 as 518, 519 as 519, 520 as 520, 521 as 521, 522 as 522, 523 as 523, 524 as 524, 525 as 525, 526 as 526, 527 as 527, 528 as 528, 529 as 529, 530 as 530, 531 as 531, 532 as 532, 533 as 533, 534 as 534, 535 as 535, 536 as 536, 537 as 537, 538 as 538, 539 as 539, 540 as 540, 541 as 541, 542 as 542, 543 as 543, 544 as 544, 545 as 545, 546 as 546, 547 as 547, 548 as 548, 549 as 549, 550 as 550, 551 as 551, 552 as 552, 553 as 553, 554 as 554, 555 as 555, 556 as 556, 557 as 557, 558 as 558, 559 as 559, 560 as 560, 561 as 561, 562 as 562, 563 as 563, 564 as 564, 565 as 565, 566 as 566, 567 as 567, 568 as 568, 569 as 569, 570 as 570, 571 as 571, 572 as 572, 573 as 573, 574 as 574, 575 as 575, 576 as 576, 577 as 577, 578 as 578, 579 as 579, 580 as 580, 581 as 581, 582 as 582, 583 as 583, 584 as 584, 585 as 585, 586 as 586, 587 as 587, 588 as 588, 589 as 589, 590 as 590, 591 as 591, 592 as 592, 593 as 593, 594 as 594, 595 as 595, 596 as 596, 597 as 597, 598 as 598, 599 as 599, 600 as 600, 601 as 601, 602 as 602, 603 as 603, 604 as 604, 605 as 605, 606 as 606, 607 as 607, 608 as 608, 609 as 609, 610 as 610, 611 as 611, 612 as 612, 613 as 613, 614 as 614, 615 as 615, 616 as 616, 617 as 617, 618 as 618, 619 as 619, 620 as 620, 621 as 621, 622 as 622, 623 as 623, 624 as 624, 625 as 625, 626 as 626, 627 as 627, 628 as 628, 629 as 629, 630 as 630, 631 as 631, 632 as 632, 633 as 633, 634 as 634, 635 as 635, 636 as 636, 637 as 637, 638 as 638, 639 as 639, 640 as 640, 641 as 641, 642 as 642, 643 as 643, 644 as 644, 645 as 645, 646 as 646, 647 as 647, 648 as 648, 649 as 649, 650 as 650, 651 as 651, 652 as 652, 653 as 653, 654 as 654, 655 as 655, 656 as 656, 657 as 657, 658 as 658, 659 as 659, 660 as 660, 661 as 661, 662 as 662, 663 as 663, 664 as 664, 665 as 665, 666 as 666, 667 as 667, 668 as 668, 669 as 669, 670 as 670, 671 as 671, 672 as 672, 673 as 673, 674 as 674, 675 as 675, 676 as 676, 677 as 677, 678 as 678, 679 as 679, 680 as 680, 681 as 681, 682 as 682, 683 as 683, 684 as 684, 685 as 685, 686 as 686, 687 as 687, 688 as 688, 689 as 689, 690 as 690, 691 as 691, 692 as 692, 693 as 693, 694 as 694, 695 as 695, 696 as 696, 697 as 697, 698 as 698, 699 as 699, 700 as 700, 701 as 701, 702 as 702, 703 as 703, 704 as 704, 705 as 705, 706 as 706, 707 as 707, 708 as 708, 709 as 709, 710 as 710, 711 as 711, 712 as 712, 713 as 713, 714 as 714, 715 as 715, 716 as 716, 717 as 717, 718 as 718, 719 as 719, 720 as 720, 721 as 721, 722 as 722, 723 as 723, 724 as 724, 725 as 725, 726 as 726, 727 as 727, 728 as 728, 729 as 729, 730 as 730, 731 as 731, 732 as 732, 733 as 733, 734 as 734, 735 as 735, 736 as 736, 737 as 737, 738 as 738, 739 as 739, 740 as 740, 741 as 741, 742 as 742, 743 as 743, 744 as 744, 745 as 745, 746 as 746, 747 as 747, 748 as 748, 749 as 749, 750 as 750, 751 as 751, 752 as 752, 753 as 753, 754 as 754, 755 as 755, 756 as 756, 757 as 757, 758 as 758, 759 as 759, 760 as 760, 761 as 761, 762 as 762, 763 as 763, 764 as 764, 765 as 765, 766 as 766, 767 as 767, 768 as 768, 769 as 769, 770 as 770, 771 as 771, 772 as 772, 773 as 773, 774 as 774, 775 as 775, 776 as 776, 777 as 777, 778 as 778, 779 as 779, 780 as 780, 781 as 781, 782 as 782, 783 as 783, 784 as 784, 785 as 785, 786 as 786, 787 as 787, 788 as 788, 789 as 789, 790 as 790, 791 as 791, 792 as 792, 793 as 793, 794 as 794, 795 as 795, 796 as 796, 797 as 797, 798 as 798, 799 as 799, 800 as 800, 801 as 801, 802 as 802, 803 as 803, 804 as 804, 805 as 805, 806 as 806, 807 as 807, 808 as 808, 809 as 809, 810 as 810, 811 as 811, 812 as 812, 813 as 813, 814 as 814, 815 as 815, 816 as 816, 817 as 817, 818 as 818, 819 as 819, 820 as 820, 821 as 821, 822 as 822, 823 as 823, 824 as 824, 825 as 825, 826 as 826, 827 as 827, 828 as 828, 829 as 829, 830 as 830, 831 as 831, 832 as 832, 833 as 833, 834 as 834, 835 as 835, 836 as 836, 837 as 837, 838 as 838, 839 as 839, 840 as 840, 841 as 841, 842 as 842, 843 as 843, 844 as 844, 845 as 845, 846 as 846, 847 as 847, 848 as 848, 849 as 849, 850 as 850, 851 as 851, 852 as 852, 853 as 853, 854 as 854, 855 as 855, 856 as 856, 857 as 857, 858 as 858, 859 as 859, 860 as 860, 861 as 861, 862 as 862, 863 as 863, 864 as 864, 865 as 865, 866 as 866, 867 as 867, 868 as 868, 869 as 869, 870 as 870, 871 as 871, 872 as 872, 873 as 873, 874 as 874, 875 as 875, 876 as 876, 877 as 877, 878 as 878, 879 as 879, 880 as 880, 881 as 881, 882 as 882, 883 as 883, 884 as 884, 885 as 885, 886 as 886, 887 as 887, 888 as 888, 889 as 889, 890 as 890, 891 as 891, 892 as 892, 893 as 893, 894 as 894, 895 as 895, 896 as 896, 897 as 897, 898 as 898, 899 as 899, 900 as 900, 901 as 901, 902 as 902, 903 as 903, 904 as 904, 905 as 905, 906 as 906, 907 as 907, 908 as 908, 909 as 909, 910 as 910, 911 as 911, 912 as 912, 913 as 913, 914 as 914, 915 as 915, 916 as 916, 917 as 917, 918 as 918, 919 as 919, 920 as 920, 921 as 921, 922 as 922, 923 as 923, 924 as 924, 925 as 925, 926 as 926, 927 as 927, 928 as 928, 929 as 929, 930 as 930, 931 as 931, 932 as 932, 933 as 933, 934 as 934, 935 as 935, 936 as 936, 937 as 937, 938 as 938, 939 as 939, 940 as 940, 941 as 941, 942 as 942, 943 as 943, 944 as 944, 945 as 945, 946 as 946, 947 as 947, 948 as 948, 949 as 949, 950 as 950, 951 as 951, 952 as 952, 953 as 953, 954 as 954, 955 as 955, 956 as 956, 957 as 957, 958 as 958, 959 as 959, 960 as 960, 961 as 961, 962 as 962, 963 as 963, 964 as 964, 965 as 965, 966 as 966, 967 as 967, 968 as 968, 969 as 969, 970 as 970, 971 as 971, 972 as 972, 973 as 973, 974 as 974, 975 as 975, 976 as 976, 977 as 977, 978 as 978, 979 as 979, 980 as 980, 981 as 981, 982 as 982, 983 as 983, 984 as 984, 985 as 985, 986 as 986, 987 as 987, 988 as 988, 989 as 989, 990 as 990, 991 as 991, 992 as 992, 993 as 993, 994 as 994, 995 as 995, 996 as 996, 997 as 997, 998 as 998, 999 as 999, 1000 as 1000, 1001 as 1001, 1002 as 1002, 1003 as 1003, 1004 as 1004, 1005 as 1005, 1006 as 1006, 1007 as 1007, 1008 as 1008, 1009 as 1009, 1010 as 1010, 1011 as 1011, 1012 as 1012, 1013 as 1013, 1014 as 1014, 1015 as 1015, 1016 as 1016, 1017 as 1017, 1018 as 1018, 1019 as 1019, 1020 as 1020, 1021 as 1021, 1022 as 1022, 1023 as 1023, 1024 as 1024, 1025 as 1025, 1026 as 1026, 1027 as 1027, 1028 as 1028, 1029 as 1029, 1030 as 1030, 1031 as 1031, 1032 as 1032, 1033 as 1033, 1034 as 1034, 1035 as 1035, 1036 as 1036, 1037 as 1037, 1038 as 1038, 1039 as 1039, 1040 as 1040, 1041 as 1041, 1042 as 1042, 1043 as 1043, 1044 as 1044, 1045 as 1045, 1046 as 1046, 1047 as 1047, 1048 as 1048, 1049 as 1049, 1050 as 1050, 1051 as 1051, 1052 as 1052, 1053 as 1053, 1054 as 1054, 1055 as 1055, 1056 as 1056, 1057 as 1057, 1058 as 1058, 1059 as 1059, 1060 as 1060, 1061 as 1061, 1062 as 1062, 1063 as 1063, 1064 as 1064, 1065 as 1065, 1066 as 1066, 1067 as 1067, 1068 as 1068, 1069 as 1069, 1070 as 1070, 1071 as 1071, 1072 as 1072, 1073 as 1073, 1074 as 1074, 1075 as 1075, 1076 as 1076, 1077 as 1077, 1078 as 1078, 1079 as 1079, 1080 as 1080, 1081 as 1081, 1082 as 1082, 1083 as 1083, 1084 as 1084, 1085 as 1085, 1086 as 1086, 1087 as 1087, 1088 as 1088, 1089 as 1089, 1090 as 1090, 1091 as 1091, 1092 as 1092, 1093 as 1093, 1094 as 1094, 1095 as 1095, 1096 as 1096, 1097 as 1097, 1098 as 1098, 1099 as 1099, 1100 as 1100, 1101 as 1101, 1102 as 1102, 1103 as 1103, 1104 as 1104, 1105 as 1105, 1106 as 1106, 1107 as 1107, 1108 as 1108, 1109 as 1109, 1110 as 1110, 1111 as 1111, 1112 as 1112, 1113 as 1113, 1114 as 1114, 1115 as 1115, 1116 as 1116, 1117 as 1117, 1118 as 1118, 1119 as 1119, 1120 as 1120, 1121 as 1121, 1122 as 1122, 1123 as 1123, 1124 as 1124, 1125 as 1125, 1126 as 1126, 1127 as 1127, 1128 as 1128, 1129 as 1129, 1130 as 1130, 1131 as 1131, 1132 as 1132, 1133 as 1133, 1134 as 1134, 1135 as 1135, 1136 as 1136, 1137 as 1137, 1138 as 1138, 1139 as 1139, 1140 as 1140, 1141 as 1141, 1142 as 1142, 1143 as 1143, 1144 as 1144, 1145 as 1145, 1146 as 1146, 1147 as 1147, 1148 as 1148, 1149 as 1149, 1150 as 1150, 1151 as 1151, 1152 as 1152, 1153 as 1153, 1154 as 1154, 1155 as 1155, 1156 as 1156, 1157 as 1157, 1158 as 1158, 1159 as 1159, 1160 as 1160, 1161 as 1161, 1162 as 1162, 1163 as 1163, 1164 as 1164, 1165 as 1165, 1166 as 1166, 1167 as 1167, 1168 as 1168, 1169 as 1169, 1170 as 1170, 1171 as 1171, 1172 as 1172, 1173 as 1173, 1174 as 1174, 1175 as 1175, 1176 as 1176, 1177 as 1177, 1178 as 1178, 1179 as 1179, 1180 as 1180, 1181 as 1181, 1182 as 1182, 1183 as 1183, 1184 as 1184, 1185 as 1185, 1186 as 1186, 1187 as 1187, 1188 as 1188, 1189 as 1189, 1190 as 1190, 1191 as 1191, 1192 as 1192, 1193 as 1193, 1194 as 1194, 1195 as 1195, 1196 as 1196, 1197 as 1197, 1198 as 1198, 1199 as 1199, 1200 as 1200, 1201 as 1201, 1202 as 1202, 1203 as 1203, 1204 as 1204, 1205 as 1205, 1206 as 1206, 1207 as 1207, 1208 as 1208, 1209 as 1209, 1210 as 1210, 1211 as 1211, 1212 as 1212, 1213 as 1213, 1214 as 1214, 1215 as 1215, 1216 as 1216, 1217 as 1217, 1218 as 1218, 1219 as 1219, 1220 as 1220, 1221 as 1221, 1222 as 1222, 1223 as 1223, 1224 as 1224, 1225 as 1225, 1226 as 1226, 1227 as 1227, 1228 as 1228, 1229 as 1229, 1230 as 1230, 1231 as 1231, 1232 as 1232, 1233 as 1233, 1234 as 1234, 1235 as 1235, 1236 as 1236, 1237 as 1237, 1238 as 1238, 1239 as 1239, 1240 as 1240, 1241 as 1241, 1242 as 1242, 1243 as 1243, 1244 as 1244, 1245 as 1245, 1246 as 1246, 1247 as 1247, 1248 as 1248, 1249 as 1249, 1250 as 1250, 1251 as 1251, 1252 as 1252, 1253 as 1253, 1254 as 1254, 1255 as 1255, 1256 as 1256, 1257 as 1257, 1258 as 1258, 1259 as 1259, 1260 as 1260, 1261 as 1261, 1262 as 1262, 1263 as 1263, 1264 as 1264, 1265 as 1265, 1266 as 1266, 1267 as 1267, 1268 as 1268, 1269 as 1269, 1270 as 1270, 1271 as 1271, 1272 as 1272, 1273 as 1273, 1274 as 1274, 1275 as 1275, 1276 as 1276, 1277 as 1277, 1278 as 1278, 1279 as 1279, 1280 as 1280, 1281 as 1281, 1282 as 1282, 1283 as 1283, 1284 as 1284, 1285 as 1285, 1286 as 1286, 1287 as 1287, 1288 as 1288, 1289 as 1289, 1290 as 1290, 1291 as 1291, 1292 as 1292, 1293 as 1293, 1294 as 1294, 1295 as 1295, 1296 as 1296, 1297 as 1297, 1298 as 1298, 1299 as 1299, 1300 as 1300, 1301 as 1301, 1302 as 1302, 1303 as 1303, 1304 as 1304, 1305 as 1305, 1306 as 1306, 1307 as 1307, 1308 as 1308, 1309 as 1309, 1310 as 1310, 1311 as 1311, 1312 as 1312, 1313 as 1313, 1314 as 1314, 1315 as 1315, 1316 as 1316, 1317 as 1317, 1318 as 1318, 1319 as 1319, 1320 as 1320, 1321 as 1321, 1322 as 1322, 1323 as 1323, 1324 as 1324, 1325 as 1325, 1326 as 1326, 1327 as 1327, 1328 as 1328, 1329 as 1329, 1330 as 1330, 1331 as 1331, 1332 as 1332, 1333 as 1333, 1334 as 1334, 1335 as 1335, 1336 as 1336, 1337 as 1337, 1338 as 1338, 1339 as 1339, 1340 as 1340, 1341 as 1341, 1342 as 1342, 1343 as 1343, 1344 as 1344, 1345 as 1345, 1346 as 1346, 1347 as 1347, 1348 as 1348, 1349 as 1349, 1350 as 1350, 1351 as 1351, 1352 as 1352, 1353 as 1353, 1354 as 1354, 1355 as 1355, 1356 as 1356, 1357 as 1357, 1358 as 1358, 1359 as 1359, 1360 as 1360, 1361 as 1361, 1362 as 1362, 1363 as 1363, 1364 as 1364, 1365 as 1365, 1366 as 1366, 1367 as 1367, 1368 as 1368, 1369 as 1369, 1370 as 1370, 1371 as 1371, 1372 as 1372, 1373 as 1373, 1374 as 1374, 1375 as 1375, 1376 as 1376, 1377 as 1377, 1378 as 1378, 1379 as 1379, 1380 as 1380, 1381 as 1381, 1382 as 1382, 1383 as 1383, 1384 as 1384, 1385 as 1385, 1386 as 1386, 1387 as 1387, 1388 as 1388, 1389 as 1389, 1390 as 1390, 1391 as 1391, 1392 as 1392, 1393 as 1393, 1394 as 1394, 1395 as 1395, 1396 as 1396, 1397 as 1397, 1398 as 1398, 1399 as 1399, 1400 as 1400, 1401 as 1401, 1402 as 1402, 1403 as 1403, 1404 as 1404, 1405 as 1405, 1406 as 1406, 1407 as 1407, 1408 as 1408, 1409 as 1409, 1410 as 1410, 1411 as 1411, 1412 as 1412, 1413 as 1413, 1414 as 1414, 1415 as 1415, 1416 as 1416, 1417 as 1417, 1418 as 1418, 1419 as 1419, 1420 as 1420, 1421 as 1421, 1422 as 1422, 1423 as 1423, 1424 as 1424, 1425 as 1425, 1426 as 1426, 1427 as 1427, 1428 as 1428, 1429 as 1429, 1430 as 1430, 1431 as 1431, 1432 as 1432, 1433 as 1433, 1434 as 1434, 1435 as 1435, 1436 as 1436, 1437 as 1437, 1438 as 1438, 1439 as 1439, 1440 as 1440, 1441 as 1441, 1442 as 1442, 1443 as 1443, 1444 as 1444, 1445 as 1445, 1446 as 1446, 1447 as 1447, 1448 as 1448, 1449 as 1449, 1450 as 1450, 1451 as 1451, 1452 as 1452, 1453 as 1453, 1454 as 1454, 1455 as 1455, 1456 as 1456, 1457 as 1457, 1458 as 1458, 1459 as 1459, 1460 as 1460, 1461 as 1461, 1462 as 1462, 1463 as 1463, 1464 as 1464, 1465 as 1465, 1466 as 1466, 1467 as 1467, 1468 as 1468, 1469 as 1469, 1470 as 1470, 1471 as 1471, 1472 as 1472, 1473 as 1473, 1474 as 1474, 1475 as 1475, 1476 as 1476, 1477 as 1477, 1478 as 1478, 1479 as 1479, 1480 as 1480, 1481 as 1481, 1482 as 1482, 1483 as 1483, 1484 as 1484, 1485 as 1485, 1486 as 1486, 1487 as 1487, 1488 as 1488, 1489 as 1489, 1490 as 1490, 1491 as 1491, 1492 as 1492, 1493 as 1493, 1494 as 1494, 1495 as 1495, 1496 as 1496, 1497 as 1497, 1498 as 1498, 1499 as 1499, 1500 as 1500, 1501 as 1501, 1502 as 1502, 1503 as 1503, 1504 as 1504, 1505 as 1505, 1506 as 1506, 1507 as 1507, 1508 as 1508, 1509 as 1509, 1510 as 1510, 1511 as 1511, 1512 as 1512, 1513 as 1513, 1514 as 1514, 1515 as 1515, 1516 as 1516, 1517 as 1517, 1518 as 1518, 1519 as 1519, 1520 as 1520, 1521 as 1521, 1522 as 1522, 1523 as 1523, 1524 as 1524, 1525 as 1525, 1526 as 1526, 1527 as 1527, 1528 as 1528, 1529 as 1529, 1530 as 1530, 1531 as 1531, 1532 as 1532, 1533 as 1533, 1534 as 1534, 1535 as 1535, 1536 as 1536, 1537 as 1537, 1538 as 1538, 1539 as 1539, 1540 as 1540, 1541 as 1541, 1542 as 1542, 1543 as 1543, 1544 as 1544, 1545 as 1545, 1546 as 1546, 1547 as 1547, 1548 as 1548, 1549 as 1549, 1550 as 1550, 1551 as 1551, 1552 as 1552, 1553 as 1553, 1554 as 1554, 1555 as 1555, 1556 as 1556, 1557 as 1557, 1558 as 1558, 1559 as 1559, 1560 as 1560, 1561 as 1561, 1562 as 1562, 1563 as 1563, 1564 as 1564, 1565 as 1565, 1566 as 1566, 1567 as 1567, 1568 as 1568, 1569 as 1569, 1570 as 1570, 1571 as 1571, 1572 as 1572, 1573 as 1573, 1574 as 1574, 1575 as 1575, 1576 as 1576, 1577 as 1577, 1578 as 1578, 1579 as 1579, 1580 as 1580, 1581 as 1581, 1582 as 1582, 1583 as 1583, 1584 as 1584, 1585 as 1585, 1586 as 1586, 1587 as 1587, 1588 as 1588, 1589 as 1589, 1590 as 1590, 1591 as 1591, 1592 as 1592, 1593 as 1593, 1594 as 1594, 1595 as 1595, 1596 as 1596, 1597 as 1597, 1598 as 1598, 1599 as 1599, 1600 as 1600, 1601 as 1601, 1602 as 1602, 1603 as 1603, 1604 as 1604, 1605 as 1605, 1606 as 1606, 1607 as 1607, 1608 as 1608, 1609 as 1609, 1610 as 1610, 1611 as 1611, 1612 as 1612, 1613 as 1613, 1614 as 1614, 1615 as 1615, 1616 as 1616, 1617 as 1617, 1618 as 1618, 1619 as 1619, 1620 as 1620, 1621 as 1621, 1622 as 1622, 1623 as 1623, 1624 as 1624, 1625 as 1625, 1626 as 1626, 1627 as 1627, 1628 as 1628, 1629 as 1629, 1630 as 1630, 1631 as 1631, 1632 as 1632, 1633 as 1633, 1634 as 1634, 1635 as 1635, 1636 as 1636, 1637 as 1637, 1638 as 1638, 1639 as 1639, 1640 as 1640, 1641 as 1641, 1642 as 1642, 1643 as 1643, 1644 as 1644, 1645 as 1645, 1646 as 1646, 1647 as 1647, 1648 as 1648, 1649 as 1649, 1650 as 1650, 1651 as 1651, 1652 as 1652, 1653 as 1653, 1654 as 1654, 1655 as 1655, 1656 as 1656, 1657 as 1657, 1658 as 1658, 1659 as 1659, 1660 as 1660, 1661 as 1661, 1662 as 1662, 1663 as 1663, 1664 as 1664, 1665 as 1665, 1666 as 1666, 1667 as 1667, 1668 as 1668, 1669 as 1669, 1670 as 1670, 1671 as 1671, 1672 as 1672, 1673 as 1673, 1674 as 1674, 1675 as 1675, 1676 as 1676, 1677 as 1677, 1678 as 1678, 1679 as 1679, 1680 as 1680, 1681 as 1681, 1682 as 1682, 1683 as 1683, 1684 as 1684, 1685 as 1685, 1686 as 1686, 1687 as 1687, 1688 as 1688, 1689 as 1689, 1690 as 1690, 1691 as 1691, 1692 as 1692, 1693 as 1693, 1694 as 1694, 1695 as 1695, 1696 as 1696, 1697 as 1697, 1698 as 1698, 1699 as 1699, 1700 as 1700, 1701 as 1701, 1702 as 1702, 1703 as 1703, 1704 as 1704, 1705 as 1705, 1706 as 1706, 1707 as 1707, 1708 as 1708, 1709 as 1709, 1710 as 1710, 1711 as 1711, 1712 as 1712, 1713 as 1713, 1714 as 1714, 1715 as 1715, 1716 as 1716, 1717 as 1717, 1718 as 1718, 1719 as 1719, 1720 as 1720, 1721 as 1721, 1722 as 1722, 1723 as 1723, 1724 as 1724, 1725 as 1725, 1726 as 1726, 1727 as 1727, 1728 as 1728, 1729 as 1729, 1730 as 1730, 1731 as 1731, 1732 as 1732, 1733 as 1733, 1734 as 1734, 1735 as 1735, 1736 as 1736, 1737 as 1737, 1738 as 1738, 1739 as 1739, 1740 as 1740, 1741 as 1741, 1742 as 1742, 1743 as 1743, 1744 as 1744, 1745 as 1745, 1746 as 1746, 1747 as 1747, 1748 as 1748, 1749 as 1749, 1750 as 1750, 1751 as 1751, 1752 as 1752, 1753 as 1753, 1754 as 1754, 1755 as 1755, 1756 as 1756, 1757 as 1757, 1758 as 1758, 1759 as 1759, 1760 as 1760, 1761 as 1761, 1762 as 1762, 1763 as 1763, 1764 as 1764, 1765 as 1765, 1766 as 1766, 1767 as 1767, 1768 as 1768, 1769 as 1769, 1770 as 1770, 1771 as 1771, 1772 as 1772, 1773 as 1773, 1774 as 1774, 1775 as 1775, 1776 as 1776, 1777 as 1777, 1778 as 1778, 1779 as 1779, 1780 as 1780, 1781 as 1781, 1782 as 1782, 1783 as 1783, 1784 as 1784, 1785 as 1785, 1786 as 1786, 1787 as 1787, 1788 as 1788, 1789 as 1789, 1790 as 1790, 1791 as 1791, 1792 as 1792, 1793 as 1793, 1794 as 1794, 1795 as 1795, 1796 as 1796, 1797 as 1797, 1798 as 1798, 1799 as 1799, 1800 as 1800, 1801 as 1801, 1802 as 1802, 1803 as 1803, 1804 as 1804, 1805 as 1805, 1806 as 1806, 1807 as 1807, 1808 as 1808, 1809 as 1809, 1810 as 1810, 1811 as 1811, 1812 as 1812, 1813 as 1813, 1814 as 1814, 1815 as 1815, 1816 as 1816, 1817 as 1817, 1818 as 1818, 1819 as 1819, 1820 as 1820, 1821 as 1821, 1822 as 1822, 1823 as 1823, 1824 as 1824, 1825 as 1825, 1826 as 1826, 1827 as 1827, 1828 as 1828, 1829 as 1829, 1830 as 1830, 1831 as 1831, 1832 as 1832, 1833 as 1833, 1834 as 1834, 1835 as 1835, 1836 as 1836, 1837 as 1837, 1838 as 1838, 1839 as 1839, 1840 as 1840, 1841 as 1841, 1842 as 1842, 1843 as 1843, 1844 as 1844, 1845 as 1845, 1846 as 1846, 1847 as 1847, 1848 as 1848, 1849 as 1849, 1850 as 1850, 1851 as 1851, 1852 as 1852, 1853 as 1853, 1854 as 1854, 1855 as 1855, 1856 as 1856, 1857 as 1857, 1858 as 1858, 1859 as 1859, 1860 as 1860, 1861 as 1861, 1862 as 1862, 1863 as 1863, 1864 as 1864, 1865 as 1865, 1866 as 1866, 1867 as 1867, 1868 as 1868, 1869 as 1869, 1870 as 1870, 1871 as 1871, 1872 as 1872, 1873 as 1873, 1874 as 1874, 1875 as 1875, 1876 as 1876, 1877 as 1877, 1878 as 1878, 1879 as 1879, 1880 as 1880, 1881 as 1881, 1882 as 1882, 1883 as 1883, 1884 as 1884, 1885 as 1885, 1886 as 1886, 1887 as 1887, 1888 as 1888, 1889 as 1889, 1890 as 1890, 1891 as 1891, 1892 as 1892, 1893 as 1893, 1894 as 1894, 1895 as 1895, 1896 as 1896, 1897 as 1897, 1898 as 1898, 1899 as 1899, 1900 as 1900, 1901 as 1901, 1902 as 1902, 1903 as 1903, 1904 as 1904, 1905 as 1905, 1906 as 1906, 1907 as 1907, 1908 as 1908, 1909 as 1909, 1910 as 1910, 1911 as 1911, 1912 as 1912, 1913 as 1913, 1914 as 1914, 1915 as 1915, 1916 as 1916, 1917 as 1917, 1918 as 1918, 1919 as 1919, 1920 as 1920, 1921 as 1921, 1922 as 1922, 1923 as 1923, 1924 as 1924, 1925 as 1925, 1926 as 1926, 1927 as 1927, 1928 as 1928, 1929 as 1929, 1930 as 1930, 1931 as 1931, 1932 as 1932, 1933 as 1933, 1934 as 1934, 1935 as 1935, 1936 as 1936, 1937 as 1937, 1938 as 1938, 1939 as 1939, 1940 as 1940, 1941 as 1941, 1942 as 1942, 1943 as 1943, 1944 as 1944, 1945 as 1945, 1946 as 1946, 1947 as 1947, 1948 as 1948, 1949 as 1949, 1950 as 1950, 1951 as 1951, 1952 as 1952, 1953 as 1953, 1954 as 1954, 1955 as 1955, 1956 as 1956, 1957 as 1957, 1958 as 1958, 1959 as 1959, 1960 as 1960, 1961 as 1961, 1962 as 1962, 1963 as 1963, 1964 as 1964, 1965 as 1965, 1966 as 1966, 1967 as 1967, 1968 as 1968, 1969 as 1969, 1970 as 1970, 1971 as 1971, 1972 as 1972, 1973 as 1973, 1974 as 1974, 1975 as 1975, 1976 as 1976, 1977 as 1977, 1978 as 1978, 1979 as 1979, 1980 as 1980, 1981 as 1981, 1982 as 1982, 1983 as 1983, 1984 as 1984, 1985 as 1985, 1986 as 1986, 1987 as 1987, 1988 as 1988, 1989 as 1989, 1990 as 1990, 1991 as 1991, 1992 as 1992, 1993 as 1993, 1994 as 1994, 1995 as 1995, 1996 as 1996, 1997 as 1997, 1998 as 1998, 1999 as 1999, 2000 as 2000, 2001 as 2001, 2002 as 2002, 2003 as 2003, 2004 as 2004, 2005 as 2005, 2006 as 2006, 2007 as 2007, 2008 as 2008, 2009 as 2009, 2010 as 2010, 2011 as 2011, 2012 as 2012, 2013 as 2013, 2014 as 2014, 2015 as 2015, 2016 as 2016, 2017 as 2017, 2018 as 2018, 2019 as 2019, 2020 as 2020, 2021 as 2021, 2022 as 2022, 2023 as 2023, 2024 as 2024, 2025 as 2025, 2026 as 2026, 2027 as 2027, 2028 as 2028, 2029 as 2029, 2030 as 2030, 2031 as 2031, 2032 as 2032, 2033 as 2033, 2034 as 2034, 2035 as 2035, 2036 as 2036, 2037 as 2037, 2038 as 2038, 2039 as 2039, 2040 as 2040, 2041 as 2041, 2042 as 2042, 2043 as 2043, 2044 as 2044, 2045 as 2045, 2046 as 2046, 2047 as 2047, 2048 as 2048, 2049 as 2049, 2050 as 2050, 2051 as 2051, 2052 as 2052, 2053 as 2053, 2054 as 2054, 2055 as 2055, 2056 as 2056, 2057 as 2057, 2058 as 2058, 2059 as 2059, 2060 as 2060, 2061 as 2061, 2062 as 2062, 2063 as 2063, 2064 as 2064, 2065 as 2065, 2066 as 2066, 2067 as 2067, 2068 as 2068, 2069 as 2069, 2070 as 2070, 2071 as 2071, 2072 as 2072, 2073 as 2073, 2074 as 2074, 2075 as 2075, 2076 as 2076, 2077 as 2077, 2078 as 2078, 2079 as 2079, 2080 as 2080, 2081 as 2081, 2082 as 2082, 2083 as 2083, 2084 as 2084, 2085 as 2085, 2086 as 2086, 2087 as 2087, 2088 as 2088, 2089 as 2089, 2090 as 2090, 2091 as 2091, 2092 as 2092, 2093 as 2093, 2094 as 2094, 2095 as 2095, 2096 as 2096, 2097 as 2097, 2098 as 2098, 2099 as 2099, 2100 as 2100, 2101 as 2101, 2102 as 2102, 2103 as 2103, 2104 as 2104, 2105 as 2105, 2106 as 2106, 2107 as 2107, 2108 as 2108, 2109 as 2109, 2110 as 2110, 2111 as 2111, 2112 as 2112, 2113 as 2113, 2114 as 2114, 2115 as 2115, 2116 as 2116, 2117 as 2117, 2118 as 2118, 2119 as 2119, 2120 as 2120, 2121 as 2121, 2122 as 2122, 2123 as 2123, 2124 as 2124, 2125 as 2125, 2126 as 2126, 2127 as 2127, 2128 as 2128, 2129 as 2129, 2130 as 2130, 2131 as 2131, 2132 as 2132, 2133 as 2133, 2134 as 2134, 2135 as 2135, 2136 as 2136, 2137 as 2137, 2138 as 2138, 2139 as 2139, 2140 as 2140, 2141 as 2141, 2142 as 2142, 2143 as 2143, 2144 as 2144, 2145 as 2145, 2146 as 2146, 2147 as 2147, 2148 as 2148, 2149 as 2149, 2150 as 2150, 2151 as 2151, 2152 as 2152, 2153 as 2153, 2154 as 2154, 2155 as 2155, 2156 as 2156, 2157 as 2157, 2158 as 2158, 2159 as 2159, 2160 as 2160, 2161 as 2161, 2162 as 2162, 2163 as 2163, 2164 as 2164, 2165 as 2165, 2166 as 2166, 2167 as 2167, 2168 as 2168, 2169 as 2169, 2170 as 2170, 2171 as 2171, 2172 as 2172, 2173 as 2173, 2174 as 2174, 2175 as 2175, 2176 as 2176, 2177 as 2177, 2178 as 2178, 2179 as 2179, 2180 as 2180, 2181 as 2181, 2182 as 2182, 2183 as 2183, 2184 as 2184, 2185 as 2185, 2186 as 2186, 2187 as 2187, 2188 as 2188, 2189 as 2189, 2190 as 2190, 2191 as 2191, 2192 as 2192, 2193 as 2193, 2194 as 2194, 2195 as 2195, 2196 as 2196, 2197 as 2197, 2198 as 2198, 2199 as 2199, 2200 as 2200, 2201 as 2201, 2202 as 2202, 2203 as 2203, 2204 as 2204, 2205 as 2205, 2206 as 2206, 2207 as 2207, 2208 as 2208, 2209 as 2209, 2210 as 2210, 2211 as 2211, 2212 as 2212, 2213 as 2213, 2214 as 2214, 2215 as 2215, 2216 as 2216, 2217 as 2217, 2218 as 2218, 2219 as 2219, 2220 as 2220, 2221 as 2221, 2222 as 2222, 2223 as 2223, 2224 as 2224, 2225 as 2225, 2226 as 2226, 2227 as 2227, 2228 as 2228, 2229 as 2229, 2230 as 2230, 2231 as 2231, 2232 as 2232, 2233 as 2233, 2234 as 2234, 2235 as 2235, 2236 as 2236, 2237 as 2237, 2238 as 2238, 2239 as 2239, 2240 as 2240, 2241 as 2241, 2242 as 2242, 2243 as 2243, 2244 as 2244, 2245 as 2245, 2246 as 2246, 2247 as 2247, 2248 as 2248, 2249 as 2249, 2250 as 2250, 2251 as 2251, 2252 as 2252, 2253 as 2253, 2254 as 2254, 2255 as 2255, 2256 as 2256, 2257 as 2257, 2258 as 2258, 2259 as 2259, 2260 as 2260, 2261 as 2261, 2262 as 2262, 2263 as 2263, 2264 as 2264, 2265 as 2265, 2266 as 2266, 2267 as 2267, 2268 as 2268, 2269 as 2269, 2270 as 2270, 2271 as 2271, 2272 as 2272, 2273 as 2273, 2274 as 2274, 2275 as 2275, 2276 as 2276, 2277 as 2277, 2278 as 2278, 2279 as 2279, 2280 as 2280, 2281 as 2281, 2282 as 2282, 2283 as 2283, 2284 as 2284, 2285 as 2285, 2286 as 2286, 2287 as 2287, 2288 as 2288, 2289 as 2289, 2290 as 2290, 2291 as 2291, 2292 as 2292, 2293 as 2293, 2294 as 2294, 2295 as 2295, 2296 as 2296, 2297 as 2297, 2298 as 2298, 2299 as 2299, 2300 as 2300, 2301 as 2301, 2302 as 2302, 2303 as 2303, 2304 as 2304, 2305 as 2305, 2306 as 2306, 2307 as 2307, 2308 as 2308, 2309 as 2309, 2310 as 2310, 2311 as 2311, 2312 as 2312, 2313 as 2313, 2314 as 2314, 2315 as 2315, 2316 as 2316, 2317 as 2317, 2318 as 2318, 2319 as 2319, 2320 as 2320, 2321 as 2321, 2322 as 2322, 2323 as 2323, 2324 as 2324, 2325 as 2325, 2326 as 2326, 2327 as 2327, 2328 as 2328, 2329 as 2329, 2330 as 2330, 2331 as 2331, 2332 as 2332, 2333 as 2333, 2334 as 2334, 2335 as 2335, 2336 as 2336, 2337 as 2337, 2338 as 2338, 2339 as 2339, 2340 as 2340, 2341 as 2341, 2342 as 2342, 2343 as 2343, 2344 as 2344, 2345 as 2345, 2346 as 2346, 2347 as 2347, 2348 as 2348, 2349 as 2349, 2350 as 2350, 2351 as 2351, 2352 as 2352, 2353 as 2353, 2354 as 2354, 2355 as 2355, 2356 as 2356, 2357 as 2357, 2358 as 2358, 2359 as 2359, 2360 as 2360, 2361 as 2361, 2362 as 2362, 2363 as 2363, 2364 as 2364, 2365 as 2365, 2366 as 2366, 2367 as 2367, 2368 as 2368, 2369 as 2369, 2370 as 2370, 2371 as 2371, 2372 as 2372, 2373 as 2373, 2374 as 2374, 2375 as 2375, 2376 as 2376, 2377 as 2377, 2378 as 2378, 2379 as 2379, 2380 as 2380, 2381 as 2381, 2382 as 2382, 2383 as 2383, 2384 as 2384, 2385 as 2385, 2386 as 2386, 2387 as 2387, 2388 as 2388, 2389 as 2389, 2390 as 2390, 2391 as 2391, 2392 as 2392, 2393 as 2393, 2394 as 2394, 2395 as 2395, 2396 as 2396, 2397 as 2397, 2398 as 2398, 2399 as 2399, 2400 as 2400, 2401 as 2401, 2402 as 2402, 2403 as 2403, 2404 as 2404, 2405 as 2405, 2406 as 2406, 2407 as 2407, 2408 as 2408, 2409 as 2409, 2410 as 2410, 2411 as 2411, 2412 as 2412, 2413 as 2413, 2414 as 2414, 2415 as 2415, 2416 as 2416, 2417 as 2417, 2418 as 2418, 2419 as 2419, 2420 as 2420, 2421 as 2421, 2422 as 2422, 2423 as 2423, 2424 as 2424, 2425 as 2425, 2426 as 2426, 2427 as 2427, 2428 as 2428, 2429 as 2429, 2430 as 2430, 2431 as 2431, 2432 as 2432, 2433 as 2433, 2434 as 2434, 2435 as 2435, 2436 as 2436, 2437 as 2437, 2438 as 2438, 2439 as 2439, 2440 as 2440, 2441 as 2441, 2442 as 2442, 2443 as 2443, 2444 as 2444, 2445 as 2445, 2446 as 2446, 2447 as 2447, 2448 as 2448, 2449 as 2449, 2450 as 2450, 2451 as 2451, 2452 as 2452, 2453 as 2453, 2454 as 2454, 2455 as 2455, 2456 as 2456, 2457 as 2457, 2458 as 2458, 2459 as 2459, 2460 as 2460, 2461 as 2461, 2462 as 2462, 2463 as 2463, 2464 as 2464, 2465 as 2465, 2466 as 2466, 2467 as 2467, 2468 as 2468, 2469 as 2469, 2470 as 2470, 2471 as 2471, 2472 as 2472, 2473 as 2473, 2474 as 2474, 2475 as 2475, 2476 as 2476, 2477 as 2477, 2478 as 2478, 2479 as 2479, 2480 as 2480, 2481 as 2481, 2482 as 2482, 2483 as 2483, 2484 as 2484, 2485 as 2485, 2486 as 2486, 2487 as 2487, 2488 as 2488, 2489 as 2489, 2490 as 2490, 2491 as 2491, 2492 as 2492, 2493 as 2493, 2494 as 2494, 2495 as 2495, 2496 as 2496, 2497 as 2497, 2498 as 2498, 2499 as 2499, 2500 as 2500, 2501 as 2501, 2502 as 2502, 2503 as 2503, 2504 as 2504, 2505 as 2505, 2506 as 2506, 2507 as 2507, 2508 as 2508, 2509 as 2509, 2510 as 2510, 2511 as 2511, 2512 as 2512, 2513 as 2513, 2514 as 2514, 2515 as 2515, 2516 as 2516, 2517 as 2517, 2518 as 2518, 2519 as 2519, 2520 as 2520, 2521 as 2521, 2522 as 2522, 2523 as 2523, 2524 as 2524, 2525 as 2525, 2526 as 2526, 2527 as 2527, 2528 as 2528, 2529 as 2529, 2530 as 2530, 2531 as 2531, 2532 as 2532, 2533 as 2533, 2534 as 2534, 2535 as 2535, 2536 as 2536, 2537 as 2537, 2538 as 2538, 2539 as 2539, 2540 as 2540, 2541 as 2541, 2542 as 2542, 2543 as 2543, 2544 as 2544, 2545 as 2545, 2546 as 2546, 2547 as 2547, 2548 as 2548, 2549 as 2549, 2550 as 2550, 2551 as 2551, 2552 as 2552, 2553 as 2553, 2554 as 2554, 2555 as 2555, 2556 as 2556, 2557 as 2557, 2558 as 2558, 2559 as 2559, 2560 as 2560, 2561 as 2561, 2562 as 2562, 2563 as 2563, 2564 as 2564, 2565 as 2565, 2566 as 2566, 2567 as 2567, 2568 as 2568, 2569 as 2569, 2570 as 2570, 2571 as 2571, 2572 as 2572, 2573 as 2573, 2574 as 2574, 2575 as 2575, 2576 as 2576, 2577 as 2577, 2578 as 2578, 2579 as 2579, 2580 as 2580, 2581 as 2581, 2582 as 2582, 2583 as 2583, 2584 as 2584, 2585 as 2585, 2586 as 2586, 2587 as 2587, 2588 as 2588, 2589 as 2589, 2590 as 2590, 2591 as 2591, 2592 as 2592, 2593 as 2593, 2594 as 2594, 2595 as 2595, 2596 as 2596, 2597 as 2597, 2598 as 2598, 2599 as 2599, 2600 as 2600, 2601 as 2601, 2602 as 2602, 2603 as 2603, 2604 as 2604, 2605 as 2605, 2606 as 2606, 2607 as 2607, 2608 as 2608, 2609 as 2609, 2610 as 2610, 2611 as 2611, 2612 as 2612, 2613 as 2613, 2614 as 2614, 2615 as 2615, 2616 as 2616, 2617 as 2617, 2618 as 2618, 2619 as 2619, 2620 as 2620, 2621 as 2621, 2622 as 2622, 2623 as 2623, 2624 as 2624, 2625 as 2625, 2626 as 2626, 2627 as 2627, 2628 as 2628, 2629 as 2629, 2630 as 2630, 2631 as 2631, 2632 as 2632, 2633 as 2633, 2634 as 2634, 2635 as 2635, 2636 as 2636, 2637 as 2637, 2638 as 2638, 2639 as 2639, 2640 as 2640, 2641 as 2641, 2642 as 2642, 2643 as 2643, 2644 as 2644, 2645 as 2645, 2646 as 2646, 2647 as 2647, 2648 as 2648, 2649 as 2649, 2650 as 2650, 2651 as 2651, 2652 as 2652, 2653 as 2653, 2654 as 2654, 2655 as 2655, 2656 as 2656, 2657 as 2657, 2658 as 2658, 2659 as 2659, 2660 as 2660, 2661 as 2661, 2662 as 2662, 2663 as 2663, 2664 as 2664, 2665 as 2665, 2666 as 2666, 2667 as 2667, 2668 as 2668, 2669 as 2669, 2670 as 2670, 2671 as 2671, 2672 as 2672, 2673 as 2673, 2674 as 2674, 2675 as 2675, 2676 as 2676, 2677 as 2677, 2678 as 2678, 2679 as 2679, 2680 as 2680, 2681 as 2681, 2682 as 2682, 2683 as 2683, 2684 as 2684, 2685 as 2685, 2686 as 2686, 2687 as 2687, 2688 as 2688, 2689 as 2689, 2690 as 2690, 2691 as 2691, 2692 as 2692, 2693 as 2693, 2694 as 2694, 2695 as 2695, 2696 as 2696, 2697 as 2697, 2698 as 2698, 2699 as 2699, 2700 as 2700, 2701 as 2701, 2702 as 2702, 2703 as 2703, 2704 as 2704, 2705 as 2705, 2706 as 2706, 2707 as 2707, 2708 as 2708, 2709 as 2709, 2710 as 2710, 2711 as 2711, 2712 as 2712, 2713 as 2713, 2714 as 2714, 2715 as 2715, 2716 as 2716, 2717 as 2717, 2718 as 2718, 2719 as 2719, 2720 as 2720, 2721 as 2721, 2722 as 2722, 2723 as 2723, 2724 as 2724, 2725 as 2725, 2726 as 2726, 2727 as 2727, 2728 as 2728, 2729 as 2729, 2730 as 2730, 2731 as 2731, 2732 as 2732, 2733 as 2733, 2734 as 2734, 2735 as 2735, 2736 as 2736, 2737 as 2737, 2738 as 2738, 2739 as 2739, 2740 as 2740, 2741 as 2741, 2742 as 2742, 2743 as 2743, 2744 as 2744, 2745 as 2745, 2746 as 2746, 2747 as 2747, 2748 as 2748, 2749 as 2749, 2750 as 2750, 2751 as 2751, 2752 as 2752, 2753 as 2753, 2754 as 2754, 2755 as 2755, 2756 as 2756, 2757 as 2757, 2758 as 2758, 2759 as 2759, 2760 as 2760, 2761 as 2761, 2762 as 2762, 2763 as 2763, 2764 as 2764, 2765 as 2765, 2766 as 2766, 2767 as 2767, 2768 as 2768, 2769 as 2769, 2770 as 2770, 2771 as 2771, 2772 as 2772, 2773 as 2773, 2774 as 2774, 2775 as 2775, 2776 as 2776, 2777 as 2777, 2778 as 2778, 2779 as 2779, 2780 as 2780, 2781 as 2781, 2782 as 2782, 2783 as 2783, 2784 as 2784, 2785 as 2785, 2786 as 2786, 2787 as 2787, 2788 as 2788, 2789 as 2789, 2790 as 2790, 2791 as 2791, 2792 as 2792, 2793 as 2793, 2794 as 2794, 2795 as 2795, 2796 as 2796, 2797 as 2797, 2798 as 2798, 2799 as 2799, 2800 as 2800, 2801 as 2801, 2802 as 2802, 2803 as 2803, 2804 as 2804, 2805 as 2805, 2806 as 2806, 2807 as 2807, 2808 as 2808, 2809 as 2809, 2810 as 2810, 2811 as 2811, 2812 as 2812, 2813 as 2813, 2814 as 2814, 2815 as 2815, 2816 as 2816, 2817 as 2817, 2818 as 2818, 2819 as 2819, 2820 as 2820, 2821 as 2821, 2822 as 2822, 2823 as 2823, 2824 as 2824, 2825 as 2825, 2826 as 2826, 2827 as 2827, 2828 as 2828, 2829 as 2829, 2830 as 2830, 2831 as 2831, 2832 as 2832, 2833 as 2833, 2834 as 2834, 2835 as 2835, 2836 as 2836, 2837 as 2837, 2838 as 2838, 2839 as 2839, 2840 as 2840, 2841 as 2841, 2842 as 2842, 2843 as 2843, 2844 as 2844, 2845 as 2845, 2846 as 2846, 2847 as 2847, 2848 as 2848, 2849 as 2849, 2850 as 2850, 2851 as 2851, 2852 as 2852, 2853 as 2853, 2854 as 2854, 2855 as 2855, 2856 as 2856, 2857 as 2857, 2858 as 2858, 2859 as 2859, 2860 as 2860, 2861 as 2861, 2862 as 2862, 2863 as 2863, 2864 as 2864, 2865 as 2865, 2866 as 2866, 2867 as 2867, 2868 as 2868, 2869 as 2869, 2870 as 2870, 2871 as 2871, 2872 as 2872, 2873 as 2873, 2874 as 2874, 2875 as 2875, 2876 as 2876, 2877 as 2877, 2878 as 2878, 2879 as 2879, 2880 as 2880, 2881 as 2881, 2882 as 2882, 2883 as 2883, 2884 as 2884, 2885 as 2885, 2886 as 2886, 2887 as 2887, 2888 as 2888, 2889 as 2889, 2890 as 2890, 2891 as 2891, 2892 as 2892, 2893 as 2893, 2894 as 2894, 2895 as 2895, 2896 as 2896, 2897 as 2897, 2898 as 2898, 2899 as 2899, 2900 as 2900, 2901 as 2901, 2902 as 2902, 2903 as 2903, 2904 as 2904, 2905 as 2905, 2906 as 2906, 2907 as 2907, 2908 as 2908, 2909 as 2909, 2910 as 2910, 2911 as 2911, 2912 as 2912, 2913 as 2913, 2914 as 2914, 2915 as 2915, 2916 as 2916, 2917 as 2917, 2918 as 2918, 2919 as 2919, 2920 as 2920, 2921 as 2921, 2922 as 2922, 2923 as 2923, 2924 as 2924, 2925 as 2925, 2926 as 2926, 2927 as 2927, 2928 as 2928, 2929 as 2929, 2930 as 2930, 2931 as 2931, 2932 as 2932, 2933 as 2933, 2934 as 2934, 2935 as 2935, 2936 as 2936, 2937 as 2937, 2938 as 2938, 2939 as 2939, 2940 as 2940, 2941 as 2941, 2942 as 2942, 2943 as 2943, 2944 as 2944, 2945 as 2945, 2946 as 2946, 2947 as 2947, 2948 as 2948, 2949 as 2949, 2950 as 2950, 2951 as 2951, 2952 as 2952, 2953 as 2953, 2954 as 2954, 2955 as 2955, 2956 as 2956, 2957 as 2957, 2958 as 2958, 2959 as 2959, 2960 as 2960, 2961 as 2961, 2962 as 2962, 2963 as 2963, 2964 as 2964, 2965 as 2965, 2966 as 2966, 2967 as 2967, 2968 as 2968, 2969 as 2969, 2970 as 2970, 2971 as 2971, 2972 as 2972, 2973 as 2973, 2974 as 2974, 2975 as 2975, 2976 as 2976, 2977 as 2977, 2978 as 2978, 2979 as 2979, 2980 as 2980, 2981 as 2981, 2982 as 2982, 2983 as 2983, 2984 as 2984, 2985 as 2985, 2986 as 2986, 2987 as 2987, 2988 as 2988, 2989 as 2989, 2990 as 2990, 2991 as 2991, 2992 as 2992, 2993 as 2993, 2994 as 2994, 2995 as 2995, 2996 as 2996, 2997 as 2997, 2998 as 2998, 2999 as 2999, 3000 as 3000, 3001 as 3001, 3002 as 3002, 3003 as 3003, 3004 as 3004, 3005 as 3005, 3006 as 3006, 3007 as 3007, 3008 as 3008, 3009 as 3009, 3010 as 3010, 3011 as 3011, 3012 as 3012, 3013 as 3013, 3014 as 3014, 3015 as 3015, 3016 as 3016, 3017 as 3017, 3018 as 3018, 3019 as 3019, 3020 as 3020, 3021 as 3021, 3022 as 3022, 3023 as 3023, 3024 as 3024, 3025 as 3025, 3026 as 3026, 3027 as 3027, 3028 as 3028, 3029 as 3029, 3030 as 3030, 3031 as 3031, 3032 as 3032, 3033 as 3033, 3034 as 3034, 3035 as 3035, 3036 as 3036, 3037 as 3037, 3038 as 3038, 3039 as 3039, 3040 as 3040, 3041 as 3041, 3042 as 3042, 3043 as 3043, 3044 as 3044, 3045 as 3045, 3046 as 3046, 3047 as 3047, 3048 as 3048, 3049 as 3049, 3050 as 3050, 3051 as 3051, 3052 as 3052, 3053 as 3053, 3054 as 3054, 3055 as 3055, 3056 as 3056, 3057 as 3057, 3058 as 3058, 3059 as 3059, 3060 as 3060, 3061 as 3061, 3062 as 3062, 3063 as 3063, 3064 as 3064, 3065 as 3065, 3066 as 3066, 3067 as 3067, 3068 as 3068, 3069 as 3069, 3070 as 3070, 3071 as 3071, 3072 as 3072, 3073 as 3073, 3074 as 3074, 3075 as 3075, 3076 as 3076, 3077 as 3077, 3078 as 3078, 3079 as 3079, 3080 as 3080, 3081 as 3081, 3082 as 3082, 3083 as 3083, 3084 as 3084, 3085 as 3085, 3086 as 3086, 3087 as 3087, 3088 as 3088, 3089 as 3089, 3090 as 3090, 3091 as 3091, 3092 as 3092, 3093 as 3093, 3094 as 3094, 3095 as 3095, 3096 as 3096, 3097 as 3097, 3098 as 3098, 3099 as 3099, 3100 as 3100, 3101 as 3101, 3102 as 3102, 3103 as 3103, 3104 as 3104, 3105 as 3105, 3106 as 3106, 3107 as 3107, 3108 as 3108, 3109 as 3109, 3110 as 3110, 3111 as 3111, 3112 as 3112, 3113 as 3113, 3114 as 3114, 3115 as 3115, 3116 as 3116, 3117 as 3117, 3118 as 3118, 3119 as 3119, 3120 as 3120, 3121 as 3121, 3122 as 3122, 3123 as 3123, 3124 as 3124, 3125 as 3125, 3126 as 3126, 3127 as 3127, 3128 as 3128, 3129 as 3129, 3130 as 3130, 3131 as 3131, 3132 as 3132, 3133 as 3133, 3134 as 3134, 3135 as 3135, 3136 as 3136, 3137 as 3137, 3138 as 3138, 3139 as 3139, 3140 as 3140, 3141 as 3141, 3142 as 3142, 3143 as 3143, 3144 as 3144, 3145 as 3145, 3146 as 3146, 3147 as 3147, 3148 as 3148, 3149 as 3149, 3150 as 3150, 3151 as 3151, 3152 as 3152, 3153 as 3153, 3154 as 3154, 3155 as 3155, 3156 as 3156, 3157 as 3157, 3158 as 3158, 3159 as 3159, 3160 as 3160, 3161 as 3161, 3162 as 3162, 3163 as 3163, 3164 as 3164, 3165 as 3165, 3166 as 3166, 3167 as 3167, 3168 as 3168, 3169 as 3169, 3170 as 3170, 3171 as 3171, 3172 as 3172, 3173 as 3173, 3174 as 3174, 3175 as 3175, 3176 as 3176, 3177 as 3177, 3178 as 3178, 3179 as 3179, 3180 as 3180, 3181 as 3181, 3182 as 3182, 3183 as 3183, 3184 as 3184, 3185 as 3185, 3186 as 3186, 3187 as 3187, 3188 as 3188, 3189 as 3189, 3190 as 3190, 3191 as 3191, 3192 as 3192, 3193 as 3193, 3194 as 3194, 3195 as 3195, 3196 as 3196, 3197 as 3197, 3198 as 3198, 3199 as 3199, 3200 as 3200, 3201 as 3201, 3202 as 3202, 3203 as 3203, 3204 as 3204, 3205 as 3205, 3206 as 3206, 3207 as 3207, 3208 as 3208, 3209 as 3209, 3210 as 3210, 3211 as 3211, 3212 as 3212, 3213 as 3213, 3214 as 3214, 3215 as 3215, 3216 as 3216, 3217 as 3217, 3218 as 3218, 3219 as 3219, 3220 as 3220, 3221 as 3221, 3222 as 3222, 3223 as 3223, 3224 as 3224, 3225 as 3225, 3226 as 3226, 3227 as 3227, 3228 as 3228, 3229 as 3229, 3230 as 3230, 3231 as 3231, 3232 as 3232, 3233 as 3233, 3234 as 3234, 3235 as 3235, 3236 as 3236, 3237 as 3237, 3238 as 3238, 3239 as 3239, 3240 as 3240, 3241 as 3241, 3242 as 3242, 3243 as 3243, 3244 as 3244, 3245 as 3245, 3246 as 3246, 3247 as 3247, 3248 as 3248, 3249 as 3249, 3250 as 3250, 3251 as 3251, 3252 as 3252, 3253 as 3253, 3254 as 3254, 3255 as 3255, 3256 as 3256, 3257 as 3257, 3258 as 3258, 3259 as 3259, 3260 as 3260, 3261 as 3261, 3262 as 3262, 3263 as 3263, 3264 as 3264, 3265 as 3265, 3266 as 3266, 3267 as 3267, 3268 as 3268, 3269 as 3269, 3270 as 3270, 3271 as 3271, 3272 as 3272, 3273 as 3273, 3274 as 3274, 3275 as 3275, 3276 as 3276, 3277 as 3277, 3278 as 3278, 3279 as 3279, 3280 as 3280, 3281 as 3281, 3282 as 3282, 3283 as 3283, 3284 as 3284, 3285 as 3285, 3286 as 3286, 3287 as 3287, 3288 as 3288, 3289 as 3289, 3290 as 3290, 3291 as 3291, 3292 as 3292, 3293 as 3293, 3294 as 3294, 3295 as 3295, 3296 as 3296, 3297 as 3297, 3298 as 3298, 3299 as 3299, 3300 as 3300, 3301 as 3301, 3302 as 3302, 3303 as 3303, 3304 as 3304, 3305 as 3305, 3306 as 3306, 3307 as 3307, 3308 as 3308, 3309 as 3309, 3310 as 3310, 3311 as 3311, 3312 as 3312, 3313 as 3313, 3314 as 3314, 3315 as 3315, 3316 as 3316, 3317 as 3317, 3318 as 3318, 3319 as 3319, 3320 as 3320, 3321 as 3321, 3322 as 3322, 3323 as 3323, 3324 as 3324, 3325 as 3325, 3326 as 3326, 3327 as 3327, 3328 as 3328, 3329 as 3329, 3330 as 3330, 3331 as 3331, 3332 as 3332, 3333 as 3333, 3334 as 3334, 3335 as 3335, 3336 as 3336, 3337 as 3337, 3338 as 3338, 3339 as 3339, 3340 as 3340, 3341 as 3341, 3342 as 3342, 3343 as 3343, 3344 as 3344, 3345 as 3345, 3346 as 3346, 3347 as 3347, 3348 as 3348, 3349 as 3349, 3350 as 3350, 3351 as 3351, 3352 as 3352, 3353 as 3353, 3354 as 3354, 3355 as 3355, 3356 as 3356, 3357 as 3357, 3358 as 3358, 3359 as 3359, 3360 as 3360, 3361 as 3361, 3362 as 3362, 3363 as 3363, 3364 as 3364, 3365 as 3365, 3366 as 3366, 3367 as 3367, 3368 as 3368, 3369 as 3369, 3370 as 3370, 3371 as 3371, 3372 as 3372, 3373 as 3373, 3374 as 3374, 3375 as 3375, 3376 as 3376, 3377 as 3377, 3378 as 3378, 3379 as 3379, 3380 as 3380, 3381 as 3381, 3382 as 3382, 3383 as 3383, 3384 as 3384, 3385 as 3385, 3386 as 3386, 3387 as 3387, 3388 as 3388, 3389 as 3389, 3390 as 3390, 3391 as 3391, 3392 as 3392, 3393 as 3393, 3394 as 3394, 3395 as 3395, 3396 as 3396, 3397 as 3397, 3398 as 3398, 3399 as 3399, 3400 as 3400, 3401 as 3401, 3402 as 3402, 3403 as 3403, 3404 as 3404, 3405 as 3405, 3406 as 3406, 3407 as 3407, 3408 as 3408, 3409 as 3409, 3410 as 3410, 3411 as 3411, 3412 as 3412, 3413 as 3413, 3414 as 3414, 3415 as 3415, 3416 as 3416, 3417 as 3417, 3418 as 3418, 3419 as 3419, 3420 as 3420, 3421 as 3421, 3422 as 3422, 3423 as 3423, 3424 as 3424, 3425 as 3425, 3426 as 3426, 3427 as 3427, 3428 as 3428, 3429 as 3429, 3430 as 3430, 3431 as 3431, 3432 as 3432, 3433 as 3433, 3434 as 3434, 3435 as 3435, 3436 as 3436, 3437 as 3437, 3438 as 3438, 3439 as 3439, 3440 as 3440, 3441 as 3441, 3442 as 3442, 3443 as 3443, 3444 as 3444, 3445 as 3445, 3446 as 3446, 3447 as 3447, 3448 as 3448, 3449 as 3449, 3450 as 3450, 3451 as 3451, 3452 as 3452, 3453 as 3453, 3454 as 3454, 3455 as 3455, 3456 as 3456, 3457 as 3457, 3458 as 3458, 3459 as 3459, 3460 as 3460, 3461 as 3461, 3462 as 3462, 3463 as 3463, 3464 as 3464, 3465 as 3465, 3466 as 3466, 3467 as 3467, 3468 as 3468, 3469 as 3469, 3470 as 3470, 3471 as 3471, 3472 as 3472, 3473 as 3473, 3474 as 3474, 3475 as 3475, 3476 as 3476, 3477 as 3477, 3478 as 3478, 3479 as 3479, 3480 as 3480, 3481 as 3481, 3482 as 3482, 3483 as 3483, 3484 as 3484, 3485 as 3485, 3486 as 3486, 3487 as 3487, 3488 as 3488, 3489 as 3489, 3490 as 3490, 3491 as 3491, 3492 as 3492, 3493 as 3493, 3494 as 3494, 3495 as 3495, 3496 as 3496, 3497 as 3497, 3498 as 3498, 3499 as 3499, 3500 as 3500, 3501 as 3501, 3502 as 3502, 3503 as 3503, 3504 as 3504, 3505 as 3505, 3506 as 3506, 3507 as 3507, 3508 as 3508, 3509 as 3509, 3510 as 3510, 3511 as 3511, 3512 as 3512, 3513 as 3513, 3514 as 3514, 3515 as 3515, 3516 as 3516, 3517 as 3517, 3518 as 3518, 3519 as 3519, 3520 as 3520, 3521 as 3521, 3522 as 3522, 3523 as 3523, 3524 as 3524, 3525 as 3525, 3526 as 3526, 3527 as 3527, 3528 as 3528, 3529 as 3529, 3530 as 3530, 3531 as 3531, 3532 as 3532, 3533 as 3533, 3534 as 3534, 3535 as 3535, 3536 as 3536, 3537 as 3537, 3538 as 3538, 3539 as 3539, 3540 as 3540, 3541 as 3541, 3542 as 3542, 3543 as 3543, 3544 as 3544, 3545 as 3545, 3546 as 3546, 3547 as 3547, 3548 as 3548, 3549 as 3549, 3550 as 3550, 3551 as 3551, 3552 as 3552, 3553 as 3553, 3554 as 3554, 3555 as 3555, 3556 as 3556, 3557 as 3557, 3558 as 3558, 3559 as 3559, 3560 as 3560, 3561 as 3561, 3562 as 3562, 3563 as 3563, 3564 as 3564, 3565 as 3565, 3566 as 3566, 3567 as 3567, 3568 as 3568, 3569 as 3569, 3570 as 3570, 3571 as 3571, 3572 as 3572, 3573 as 3573, 3574 as 3574, 3575 as 3575, 3576 as 3576, 3577 as 3577, 3578 as 3578, 3579 as 3579, 3580 as 3580, 3581 as 3581, 3582 as 3582, 3583 as 3583, 3584 as 3584, 3585 as 3585, 3586 as 3586, 3587 as 3587, 3588 as 3588, 3589 as 3589, 3590 as 3590, 3591 as 3591, 3592 as 3592, 3593 as 3593, 3594 as 3594, 3595 as 3595, 3596 as 3596, 3597 as 3597, 3598 as 3598, 3599 as 3599, 3600 as 3600, 3601 as 3601, 3602 as 3602, 3603 as 3603, 3604 as 3604, 3605 as 3605, 3606 as 3606, 3607 as 3607, 3608 as 3608, 3609 as 3609, 3610 as 3610, 3611 as 3611, 3612 as 3612, 3613 as 3613, 3614 as 3614, 3615 as 3615, 3616 as 3616, 3617 as 3617, 3618 as 3618, 3619 as 3619, 3620 as 3620, 3621 as 3621, 3622 as 3622, 3623 as 3623, 3624 as 3624, 3625 as 3625, 3626 as 3626, 3627 as 3627, 3628 as 3628, 3629 as 3629, 3630 as 3630, 3631 as 3631, 3632 as 3632, 3633 as 3633, 3634 as 3634, 3635 as 3635, 3636 as 3636, 3637 as 3637, 3638 as 3638, 3639 as 3639, 3640 as 3640, 3641 as 3641, 3642 as 3642, 3643 as 3643, 3644 as 3644, 3645 as 3645, 3646 as 3646, 3647 as 3647, 3648 as 3648, 3649 as 3649, 3650 as 3650, 3651 as 3651, 3652 as 3652, 3653 as 3653, 3654 as 3654, 3655 as 3655, 3656 as 3656, 3657 as 3657, 3658 as 3658, 3659 as 3659, 3660 as 3660, 3661 as 3661, 3662 as 3662, 3663 as 3663, 3664 as 3664, 3665 as 3665, 3666 as 3666, 3667 as 3667, 3668 as 3668, 3669 as 3669, 3670 as 3670, 3671 as 3671, 3672 as 3672, 3673 as 3673, 3674 as 3674, 3675 as 3675, 3676 as 3676, 3677 as 3677, 3678 as 3678, 3679 as 3679, 3680 as 3680, 3681 as 3681, 3682 as 3682, 3683 as 3683, 3684 as 3684, 3685 as 3685, 3686 as 3686, 3687 as 3687, 3688 as 3688, 3689 as 3689, 3690 as 3690, 3691 as 3691, 3692 as 3692, 3693 as 3693, 3694 as 3694, 3695 as 3695, 3696 as 3696, 3697 as 3697, 3698 as 3698, 3699 as 3699, 3700 as 3700, 3701 as 3701, 3702 as 3702, 3703 as 3703, 3704 as 3704, 3705 as 3705, 3706 as 3706, 3707 as 3707, 3708 as 3708, 3709 as 3709, 3710 as 3710, 3711 as 3711, 3712 as 3712, 3713 as 3713, 3714 as 3714, 3715 as 3715, 3716 as 3716, 3717 as 3717, 3718 as 3718, 3719 as 3719, 3720 as 3720, 3721 as 3721, 3722 as 3722, 3723 as 3723, 3724 as 3724, 3725 as 3725, 3726 as 3726, 3727 as 3727, 3728 as 3728, 3729 as 3729, 3730 as 3730, 3731 as 3731, 3732 as 3732, 3733 as 3733, 3734 as 3734, 3735 as 3735, 3736 as 3736, 3737 as 3737, 3738 as 3738, 3739 as 3739, 3740 as 3740, 3741 as 3741, 3742 as 3742, 3743 as 3743, 3744 as 3744, 3745 as 3745, 3746 as 3746, 3747 as 3747, 3748 as 3748, 3749 as 3749, 3750 as 3750, 3751 as 3751, 3752 as 3752, 3753 as 3753, 3754 as 3754, 3755 as 3755, 3756 as 3756, 3757 as 3757, 3758 as 3758, 3759 as 3759, 3760 as 3760, 3761 as 3761, 3762 as 3762, 3763 as 3763, 3764 as 3764, 3765 as 3765, 3766 as 3766, 3767 as 3767, 3768 as 3768, 3769 as 3769, 3770 as 3770, 3771 as 3771, 3772 as 3772, 3773 as 3773, 3774 as 3774, 3775 as 3775, 3776 as 3776, 3777 as 3777, 3778 as 3778, 3779 as 3779, 3780 as 3780, 3781 as 3781, 3782 as 3782, 3783 as 3783, 3784 as 3784, 3785 as 3785, 3786 as 3786, 3787 as 3787, 3788 as 3788, 3789 as 3789, 3790 as 3790, 3791 as 3791, 3792 as 3792, 3793 as 3793, 3794 as 3794, 3795 as 3795, 3796 as 3796, 3797 as 3797, 3798 as 3798, 3799 as 3799, 3800 as 3800, 3801 as 3801, 3802 as 3802, 3803 as 3803, 3804 as 3804, 3805 as 3805, 3806 as 3806, 3807 as 3807, 3808 as 3808, 3809 as 3809, 3810 as 3810, 3811 as 3811, 3812 as 3812, 3813 as 3813, 3814 as 3814, 3815 as 3815, 3816 as 3816, 3817 as 3817, 3818 as 3818, 3819 as 3819, 3820 as 3820, 3821 as 3821, 3822 as 3822, 3823 as 3823, 3824 as 3824, 3825 as 3825, 3826 as 3826, 3827 as 3827, 3828 as 3828, 3829 as 3829, 3830 as 3830, 3831 as 3831, 3832 as 3832, 3833 as 3833, 3834 as 3834, 3835 as 3835, 3836 as 3836, 3837 as 3837, 3838 as 3838, 3839 as 3839, 3840 as 3840, 3841 as 3841, 3842 as 3842, 3843 as 3843, 3844 as 3844, 3845 as 3845, 3846 as 3846, 3847 as 3847, 3848 as 3848, 3849 as 3849, 3850 as 3850, 3851 as 3851, 3852 as 3852, 3853 as 3853, 3854 as 3854, 3855 as 3855, 3856 as 3856, 3857 as 3857, 3858 as 3858, 3859 as 3859, 3860 as 3860, 3861 as 3861, 3862 as 3862, 3863 as 3863, 3864 as 3864, 3865 as 3865, 3866 as 3866, 3867 as 3867, 3868 as 3868, 3869 as 3869, 3870 as 3870, 3871 as 3871, 3872 as 3872, 3873 as 3873, 3874 as 3874, 3875 as 3875, 3876 as 3876, 3877 as 3877, 3878 as 3878, 3879 as 3879, 3880 as 3880, 3881 as 3881, 3882 as 3882, 3883 as 3883, 3884 as 3884, 3885 as 3885, 3886 as 3886, 3887 as 3887, 3888 as 3888, 3889 as 3889, 3890 as 3890, 3891 as 3891, 3892 as 3892, 3893 as 3893, 3894 as 3894, 3895 as 3895, 3896 as 3896, 3897 as 3897, 3898 as 3898, 3899 as 3899, 3900 as 3900, 3901 as 3901, 3902 as 3902, 3903 as 3903, 3904 as 3904, 3905 as 3905, 3906 as 3906, 3907 as 3907, 3908 as 3908, 3909 as 3909, 3910 as 3910, 3911 as 3911, 3912 as 3912, 3913 as 3913, 3914 as 3914, 3915 as 3915, 3916 as 3916, 3917 as 3917, 3918 as 3918, 3919 as 3919, 3920 as 3920, 3921 as 3921, 3922 as 3922, 3923 as 3923, 3924 as 3924, 3925 as 3925, 3926 as 3926, 3927 as 3927, 3928 as 3928, 3929 as 3929, 3930 as 3930, 3931 as 3931, 3932 as 3932, 3933 as 3933, 3934 as 3934, 3935 as 3935, 3936 as 3936, 3937 as 3937, 3938 as 3938, 3939 as 3939, 3940 as 3940, 3941 as 3941, 3942 as 3942, 3943 as 3943, 3944 as 3944, 3945 as 3945, 3946 as 3946, 3947 as 3947, 3948 as 3948, 3949 as 3949, 3950 as 3950, 3951 as 3951, 3952 as 3952, 3953 as 3953, 3954 as 3954, 3955 as 3955, 3956 as 3956, 3957 as 3957, 3958 as 3958, 3959 as 3959, 3960 as 3960, 3961 as 3961, 3962 as 3962, 3963 as 3963, 3964 as 3964, 3965 as 3965, 3966 as 3966, 3967 as 3967, 3968 as 3968, 3969 as 3969, 3970 as 3970, 3971 as 3971, 3972 as 3972, 3973 as 3973, 3974 as 3974, 3975 as 3975, 3976 as 3976, 3977 as 3977, 3978 as 3978, 3979 as 3979, 3980 as 3980, 3981 as 3981, 3982 as 3982, 3983 as 3983, 3984 as 3984, 3985 as 3985, 3986 as 3986, 3987 as 3987, 3988 as 3988, 3989 as 3989, 3990 as 3990, 3991 as 3991, 3992 as 3992, 3993 as 3993, 3994 as 3994, 3995 as 3995, 3996 as 3996, 3997 as 3997, 3998 as 3998, 3999 as 3999, 4000 as 4000, 4001 as 4001, 4002 as 4002, 4003 as 4003, 4004 as 4004, 4005 as 4005, 4006 as 4006, 4007 as 4007, 4008 as 4008, 4009 as 4009, 4010 as 4010, 4011 as 4011, 4012 as 4012, 4013 as 4013, 4014 as 4014, 4015 as 4015, 4016 as 4016, 4017 as 4017, 4018 as 4018, 4019 as 4019, 4020 as 4020, 4021 as 4021, 4022 as 4022, 4023 as 4023, 4024 as 4024, 4025 as 4025, 4026 as 4026, 4027 as 4027, 4028 as 4028, 4029 as 4029, 4030 as 4030, 4031 as 4031, 4032 as 4032, 4033 as 4033, 4034 as 4034, 4035 as 4035, 4036 as 4036, 4037 as 4037, 4038 as 4038, 4039 as 4039, 4040 as 4040, 4041 as 4041, 4042 as 4042, 4043 as 4043, 4044 as 4044, 4045 as 4045, 4046 as 4046, 4047 as 4047, 4048 as 4048, 4049 as 4049, 4050 as 4050, 4051 as 4051, 4052 as 4052, 4053 as 4053, 4054 as 4054, 4055 as 4055, 4056 as 4056, 4057 as 4057, 4058 as 4058, 4059 as 4059, 4060 as 4060, 4061 as 4061, 4062 as 4062, 4063 as 4063, 4064 as 4064, 4065 as 4065, 4066 as 4066, 4067 as 4067, 4068 as 4068, 4069 as 4069, 4070 as 4070, 4071 as 4071, 4072 as 4072, 4073 as 4073, 4074 as 4074, 4075 as 4075, 4076 as 4076, 4077 as 4077, 4078 as 4078, 4079 as 4079, 4080 as 4080, 4081 as 4081, 4082 as 4082, 4083 as 4083, 4084 as 4084, 4085 as 4085, 4086 as 4086, 4087 as 4087, 4088 as 4088, 4089 as 4089, 4090 as 4090, 4091 as 4091, 4092 as 4092, 4093 as 4093, 4094 as 4094, 4095 as 4095, 4096 as 4096, 4097 as 4097, 4098 as 4098, 4099 as 4099, 4100 as 4100, 4101 as 4101, 4102 as 4102, 4103 as 4103, 4104 as 4104, 4105 as 4105, 4106 as 4106, 4107 as 4107, 4108 as 4108, 4109 as 4109, 4110 as 4110, 4111 as 4111, 4112 as 4112, 4113 as 4113, 4114 as 4114, 4115 as 4115, 4116 as 4116, 4117 as 4117, 4118 as 4118, 4119 as 4119, 4120 as 4120, 4121 as 4121, 4122 as 4122, 4123 as 4123, 4124 as 4124, 4125 as 4125, 4126 as 4126, 4127 as 4127, 4128 as 4128, 4129 as 4129, 4130 as 4130, 4131 as 4131, 4132 as 4132, 4133 as 4133, 4134 as 4134, 4135 as 4135, 4136 as 4136, 4137 as 4137, 4138 as 4138, 4139 as 4139, 4140 as 4140, 4141 as 4141, 4142 as 4142, 4143 as 4143, 4144 as 4144, 4145 as 4145, 4146 as 4146, 4147 as 4147, 4148 as 4148, 4149 as 4149, 4150 as 4150, 4151 as 4151, 4152 as 4152, 4153 as 4153, 4154 as 4154, 4155 as 4155, 4156 as 4156, 4157 as 4157, 4158 as 4158, 4159 as 4159, 4160 as 4160, 4161 as 4161, 4162 as 4162, 4163 as 4163, 4164 as 4164, 4165 as 4165, 4166 as 4166, 4167 as 4167, 4168 as 4168, 4169 as 4169, 4170 as 4170, 4171 as 4171, 4172 as 4172, 4173 as 4173, 4174 as 4174, 4175 as 4175, 4176 as 4176, 4177 as 4177, 4178 as 4178, 4179 as 4179, 4180 as 4180, 4181 as 4181, 4182 as 4182, 4183 as 4183, 4184 as 4184, 4185 as 4185, 4186 as 4186, 4187 as 4187, 4188 as 4188, 4189 as 4189, 4190 as 4190, 4191 as 4191, 4192 as 4192, 4193 as 4193, 4194 as 4194, 4195 as 4195, 4196 as 4196, 4197 as 4197, 4198 as 4198, 4199 as 4199, 4200 as 4200, 4201 as 4201, 4202 as 4202, 4203 as 4203, 4204 as 4204, 4205 as 4205, 4206 as 4206, 4207 as 4207, 4208 as 4208, 4209 as 4209, 4210 as 4210, 4211 as 4211, 4212 as 4212, 4213 as 4213, 4214 as 4214, 4215 as 4215, 4216 as 4216, 4217 as 4217, 4218 as 4218, 4219 as 4219, 4220 as 4220, 4221 as 4221, 4222 as 4222, 4223 as 4223, 4224 as 4224, 4225 as 4225, 4226 as 4226, 4227 as 4227, 4228 as 4228, 4229 as 4229, 4230 as 4230, 4231 as 4231, 4232 as 4232, 4233 as 4233, 4234 as 4234, 4235 as 4235, 4236 as 4236, 4237 as 4237, 4238 as 4238, 4239 as 4239, 4240 as 4240, 4241 as 4241, 4242 as 4242, 4243 as 4243, 4244 as 4244, 4245 as 4245, 4246 as 4246, 4247 as 4247, 4248 as 4248, 4249 as 4249, 4250 as 4250, 4251 as 4251, 4252 as 4252, 4253 as 4253, 4254 as 4254, 4255 as 4255, 4256 as 4256, 4257 as 4257, 4258 as 4258, 4259 as 4259, 4260 as 4260, 4261 as 4261, 4262 as 4262, 4263 as 4263, 4264 as 4264, 4265 as 4265, 4266 as 4266, 4267 as 4267, 4268 as 4268, 4269 as 4269, 4270 as 4270, 4271 as 4271, 4272 as 4272, 4273 as 4273, 4274 as 4274, 4275 as 4275, 4276 as 4276, 4277 as 4277, 4278 as 4278, 4279 as 4279, 4280 as 4280, 4281 as 4281, 4282 as 4282, 4283 as 4283, 4284 as 4284, 4285 as 4285, 4286 as 4286, 4287 as 4287, 4288 as 4288, 4289 as 4289, 4290 as 4290, 4291 as 4291, 4292 as 4292, 4293 as 4293, 4294 as 4294, 4295 as 4295, 4296 as 4296, 4297 as 4297, 4298 as 4298, 4299 as 4299, 4300 as 4300, 4301 as 4301, 4302 as 4302, 4303 as 4303, 4304 as 4304, 4305 as 4305, 4306 as 4306, 4307 as 4307, 4308 as 4308, 4309 as 4309, 4310 as 4310, 4311 as 4311, 4312 as 4312, 4313 as 4313, 4314 as 4314, 4315 as 4315, 4316 as 4316, 4317 as 4317, 4318 as 4318, 4319 as 4319, 4320 as 4320, 4321 as 4321, 4322 as 4322, 4323 as 4323, 4324 as 4324, 4325 as 4325, 4326 as 4326, 4327 as 4327, 4328 as 4328, 4329 as 4329, 4330 as 4330, 4331 as 4331, 4332 as 4332, 4333 as 4333, 4334 as 4334, 4335 as 4335, 4336 as 4336, 4337 as 4337, 4338 as 4338, 4339 as 4339, 4340 as 4340, 4341 as 4341, 4342 as 4342, 4343 as 4343, 4344 as 4344, 4345 as 4345, 4346 as 4346, 4347 as 4347, 4348 as 4348, 4349 as 4349, 4350 as 4350, 4351 as 4351, 4352 as 4352, 4353 as 4353, 4354 as 4354, 4355 as 4355, 4356 as 4356, 4357 as 4357, 4358 as 4358, 4359 as 4359, 4360 as 4360, 4361 as 4361, 4362 as 4362, 4363 as 4363, 4364 as 4364, 4365 as 4365, 4366 as 4366, 4367 as 4367, 4368 as 4368, 4369 as 4369, 4370 as 4370, 4371 as 4371, 4372 as 4372, 4373 as 4373, 4374 as 4374, 4375 as 4375, 4376 as 4376, 4377 as 4377, 4378 as 4378, 4379 as 4379, 4380 as 4380, 4381 as 4381, 4382 as 4382, 4383 as 4383, 4384 as 4384, 4385 as 4385, 4386 as 4386, 4387 as 4387, 4388 as 4388, 4389 as 4389, 4390 as 4390, 4391 as 4391, 4392 as 4392, 4393 as 4393, 4394 as 4394, 4395 as 4395, 4396 as 4396, 4397 as 4397, 4398 as 4398, 4399 as 4399, 4400 as 4400, 4401 as 4401, 4402 as 4402, 4403 as 4403, 4404 as 4404, 4405 as 4405, 4406 as 4406, 4407 as 4407, 4408 as 4408, 4409 as 4409, 4410 as 4410, 4411 as 4411, 4412 as 4412, 4413 as 4413, 4414 as 4414, 4415 as 4415, 4416 as 4416, 4417 as 4417, 4418 as 4418, 4419 as 4419, 4420 as 4420, 4421 as 4421, 4422 as 4422, 4423 as 4423, 4424 as 4424, 4425 as 4425, 4426 as 4426, 4427 as 4427, 4428 as 4428, 4429 as 4429, 4430 as 4430, 4431 as 4431, 4432 as 4432, 4433 as 4433, 4434 as 4434, 4435 as 4435, 4436 as 4436, 4437 as 4437, 4438 as 4438, 4439 as 4439, 4440 as 4440, 4441 as 4441, 4442 as 4442, 4443 as 4443, 4444 as 4444, 4445 as 4445, 4446 as 4446, 4447 as 4447, 4448 as 4448, 4449 as 4449, 4450 as 4450, 4451 as 4451, 4452 as 4452, 4453 as 4453, 4454 as 4454, 4455 as 4455, 4456 as 4456, 4457 as 4457, 4458 as 4458, 4459 as 4459, 4460 as 4460, 4461 as 4461, 4462 as 4462, 4463 as 4463, 4464 as 4464, 4465 as 4465, 4466 as 4466, 4467 as 4467, 4468 as 4468, 4469 as 4469, 4470 as 4470, 4471 as 4471, 4472 as 4472, 4473 as 4473, 4474 as 4474, 4475 as 4475, 4476 as 4476, 4477 as 4477, 4478 as 4478, 4479 as 4479, 4480 as 4480, 4481 as 4481, 4482 as 4482, 4483 as 4483, 4484 as 4484, 4485 as 4485, 4486 as 4486, 4487 as 4487, 4488 as 4488, 4489 as 4489, 4490 as 4490, 4491 as 4491, 4492 as 4492, 4493 as 4493, 4494 as 4494, 4495 as 4495, 4496 as 4496, 4497 as 4497, 4498 as 4498, 4499 as 4499, 4500 as 4500, 4501 as 4501, 4502 as 4502, 4503 as 4503, 4504 as 4504, 4505 as 4505, 4506 as 4506, 4507 as 4507, 4508 as 4508, 4509 as 4509, 4510 as 4510, 4511 as 4511, 4512 as 4512, 4513 as 4513, 4514 as 4514, 4515 as 4515, 4516 as 4516, 4517 as 4517, 4518 as 4518, 4519 as 4519, 4520 as 4520, 4521 as 4521, 4522 as 4522, 4523 as 4523, 4524 as 4524, 4525 as 4525, 4526 as 4526, 4527 as 4527, 4528 as 4528, 4529 as 4529, 4530 as 4530, 4531 as 4531, 4532 as 4532, 4533 as 4533, 4534 as 4534, 4535 as 4535, 4536 as 4536, 4537 as 4537, 4538 as 4538, 4539 as 4539, 4540 as 4540, 4541 as 4541, 4542 as 4542, 4543 as 4543, 4544 as 4544, 4545 as 4545, 4546 as 4546, 4547 as 4547, 4548 as 4548, 4549 as 4549, 4550 as 4550, 4551 as 4551, 4552 as 4552, 4553 as 4553, 4554 as 4554, 4555 as 4555, 4556 as 4556, 4557 as 4557, 4558 as 4558, 4559 as 4559, 4560 as 4560, 4561 as 4561, 4562 as 4562, 4563 as 4563, 4564 as 4564, 4565 as 4565, 4566 as 4566, 4567 as 4567, 4568 as 4568, 4569 as 4569, 4570 as 4570, 4571 as 4571, 4572 as 4572, 4573 as 4573, 4574 as 4574, 4575 as 4575, 4576 as 4576, 4577 as 4577, 4578 as 4578, 4579 as 4579, 4580 as 4580, 4581 as 4581, 4582 as 4582, 4583 as 4583, 4584 as 4584, 4585 as 4585, 4586 as 4586, 4587 as 4587, 4588 as 4588, 4589 as 4589, 4590 as 4590, 4591 as 4591, 4592 as 4592, 4593 as 4593, 4594 as 4594, 4595 as 4595, 4596 as 4596, 4597 as 4597, 4598 as 4598, 4599 as 4599, 4600 as 4600, 4601 as 4601, 4602 as 4602, 4603 as 4603, 4604 as 4604, 4605 as 4605, 4606 as 4606, 4607 as 4607, 4608 as 4608, 4609 as 4609, 4610 as 4610, 4611 as 4611, 4612 as 4612, 4613 as 4613, 4614 as 4614, 4615 as 4615, 4616 as 4616, 4617 as 4617, 4618 as 4618, 4619 as 4619, 4620 as 4620, 4621 as 4621, 4622 as 4622, 4623 as 4623, 4624 as 4624, 4625 as 4625, 4626 as 4626, 4627 as 4627, 4628 as 4628, 4629 as 4629, 4630 as 4630, 4631 as 4631, 4632 as 4632, 4633 as 4633, 4634 as 4634, 4635 as 4635, 4636 as 4636, 4637 as 4637, 4638 as 4638, 4639 as 4639, 4640 as 4640, 4641 as 4641, 4642 as 4642, 4643 as 4643, 4644 as 4644, 4645 as 4645, 4646 as 4646, 4647 as 4647, 4648 as 4648, 4649 as 4649, 4650 as 4650, 4651 as 4651, 4652 as 4652, 4653 as 4653, 4654 as 4654, 4655 as 4655, 4656 as 4656, 4657 as 4657, 4658 as 4658, 4659 as 4659, 4660 as 4660, 4661 as 4661, 4662 as 4662, 4663 as 4663, 4664 as 4664, 4665 as 4665, 4666 as 4666, 4667 as 4667, 4668 as 4668, 4669 as 4669, 4670 as 4670, 4671 as 4671, 4672 as 4672, 4673 as 4673, 4674 as 4674, 4675 as 4675, 4676 as 4676, 4677 as 4677, 4678 as 4678, 4679 as 4679, 4680 as 4680, 4681 as 4681, 4682 as 4682, 4683 as 4683, 4684 as 4684, 4685 as 4685, 4686 as 4686, 4687 as 4687, 4688 as 4688, 4689 as 4689, 4690 as 4690, 4691 as 4691, 4692 as 4692, 4693 as 4693, 4694 as 4694, 4695 as 4695, 4696 as 4696, 4697 as 4697, 4698 as 4698, 4699 as 4699, 4700 as 4700, 4701 as 4701, 4702 as 4702, 4703 as 4703, 4704 as 4704, 4705 as 4705, 4706 as 4706, 4707 as 4707, 4708 as 4708, 4709 as 4709, 4710 as 4710, 4711 as 4711, 4712 as 4712, 4713 as 4713, 4714 as 4714, 4715 as 4715, 4716 as 4716, 4717 as 4717, 4718 as 4718, 4719 as 4719, 4720 as 4720, 4721 as 4721, 4722 as 4722, 4723 as 4723, 4724 as 4724, 4725 as 4725, 4726 as 4726, 4727 as 4727, 4728 as 4728, 4729 as 4729, 4730 as 4730, 4731 as 4731, 4732 as 4732, 4733 as 4733, 4734 as 4734, 4735 as 4735, 4736 as 4736, 4737 as 4737, 4738 as 4738, 4739 as 4739, 4740 as 4740, 4741 as 4741, 4742 as 4742, 4743 as 4743, 4744 as 4744, 4745 as 4745, 4746 as 4746, 4747 as 4747, 4748 as 4748, 4749 as 4749, 4750 as 4750, 4751 as 4751, 4752 as 4752, 4753 as 4753, 4754 as 4754, 4755 as 4755, 4756 as 4756, 4757 as 4757, 4758 as 4758, 4759 as 4759, 4760 as 4760, 4761 as 4761, 4762 as 4762, 4763 as 4763, 4764 as 4764, 4765 as 4765, 4766 as 4766, 4767 as 4767, 4768 as 4768, 4769 as 4769, 4770 as 4770, 4771 as 4771, 4772 as 4772, 4773 as 4773, 4774 as 4774, 4775 as 4775, 4776 as 4776, 4777 as 4777, 4778 as 4778, 4779 as 4779, 4780 as 4780, 4781 as 4781, 4782 as 4782, 4783 as 4783, 4784 as 4784, 4785 as 4785, 4786 as 4786, 4787 as 4787, 4788 as 4788, 4789 as 4789, 4790 as 4790, 4791 as 4791, 4792 as 4792, 4793 as 4793, 4794 as 4794, 4795 as 4795, 4796 as 4796, 4797 as 4797, 4798 as 4798, 4799 as 4799, 4800 as 4800, 4801 as 4801, 4802 as 4802, 4803 as 4803, 4804 as 4804, 4805 as 4805, 4806 as 4806, 4807 as 4807, 4808 as 4808, 4809 as 4809, 4810 as 4810, 4811 as 4811, 4812 as 4812, 4813 as 4813, 4814 as 4814, 4815 as 4815, 4816 as 4816, 4817 as 4817, 4818 as 4818, 4819 as 4819, 4820 as 4820, 4821 as 4821, 4822 as 4822, 4823 as 4823, 4824 as 4824, 4825 as 4825, 4826 as 4826, 4827 as 4827, 4828 as 4828, 4829 as 4829, 4830 as 4830, 4831 as 4831, 4832 as 4832, 4833 as 4833, 4834 as 4834, 4835 as 4835, 4836 as 4836, 4837 as 4837, 4838 as 4838, 4839 as 4839, 4840 as 4840, 4841 as 4841, 4842 as 4842, 4843 as 4843, 4844 as 4844, 4845 as 4845, 4846 as 4846, 4847 as 4847, 4848 as 4848, 4849 as 4849, 4850 as 4850, 4851 as 4851, 4852 as 4852, 4853 as 4853, 4854 as 4854, 4855 as 4855, 4856 as 4856, 4857 as 4857, 4858 as 4858, 4859 as 4859, 4860 as 4860, 4861 as 4861, 4862 as 4862, 4863 as 4863, 4864 as 4864, 4865 as 4865, 4866 as 4866, 4867 as 4867, 4868 as 4868, 4869 as 4869, 4870 as 4870, 4871 as 4871, 4872 as 4872, 4873 as 4873, 4874 as 4874, 4875 as 4875, 4876 as 4876, 4877 as 4877, 4878 as 4878, 4879 as 4879, 4880 as 4880, 4881 as 4881, 4882 as 4882, 4883 as 4883, 4884 as 4884, 4885 as 4885, 4886 as 4886, 4887 as 4887, 4888 as 4888, 4889 as 4889, 4890 as 4890, 4891 as 4891, 4892 as 4892, 4893 as 4893, 4894 as 4894, 4895 as 4895, 4896 as 4896, 4897 as 4897, 4898 as 4898, 4899 as 4899, 4900 as 4900, 4901 as 4901, 4902 as 4902, 4903 as 4903, 4904 as 4904, 4905 as 4905, 4906 as 4906, 4907 as 4907, 4908 as 4908, 4909 as 4909, 4910 as 4910, 4911 as 4911, 4912 as 4912, 4913 as 4913, 4914 as 4914, 4915 as 4915, 4916 as 4916, 4917 as 4917, 4918 as 4918, 4919 as 4919, 4920 as 4920, 4921 as 4921, 4922 as 4922, 4923 as 4923, 4924 as 4924, 4925 as 4925, 4926 as 4926, 4927 as 4927, 4928 as 4928, 4929 as 4929, 4930 as 4930, 4931 as 4931, 4932 as 4932, 4933 as 4933, 4934 as 4934, 4935 as 4935, 4936 as 4936, 4937 as 4937, 4938 as 4938, 4939 as 4939, 4940 as 4940, 4941 as 4941, 4942 as 4942, 4943 as 4943, 4944 as 4944, 4945 as 4945, 4946 as 4946, 4947 as 4947, 4948 as 4948, 4949 as 4949, 4950 as 4950, 4951 as 4951, 4952 as 4952, 4953 as 4953, 4954 as 4954, 4955 as 4955, 4956 as 4956, 4957 as 4957, 4958 as 4958, 4959 as 4959, 4960 as 4960, 4961 as 4961, 4962 as 4962, 4963 as 4963, 4964 as 4964, 4965 as 4965, 4966 as 4966, 4967 as 4967, 4968 as 4968, 4969 as 4969, 4970 as 4970, 4971 as 4971, 4972 as 4972, 4973 as 4973, 4974 as 4974, 4975 as 4975, 4976 as 4976, 4977 as 4977, 4978 as 4978, 4979 as 4979, 4980 as 4980, 4981 as 4981, 4982 as 4982, 4983 as 4983, 4984 as 4984, 4985 as 4985, 4986 as 4986, 4987 as 4987, 4988 as 4988, 4989 as 4989, 4990 as 4990, 4991 as 4991, 4992 as 4992, 4993 as 4993, 4994 as 4994, 4995 as 4995, 4996 as 4996, 4997 as 4997, 4998 as 4998, 4999 as 4999, 5000 as 5000, 5001 as 5001,] : any[] +>a : (0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | 461 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 496 | 497 | 498 | 499 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 509 | 510 | 511 | 512 | 513 | 514 | 515 | 516 | 517 | 518 | 519 | 520 | 521 | 522 | 523 | 524 | 525 | 526 | 527 | 528 | 529 | 530 | 531 | 532 | 533 | 534 | 535 | 536 | 537 | 538 | 539 | 540 | 541 | 542 | 543 | 544 | 545 | 546 | 547 | 548 | 549 | 550 | 551 | 552 | 553 | 554 | 555 | 556 | 557 | 558 | 559 | 560 | 561 | 562 | 563 | 564 | 565 | 566 | 567 | 568 | 569 | 570 | 571 | 572 | 573 | 574 | 575 | 576 | 577 | 578 | 579 | 580 | 581 | 582 | 583 | 584 | 585 | 586 | 587 | 588 | 589 | 590 | 591 | 592 | 593 | 594 | 595 | 596 | 597 | 598 | 599 | 600 | 601 | 602 | 603 | 604 | 605 | 606 | 607 | 608 | 609 | 610 | 611 | 612 | 613 | 614 | 615 | 616 | 617 | 618 | 619 | 620 | 621 | 622 | 623 | 624 | 625 | 626 | 627 | 628 | 629 | 630 | 631 | 632 | 633 | 634 | 635 | 636 | 637 | 638 | 639 | 640 | 641 | 642 | 643 | 644 | 645 | 646 | 647 | 648 | 649 | 650 | 651 | 652 | 653 | 654 | 655 | 656 | 657 | 658 | 659 | 660 | 661 | 662 | 663 | 664 | 665 | 666 | 667 | 668 | 669 | 670 | 671 | 672 | 673 | 674 | 675 | 676 | 677 | 678 | 679 | 680 | 681 | 682 | 683 | 684 | 685 | 686 | 687 | 688 | 689 | 690 | 691 | 692 | 693 | 694 | 695 | 696 | 697 | 698 | 699 | 700 | 701 | 702 | 703 | 704 | 705 | 706 | 707 | 708 | 709 | 710 | 711 | 712 | 713 | 714 | 715 | 716 | 717 | 718 | 719 | 720 | 721 | 722 | 723 | 724 | 725 | 726 | 727 | 728 | 729 | 730 | 731 | 732 | 733 | 734 | 735 | 736 | 737 | 738 | 739 | 740 | 741 | 742 | 743 | 744 | 745 | 746 | 747 | 748 | 749 | 750 | 751 | 752 | 753 | 754 | 755 | 756 | 757 | 758 | 759 | 760 | 761 | 762 | 763 | 764 | 765 | 766 | 767 | 768 | 769 | 770 | 771 | 772 | 773 | 774 | 775 | 776 | 777 | 778 | 779 | 780 | 781 | 782 | 783 | 784 | 785 | 786 | 787 | 788 | 789 | 790 | 791 | 792 | 793 | 794 | 795 | 796 | 797 | 798 | 799 | 800 | 801 | 802 | 803 | 804 | 805 | 806 | 807 | 808 | 809 | 810 | 811 | 812 | 813 | 814 | 815 | 816 | 817 | 818 | 819 | 820 | 821 | 822 | 823 | 824 | 825 | 826 | 827 | 828 | 829 | 830 | 831 | 832 | 833 | 834 | 835 | 836 | 837 | 838 | 839 | 840 | 841 | 842 | 843 | 844 | 845 | 846 | 847 | 848 | 849 | 850 | 851 | 852 | 853 | 854 | 855 | 856 | 857 | 858 | 859 | 860 | 861 | 862 | 863 | 864 | 865 | 866 | 867 | 868 | 869 | 870 | 871 | 872 | 873 | 874 | 875 | 876 | 877 | 878 | 879 | 880 | 881 | 882 | 883 | 884 | 885 | 886 | 887 | 888 | 889 | 890 | 891 | 892 | 893 | 894 | 895 | 896 | 897 | 898 | 899 | 900 | 901 | 902 | 903 | 904 | 905 | 906 | 907 | 908 | 909 | 910 | 911 | 912 | 913 | 914 | 915 | 916 | 917 | 918 | 919 | 920 | 921 | 922 | 923 | 924 | 925 | 926 | 927 | 928 | 929 | 930 | 931 | 932 | 933 | 934 | 935 | 936 | 937 | 938 | 939 | 940 | 941 | 942 | 943 | 944 | 945 | 946 | 947 | 948 | 949 | 950 | 951 | 952 | 953 | 954 | 955 | 956 | 957 | 958 | 959 | 960 | 961 | 962 | 963 | 964 | 965 | 966 | 967 | 968 | 969 | 970 | 971 | 972 | 973 | 974 | 975 | 976 | 977 | 978 | 979 | 980 | 981 | 982 | 983 | 984 | 985 | 986 | 987 | 988 | 989 | 990 | 991 | 992 | 993 | 994 | 995 | 996 | 997 | 998 | 999 | 1000 | 1001 | 1002 | 1003 | 1004 | 1005 | 1006 | 1007 | 1008 | 1009 | 1010 | 1011 | 1012 | 1013 | 1014 | 1015 | 1016 | 1017 | 1018 | 1019 | 1020 | 1021 | 1022 | 1023 | 1024 | 1025 | 1026 | 1027 | 1028 | 1029 | 1030 | 1031 | 1032 | 1033 | 1034 | 1035 | 1036 | 1037 | 1038 | 1039 | 1040 | 1041 | 1042 | 1043 | 1044 | 1045 | 1046 | 1047 | 1048 | 1049 | 1050 | 1051 | 1052 | 1053 | 1054 | 1055 | 1056 | 1057 | 1058 | 1059 | 1060 | 1061 | 1062 | 1063 | 1064 | 1065 | 1066 | 1067 | 1068 | 1069 | 1070 | 1071 | 1072 | 1073 | 1074 | 1075 | 1076 | 1077 | 1078 | 1079 | 1080 | 1081 | 1082 | 1083 | 1084 | 1085 | 1086 | 1087 | 1088 | 1089 | 1090 | 1091 | 1092 | 1093 | 1094 | 1095 | 1096 | 1097 | 1098 | 1099 | 1100 | 1101 | 1102 | 1103 | 1104 | 1105 | 1106 | 1107 | 1108 | 1109 | 1110 | 1111 | 1112 | 1113 | 1114 | 1115 | 1116 | 1117 | 1118 | 1119 | 1120 | 1121 | 1122 | 1123 | 1124 | 1125 | 1126 | 1127 | 1128 | 1129 | 1130 | 1131 | 1132 | 1133 | 1134 | 1135 | 1136 | 1137 | 1138 | 1139 | 1140 | 1141 | 1142 | 1143 | 1144 | 1145 | 1146 | 1147 | 1148 | 1149 | 1150 | 1151 | 1152 | 1153 | 1154 | 1155 | 1156 | 1157 | 1158 | 1159 | 1160 | 1161 | 1162 | 1163 | 1164 | 1165 | 1166 | 1167 | 1168 | 1169 | 1170 | 1171 | 1172 | 1173 | 1174 | 1175 | 1176 | 1177 | 1178 | 1179 | 1180 | 1181 | 1182 | 1183 | 1184 | 1185 | 1186 | 1187 | 1188 | 1189 | 1190 | 1191 | 1192 | 1193 | 1194 | 1195 | 1196 | 1197 | 1198 | 1199 | 1200 | 1201 | 1202 | 1203 | 1204 | 1205 | 1206 | 1207 | 1208 | 1209 | 1210 | 1211 | 1212 | 1213 | 1214 | 1215 | 1216 | 1217 | 1218 | 1219 | 1220 | 1221 | 1222 | 1223 | 1224 | 1225 | 1226 | 1227 | 1228 | 1229 | 1230 | 1231 | 1232 | 1233 | 1234 | 1235 | 1236 | 1237 | 1238 | 1239 | 1240 | 1241 | 1242 | 1243 | 1244 | 1245 | 1246 | 1247 | 1248 | 1249 | 1250 | 1251 | 1252 | 1253 | 1254 | 1255 | 1256 | 1257 | 1258 | 1259 | 1260 | 1261 | 1262 | 1263 | 1264 | 1265 | 1266 | 1267 | 1268 | 1269 | 1270 | 1271 | 1272 | 1273 | 1274 | 1275 | 1276 | 1277 | 1278 | 1279 | 1280 | 1281 | 1282 | 1283 | 1284 | 1285 | 1286 | 1287 | 1288 | 1289 | 1290 | 1291 | 1292 | 1293 | 1294 | 1295 | 1296 | 1297 | 1298 | 1299 | 1300 | 1301 | 1302 | 1303 | 1304 | 1305 | 1306 | 1307 | 1308 | 1309 | 1310 | 1311 | 1312 | 1313 | 1314 | 1315 | 1316 | 1317 | 1318 | 1319 | 1320 | 1321 | 1322 | 1323 | 1324 | 1325 | 1326 | 1327 | 1328 | 1329 | 1330 | 1331 | 1332 | 1333 | 1334 | 1335 | 1336 | 1337 | 1338 | 1339 | 1340 | 1341 | 1342 | 1343 | 1344 | 1345 | 1346 | 1347 | 1348 | 1349 | 1350 | 1351 | 1352 | 1353 | 1354 | 1355 | 1356 | 1357 | 1358 | 1359 | 1360 | 1361 | 1362 | 1363 | 1364 | 1365 | 1366 | 1367 | 1368 | 1369 | 1370 | 1371 | 1372 | 1373 | 1374 | 1375 | 1376 | 1377 | 1378 | 1379 | 1380 | 1381 | 1382 | 1383 | 1384 | 1385 | 1386 | 1387 | 1388 | 1389 | 1390 | 1391 | 1392 | 1393 | 1394 | 1395 | 1396 | 1397 | 1398 | 1399 | 1400 | 1401 | 1402 | 1403 | 1404 | 1405 | 1406 | 1407 | 1408 | 1409 | 1410 | 1411 | 1412 | 1413 | 1414 | 1415 | 1416 | 1417 | 1418 | 1419 | 1420 | 1421 | 1422 | 1423 | 1424 | 1425 | 1426 | 1427 | 1428 | 1429 | 1430 | 1431 | 1432 | 1433 | 1434 | 1435 | 1436 | 1437 | 1438 | 1439 | 1440 | 1441 | 1442 | 1443 | 1444 | 1445 | 1446 | 1447 | 1448 | 1449 | 1450 | 1451 | 1452 | 1453 | 1454 | 1455 | 1456 | 1457 | 1458 | 1459 | 1460 | 1461 | 1462 | 1463 | 1464 | 1465 | 1466 | 1467 | 1468 | 1469 | 1470 | 1471 | 1472 | 1473 | 1474 | 1475 | 1476 | 1477 | 1478 | 1479 | 1480 | 1481 | 1482 | 1483 | 1484 | 1485 | 1486 | 1487 | 1488 | 1489 | 1490 | 1491 | 1492 | 1493 | 1494 | 1495 | 1496 | 1497 | 1498 | 1499 | 1500 | 1501 | 1502 | 1503 | 1504 | 1505 | 1506 | 1507 | 1508 | 1509 | 1510 | 1511 | 1512 | 1513 | 1514 | 1515 | 1516 | 1517 | 1518 | 1519 | 1520 | 1521 | 1522 | 1523 | 1524 | 1525 | 1526 | 1527 | 1528 | 1529 | 1530 | 1531 | 1532 | 1533 | 1534 | 1535 | 1536 | 1537 | 1538 | 1539 | 1540 | 1541 | 1542 | 1543 | 1544 | 1545 | 1546 | 1547 | 1548 | 1549 | 1550 | 1551 | 1552 | 1553 | 1554 | 1555 | 1556 | 1557 | 1558 | 1559 | 1560 | 1561 | 1562 | 1563 | 1564 | 1565 | 1566 | 1567 | 1568 | 1569 | 1570 | 1571 | 1572 | 1573 | 1574 | 1575 | 1576 | 1577 | 1578 | 1579 | 1580 | 1581 | 1582 | 1583 | 1584 | 1585 | 1586 | 1587 | 1588 | 1589 | 1590 | 1591 | 1592 | 1593 | 1594 | 1595 | 1596 | 1597 | 1598 | 1599 | 1600 | 1601 | 1602 | 1603 | 1604 | 1605 | 1606 | 1607 | 1608 | 1609 | 1610 | 1611 | 1612 | 1613 | 1614 | 1615 | 1616 | 1617 | 1618 | 1619 | 1620 | 1621 | 1622 | 1623 | 1624 | 1625 | 1626 | 1627 | 1628 | 1629 | 1630 | 1631 | 1632 | 1633 | 1634 | 1635 | 1636 | 1637 | 1638 | 1639 | 1640 | 1641 | 1642 | 1643 | 1644 | 1645 | 1646 | 1647 | 1648 | 1649 | 1650 | 1651 | 1652 | 1653 | 1654 | 1655 | 1656 | 1657 | 1658 | 1659 | 1660 | 1661 | 1662 | 1663 | 1664 | 1665 | 1666 | 1667 | 1668 | 1669 | 1670 | 1671 | 1672 | 1673 | 1674 | 1675 | 1676 | 1677 | 1678 | 1679 | 1680 | 1681 | 1682 | 1683 | 1684 | 1685 | 1686 | 1687 | 1688 | 1689 | 1690 | 1691 | 1692 | 1693 | 1694 | 1695 | 1696 | 1697 | 1698 | 1699 | 1700 | 1701 | 1702 | 1703 | 1704 | 1705 | 1706 | 1707 | 1708 | 1709 | 1710 | 1711 | 1712 | 1713 | 1714 | 1715 | 1716 | 1717 | 1718 | 1719 | 1720 | 1721 | 1722 | 1723 | 1724 | 1725 | 1726 | 1727 | 1728 | 1729 | 1730 | 1731 | 1732 | 1733 | 1734 | 1735 | 1736 | 1737 | 1738 | 1739 | 1740 | 1741 | 1742 | 1743 | 1744 | 1745 | 1746 | 1747 | 1748 | 1749 | 1750 | 1751 | 1752 | 1753 | 1754 | 1755 | 1756 | 1757 | 1758 | 1759 | 1760 | 1761 | 1762 | 1763 | 1764 | 1765 | 1766 | 1767 | 1768 | 1769 | 1770 | 1771 | 1772 | 1773 | 1774 | 1775 | 1776 | 1777 | 1778 | 1779 | 1780 | 1781 | 1782 | 1783 | 1784 | 1785 | 1786 | 1787 | 1788 | 1789 | 1790 | 1791 | 1792 | 1793 | 1794 | 1795 | 1796 | 1797 | 1798 | 1799 | 1800 | 1801 | 1802 | 1803 | 1804 | 1805 | 1806 | 1807 | 1808 | 1809 | 1810 | 1811 | 1812 | 1813 | 1814 | 1815 | 1816 | 1817 | 1818 | 1819 | 1820 | 1821 | 1822 | 1823 | 1824 | 1825 | 1826 | 1827 | 1828 | 1829 | 1830 | 1831 | 1832 | 1833 | 1834 | 1835 | 1836 | 1837 | 1838 | 1839 | 1840 | 1841 | 1842 | 1843 | 1844 | 1845 | 1846 | 1847 | 1848 | 1849 | 1850 | 1851 | 1852 | 1853 | 1854 | 1855 | 1856 | 1857 | 1858 | 1859 | 1860 | 1861 | 1862 | 1863 | 1864 | 1865 | 1866 | 1867 | 1868 | 1869 | 1870 | 1871 | 1872 | 1873 | 1874 | 1875 | 1876 | 1877 | 1878 | 1879 | 1880 | 1881 | 1882 | 1883 | 1884 | 1885 | 1886 | 1887 | 1888 | 1889 | 1890 | 1891 | 1892 | 1893 | 1894 | 1895 | 1896 | 1897 | 1898 | 1899 | 1900 | 1901 | 1902 | 1903 | 1904 | 1905 | 1906 | 1907 | 1908 | 1909 | 1910 | 1911 | 1912 | 1913 | 1914 | 1915 | 1916 | 1917 | 1918 | 1919 | 1920 | 1921 | 1922 | 1923 | 1924 | 1925 | 1926 | 1927 | 1928 | 1929 | 1930 | 1931 | 1932 | 1933 | 1934 | 1935 | 1936 | 1937 | 1938 | 1939 | 1940 | 1941 | 1942 | 1943 | 1944 | 1945 | 1946 | 1947 | 1948 | 1949 | 1950 | 1951 | 1952 | 1953 | 1954 | 1955 | 1956 | 1957 | 1958 | 1959 | 1960 | 1961 | 1962 | 1963 | 1964 | 1965 | 1966 | 1967 | 1968 | 1969 | 1970 | 1971 | 1972 | 1973 | 1974 | 1975 | 1976 | 1977 | 1978 | 1979 | 1980 | 1981 | 1982 | 1983 | 1984 | 1985 | 1986 | 1987 | 1988 | 1989 | 1990 | 1991 | 1992 | 1993 | 1994 | 1995 | 1996 | 1997 | 1998 | 1999 | 2000 | 2001 | 2002 | 2003 | 2004 | 2005 | 2006 | 2007 | 2008 | 2009 | 2010 | 2011 | 2012 | 2013 | 2014 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 | 2021 | 2022 | 2023 | 2024 | 2025 | 2026 | 2027 | 2028 | 2029 | 2030 | 2031 | 2032 | 2033 | 2034 | 2035 | 2036 | 2037 | 2038 | 2039 | 2040 | 2041 | 2042 | 2043 | 2044 | 2045 | 2046 | 2047 | 2048 | 2049 | 2050 | 2051 | 2052 | 2053 | 2054 | 2055 | 2056 | 2057 | 2058 | 2059 | 2060 | 2061 | 2062 | 2063 | 2064 | 2065 | 2066 | 2067 | 2068 | 2069 | 2070 | 2071 | 2072 | 2073 | 2074 | 2075 | 2076 | 2077 | 2078 | 2079 | 2080 | 2081 | 2082 | 2083 | 2084 | 2085 | 2086 | 2087 | 2088 | 2089 | 2090 | 2091 | 2092 | 2093 | 2094 | 2095 | 2096 | 2097 | 2098 | 2099 | 2100 | 2101 | 2102 | 2103 | 2104 | 2105 | 2106 | 2107 | 2108 | 2109 | 2110 | 2111 | 2112 | 2113 | 2114 | 2115 | 2116 | 2117 | 2118 | 2119 | 2120 | 2121 | 2122 | 2123 | 2124 | 2125 | 2126 | 2127 | 2128 | 2129 | 2130 | 2131 | 2132 | 2133 | 2134 | 2135 | 2136 | 2137 | 2138 | 2139 | 2140 | 2141 | 2142 | 2143 | 2144 | 2145 | 2146 | 2147 | 2148 | 2149 | 2150 | 2151 | 2152 | 2153 | 2154 | 2155 | 2156 | 2157 | 2158 | 2159 | 2160 | 2161 | 2162 | 2163 | 2164 | 2165 | 2166 | 2167 | 2168 | 2169 | 2170 | 2171 | 2172 | 2173 | 2174 | 2175 | 2176 | 2177 | 2178 | 2179 | 2180 | 2181 | 2182 | 2183 | 2184 | 2185 | 2186 | 2187 | 2188 | 2189 | 2190 | 2191 | 2192 | 2193 | 2194 | 2195 | 2196 | 2197 | 2198 | 2199 | 2200 | 2201 | 2202 | 2203 | 2204 | 2205 | 2206 | 2207 | 2208 | 2209 | 2210 | 2211 | 2212 | 2213 | 2214 | 2215 | 2216 | 2217 | 2218 | 2219 | 2220 | 2221 | 2222 | 2223 | 2224 | 2225 | 2226 | 2227 | 2228 | 2229 | 2230 | 2231 | 2232 | 2233 | 2234 | 2235 | 2236 | 2237 | 2238 | 2239 | 2240 | 2241 | 2242 | 2243 | 2244 | 2245 | 2246 | 2247 | 2248 | 2249 | 2250 | 2251 | 2252 | 2253 | 2254 | 2255 | 2256 | 2257 | 2258 | 2259 | 2260 | 2261 | 2262 | 2263 | 2264 | 2265 | 2266 | 2267 | 2268 | 2269 | 2270 | 2271 | 2272 | 2273 | 2274 | 2275 | 2276 | 2277 | 2278 | 2279 | 2280 | 2281 | 2282 | 2283 | 2284 | 2285 | 2286 | 2287 | 2288 | 2289 | 2290 | 2291 | 2292 | 2293 | 2294 | 2295 | 2296 | 2297 | 2298 | 2299 | 2300 | 2301 | 2302 | 2303 | 2304 | 2305 | 2306 | 2307 | 2308 | 2309 | 2310 | 2311 | 2312 | 2313 | 2314 | 2315 | 2316 | 2317 | 2318 | 2319 | 2320 | 2321 | 2322 | 2323 | 2324 | 2325 | 2326 | 2327 | 2328 | 2329 | 2330 | 2331 | 2332 | 2333 | 2334 | 2335 | 2336 | 2337 | 2338 | 2339 | 2340 | 2341 | 2342 | 2343 | 2344 | 2345 | 2346 | 2347 | 2348 | 2349 | 2350 | 2351 | 2352 | 2353 | 2354 | 2355 | 2356 | 2357 | 2358 | 2359 | 2360 | 2361 | 2362 | 2363 | 2364 | 2365 | 2366 | 2367 | 2368 | 2369 | 2370 | 2371 | 2372 | 2373 | 2374 | 2375 | 2376 | 2377 | 2378 | 2379 | 2380 | 2381 | 2382 | 2383 | 2384 | 2385 | 2386 | 2387 | 2388 | 2389 | 2390 | 2391 | 2392 | 2393 | 2394 | 2395 | 2396 | 2397 | 2398 | 2399 | 2400 | 2401 | 2402 | 2403 | 2404 | 2405 | 2406 | 2407 | 2408 | 2409 | 2410 | 2411 | 2412 | 2413 | 2414 | 2415 | 2416 | 2417 | 2418 | 2419 | 2420 | 2421 | 2422 | 2423 | 2424 | 2425 | 2426 | 2427 | 2428 | 2429 | 2430 | 2431 | 2432 | 2433 | 2434 | 2435 | 2436 | 2437 | 2438 | 2439 | 2440 | 2441 | 2442 | 2443 | 2444 | 2445 | 2446 | 2447 | 2448 | 2449 | 2450 | 2451 | 2452 | 2453 | 2454 | 2455 | 2456 | 2457 | 2458 | 2459 | 2460 | 2461 | 2462 | 2463 | 2464 | 2465 | 2466 | 2467 | 2468 | 2469 | 2470 | 2471 | 2472 | 2473 | 2474 | 2475 | 2476 | 2477 | 2478 | 2479 | 2480 | 2481 | 2482 | 2483 | 2484 | 2485 | 2486 | 2487 | 2488 | 2489 | 2490 | 2491 | 2492 | 2493 | 2494 | 2495 | 2496 | 2497 | 2498 | 2499 | 2500 | 2501 | 2502 | 2503 | 2504 | 2505 | 2506 | 2507 | 2508 | 2509 | 2510 | 2511 | 2512 | 2513 | 2514 | 2515 | 2516 | 2517 | 2518 | 2519 | 2520 | 2521 | 2522 | 2523 | 2524 | 2525 | 2526 | 2527 | 2528 | 2529 | 2530 | 2531 | 2532 | 2533 | 2534 | 2535 | 2536 | 2537 | 2538 | 2539 | 2540 | 2541 | 2542 | 2543 | 2544 | 2545 | 2546 | 2547 | 2548 | 2549 | 2550 | 2551 | 2552 | 2553 | 2554 | 2555 | 2556 | 2557 | 2558 | 2559 | 2560 | 2561 | 2562 | 2563 | 2564 | 2565 | 2566 | 2567 | 2568 | 2569 | 2570 | 2571 | 2572 | 2573 | 2574 | 2575 | 2576 | 2577 | 2578 | 2579 | 2580 | 2581 | 2582 | 2583 | 2584 | 2585 | 2586 | 2587 | 2588 | 2589 | 2590 | 2591 | 2592 | 2593 | 2594 | 2595 | 2596 | 2597 | 2598 | 2599 | 2600 | 2601 | 2602 | 2603 | 2604 | 2605 | 2606 | 2607 | 2608 | 2609 | 2610 | 2611 | 2612 | 2613 | 2614 | 2615 | 2616 | 2617 | 2618 | 2619 | 2620 | 2621 | 2622 | 2623 | 2624 | 2625 | 2626 | 2627 | 2628 | 2629 | 2630 | 2631 | 2632 | 2633 | 2634 | 2635 | 2636 | 2637 | 2638 | 2639 | 2640 | 2641 | 2642 | 2643 | 2644 | 2645 | 2646 | 2647 | 2648 | 2649 | 2650 | 2651 | 2652 | 2653 | 2654 | 2655 | 2656 | 2657 | 2658 | 2659 | 2660 | 2661 | 2662 | 2663 | 2664 | 2665 | 2666 | 2667 | 2668 | 2669 | 2670 | 2671 | 2672 | 2673 | 2674 | 2675 | 2676 | 2677 | 2678 | 2679 | 2680 | 2681 | 2682 | 2683 | 2684 | 2685 | 2686 | 2687 | 2688 | 2689 | 2690 | 2691 | 2692 | 2693 | 2694 | 2695 | 2696 | 2697 | 2698 | 2699 | 2700 | 2701 | 2702 | 2703 | 2704 | 2705 | 2706 | 2707 | 2708 | 2709 | 2710 | 2711 | 2712 | 2713 | 2714 | 2715 | 2716 | 2717 | 2718 | 2719 | 2720 | 2721 | 2722 | 2723 | 2724 | 2725 | 2726 | 2727 | 2728 | 2729 | 2730 | 2731 | 2732 | 2733 | 2734 | 2735 | 2736 | 2737 | 2738 | 2739 | 2740 | 2741 | 2742 | 2743 | 2744 | 2745 | 2746 | 2747 | 2748 | 2749 | 2750 | 2751 | 2752 | 2753 | 2754 | 2755 | 2756 | 2757 | 2758 | 2759 | 2760 | 2761 | 2762 | 2763 | 2764 | 2765 | 2766 | 2767 | 2768 | 2769 | 2770 | 2771 | 2772 | 2773 | 2774 | 2775 | 2776 | 2777 | 2778 | 2779 | 2780 | 2781 | 2782 | 2783 | 2784 | 2785 | 2786 | 2787 | 2788 | 2789 | 2790 | 2791 | 2792 | 2793 | 2794 | 2795 | 2796 | 2797 | 2798 | 2799 | 2800 | 2801 | 2802 | 2803 | 2804 | 2805 | 2806 | 2807 | 2808 | 2809 | 2810 | 2811 | 2812 | 2813 | 2814 | 2815 | 2816 | 2817 | 2818 | 2819 | 2820 | 2821 | 2822 | 2823 | 2824 | 2825 | 2826 | 2827 | 2828 | 2829 | 2830 | 2831 | 2832 | 2833 | 2834 | 2835 | 2836 | 2837 | 2838 | 2839 | 2840 | 2841 | 2842 | 2843 | 2844 | 2845 | 2846 | 2847 | 2848 | 2849 | 2850 | 2851 | 2852 | 2853 | 2854 | 2855 | 2856 | 2857 | 2858 | 2859 | 2860 | 2861 | 2862 | 2863 | 2864 | 2865 | 2866 | 2867 | 2868 | 2869 | 2870 | 2871 | 2872 | 2873 | 2874 | 2875 | 2876 | 2877 | 2878 | 2879 | 2880 | 2881 | 2882 | 2883 | 2884 | 2885 | 2886 | 2887 | 2888 | 2889 | 2890 | 2891 | 2892 | 2893 | 2894 | 2895 | 2896 | 2897 | 2898 | 2899 | 2900 | 2901 | 2902 | 2903 | 2904 | 2905 | 2906 | 2907 | 2908 | 2909 | 2910 | 2911 | 2912 | 2913 | 2914 | 2915 | 2916 | 2917 | 2918 | 2919 | 2920 | 2921 | 2922 | 2923 | 2924 | 2925 | 2926 | 2927 | 2928 | 2929 | 2930 | 2931 | 2932 | 2933 | 2934 | 2935 | 2936 | 2937 | 2938 | 2939 | 2940 | 2941 | 2942 | 2943 | 2944 | 2945 | 2946 | 2947 | 2948 | 2949 | 2950 | 2951 | 2952 | 2953 | 2954 | 2955 | 2956 | 2957 | 2958 | 2959 | 2960 | 2961 | 2962 | 2963 | 2964 | 2965 | 2966 | 2967 | 2968 | 2969 | 2970 | 2971 | 2972 | 2973 | 2974 | 2975 | 2976 | 2977 | 2978 | 2979 | 2980 | 2981 | 2982 | 2983 | 2984 | 2985 | 2986 | 2987 | 2988 | 2989 | 2990 | 2991 | 2992 | 2993 | 2994 | 2995 | 2996 | 2997 | 2998 | 2999 | 3000 | 3001 | 3002 | 3003 | 3004 | 3005 | 3006 | 3007 | 3008 | 3009 | 3010 | 3011 | 3012 | 3013 | 3014 | 3015 | 3016 | 3017 | 3018 | 3019 | 3020 | 3021 | 3022 | 3023 | 3024 | 3025 | 3026 | 3027 | 3028 | 3029 | 3030 | 3031 | 3032 | 3033 | 3034 | 3035 | 3036 | 3037 | 3038 | 3039 | 3040 | 3041 | 3042 | 3043 | 3044 | 3045 | 3046 | 3047 | 3048 | 3049 | 3050 | 3051 | 3052 | 3053 | 3054 | 3055 | 3056 | 3057 | 3058 | 3059 | 3060 | 3061 | 3062 | 3063 | 3064 | 3065 | 3066 | 3067 | 3068 | 3069 | 3070 | 3071 | 3072 | 3073 | 3074 | 3075 | 3076 | 3077 | 3078 | 3079 | 3080 | 3081 | 3082 | 3083 | 3084 | 3085 | 3086 | 3087 | 3088 | 3089 | 3090 | 3091 | 3092 | 3093 | 3094 | 3095 | 3096 | 3097 | 3098 | 3099 | 3100 | 3101 | 3102 | 3103 | 3104 | 3105 | 3106 | 3107 | 3108 | 3109 | 3110 | 3111 | 3112 | 3113 | 3114 | 3115 | 3116 | 3117 | 3118 | 3119 | 3120 | 3121 | 3122 | 3123 | 3124 | 3125 | 3126 | 3127 | 3128 | 3129 | 3130 | 3131 | 3132 | 3133 | 3134 | 3135 | 3136 | 3137 | 3138 | 3139 | 3140 | 3141 | 3142 | 3143 | 3144 | 3145 | 3146 | 3147 | 3148 | 3149 | 3150 | 3151 | 3152 | 3153 | 3154 | 3155 | 3156 | 3157 | 3158 | 3159 | 3160 | 3161 | 3162 | 3163 | 3164 | 3165 | 3166 | 3167 | 3168 | 3169 | 3170 | 3171 | 3172 | 3173 | 3174 | 3175 | 3176 | 3177 | 3178 | 3179 | 3180 | 3181 | 3182 | 3183 | 3184 | 3185 | 3186 | 3187 | 3188 | 3189 | 3190 | 3191 | 3192 | 3193 | 3194 | 3195 | 3196 | 3197 | 3198 | 3199 | 3200 | 3201 | 3202 | 3203 | 3204 | 3205 | 3206 | 3207 | 3208 | 3209 | 3210 | 3211 | 3212 | 3213 | 3214 | 3215 | 3216 | 3217 | 3218 | 3219 | 3220 | 3221 | 3222 | 3223 | 3224 | 3225 | 3226 | 3227 | 3228 | 3229 | 3230 | 3231 | 3232 | 3233 | 3234 | 3235 | 3236 | 3237 | 3238 | 3239 | 3240 | 3241 | 3242 | 3243 | 3244 | 3245 | 3246 | 3247 | 3248 | 3249 | 3250 | 3251 | 3252 | 3253 | 3254 | 3255 | 3256 | 3257 | 3258 | 3259 | 3260 | 3261 | 3262 | 3263 | 3264 | 3265 | 3266 | 3267 | 3268 | 3269 | 3270 | 3271 | 3272 | 3273 | 3274 | 3275 | 3276 | 3277 | 3278 | 3279 | 3280 | 3281 | 3282 | 3283 | 3284 | 3285 | 3286 | 3287 | 3288 | 3289 | 3290 | 3291 | 3292 | 3293 | 3294 | 3295 | 3296 | 3297 | 3298 | 3299 | 3300 | 3301 | 3302 | 3303 | 3304 | 3305 | 3306 | 3307 | 3308 | 3309 | 3310 | 3311 | 3312 | 3313 | 3314 | 3315 | 3316 | 3317 | 3318 | 3319 | 3320 | 3321 | 3322 | 3323 | 3324 | 3325 | 3326 | 3327 | 3328 | 3329 | 3330 | 3331 | 3332 | 3333 | 3334 | 3335 | 3336 | 3337 | 3338 | 3339 | 3340 | 3341 | 3342 | 3343 | 3344 | 3345 | 3346 | 3347 | 3348 | 3349 | 3350 | 3351 | 3352 | 3353 | 3354 | 3355 | 3356 | 3357 | 3358 | 3359 | 3360 | 3361 | 3362 | 3363 | 3364 | 3365 | 3366 | 3367 | 3368 | 3369 | 3370 | 3371 | 3372 | 3373 | 3374 | 3375 | 3376 | 3377 | 3378 | 3379 | 3380 | 3381 | 3382 | 3383 | 3384 | 3385 | 3386 | 3387 | 3388 | 3389 | 3390 | 3391 | 3392 | 3393 | 3394 | 3395 | 3396 | 3397 | 3398 | 3399 | 3400 | 3401 | 3402 | 3403 | 3404 | 3405 | 3406 | 3407 | 3408 | 3409 | 3410 | 3411 | 3412 | 3413 | 3414 | 3415 | 3416 | 3417 | 3418 | 3419 | 3420 | 3421 | 3422 | 3423 | 3424 | 3425 | 3426 | 3427 | 3428 | 3429 | 3430 | 3431 | 3432 | 3433 | 3434 | 3435 | 3436 | 3437 | 3438 | 3439 | 3440 | 3441 | 3442 | 3443 | 3444 | 3445 | 3446 | 3447 | 3448 | 3449 | 3450 | 3451 | 3452 | 3453 | 3454 | 3455 | 3456 | 3457 | 3458 | 3459 | 3460 | 3461 | 3462 | 3463 | 3464 | 3465 | 3466 | 3467 | 3468 | 3469 | 3470 | 3471 | 3472 | 3473 | 3474 | 3475 | 3476 | 3477 | 3478 | 3479 | 3480 | 3481 | 3482 | 3483 | 3484 | 3485 | 3486 | 3487 | 3488 | 3489 | 3490 | 3491 | 3492 | 3493 | 3494 | 3495 | 3496 | 3497 | 3498 | 3499 | 3500 | 3501 | 3502 | 3503 | 3504 | 3505 | 3506 | 3507 | 3508 | 3509 | 3510 | 3511 | 3512 | 3513 | 3514 | 3515 | 3516 | 3517 | 3518 | 3519 | 3520 | 3521 | 3522 | 3523 | 3524 | 3525 | 3526 | 3527 | 3528 | 3529 | 3530 | 3531 | 3532 | 3533 | 3534 | 3535 | 3536 | 3537 | 3538 | 3539 | 3540 | 3541 | 3542 | 3543 | 3544 | 3545 | 3546 | 3547 | 3548 | 3549 | 3550 | 3551 | 3552 | 3553 | 3554 | 3555 | 3556 | 3557 | 3558 | 3559 | 3560 | 3561 | 3562 | 3563 | 3564 | 3565 | 3566 | 3567 | 3568 | 3569 | 3570 | 3571 | 3572 | 3573 | 3574 | 3575 | 3576 | 3577 | 3578 | 3579 | 3580 | 3581 | 3582 | 3583 | 3584 | 3585 | 3586 | 3587 | 3588 | 3589 | 3590 | 3591 | 3592 | 3593 | 3594 | 3595 | 3596 | 3597 | 3598 | 3599 | 3600 | 3601 | 3602 | 3603 | 3604 | 3605 | 3606 | 3607 | 3608 | 3609 | 3610 | 3611 | 3612 | 3613 | 3614 | 3615 | 3616 | 3617 | 3618 | 3619 | 3620 | 3621 | 3622 | 3623 | 3624 | 3625 | 3626 | 3627 | 3628 | 3629 | 3630 | 3631 | 3632 | 3633 | 3634 | 3635 | 3636 | 3637 | 3638 | 3639 | 3640 | 3641 | 3642 | 3643 | 3644 | 3645 | 3646 | 3647 | 3648 | 3649 | 3650 | 3651 | 3652 | 3653 | 3654 | 3655 | 3656 | 3657 | 3658 | 3659 | 3660 | 3661 | 3662 | 3663 | 3664 | 3665 | 3666 | 3667 | 3668 | 3669 | 3670 | 3671 | 3672 | 3673 | 3674 | 3675 | 3676 | 3677 | 3678 | 3679 | 3680 | 3681 | 3682 | 3683 | 3684 | 3685 | 3686 | 3687 | 3688 | 3689 | 3690 | 3691 | 3692 | 3693 | 3694 | 3695 | 3696 | 3697 | 3698 | 3699 | 3700 | 3701 | 3702 | 3703 | 3704 | 3705 | 3706 | 3707 | 3708 | 3709 | 3710 | 3711 | 3712 | 3713 | 3714 | 3715 | 3716 | 3717 | 3718 | 3719 | 3720 | 3721 | 3722 | 3723 | 3724 | 3725 | 3726 | 3727 | 3728 | 3729 | 3730 | 3731 | 3732 | 3733 | 3734 | 3735 | 3736 | 3737 | 3738 | 3739 | 3740 | 3741 | 3742 | 3743 | 3744 | 3745 | 3746 | 3747 | 3748 | 3749 | 3750 | 3751 | 3752 | 3753 | 3754 | 3755 | 3756 | 3757 | 3758 | 3759 | 3760 | 3761 | 3762 | 3763 | 3764 | 3765 | 3766 | 3767 | 3768 | 3769 | 3770 | 3771 | 3772 | 3773 | 3774 | 3775 | 3776 | 3777 | 3778 | 3779 | 3780 | 3781 | 3782 | 3783 | 3784 | 3785 | 3786 | 3787 | 3788 | 3789 | 3790 | 3791 | 3792 | 3793 | 3794 | 3795 | 3796 | 3797 | 3798 | 3799 | 3800 | 3801 | 3802 | 3803 | 3804 | 3805 | 3806 | 3807 | 3808 | 3809 | 3810 | 3811 | 3812 | 3813 | 3814 | 3815 | 3816 | 3817 | 3818 | 3819 | 3820 | 3821 | 3822 | 3823 | 3824 | 3825 | 3826 | 3827 | 3828 | 3829 | 3830 | 3831 | 3832 | 3833 | 3834 | 3835 | 3836 | 3837 | 3838 | 3839 | 3840 | 3841 | 3842 | 3843 | 3844 | 3845 | 3846 | 3847 | 3848 | 3849 | 3850 | 3851 | 3852 | 3853 | 3854 | 3855 | 3856 | 3857 | 3858 | 3859 | 3860 | 3861 | 3862 | 3863 | 3864 | 3865 | 3866 | 3867 | 3868 | 3869 | 3870 | 3871 | 3872 | 3873 | 3874 | 3875 | 3876 | 3877 | 3878 | 3879 | 3880 | 3881 | 3882 | 3883 | 3884 | 3885 | 3886 | 3887 | 3888 | 3889 | 3890 | 3891 | 3892 | 3893 | 3894 | 3895 | 3896 | 3897 | 3898 | 3899 | 3900 | 3901 | 3902 | 3903 | 3904 | 3905 | 3906 | 3907 | 3908 | 3909 | 3910 | 3911 | 3912 | 3913 | 3914 | 3915 | 3916 | 3917 | 3918 | 3919 | 3920 | 3921 | 3922 | 3923 | 3924 | 3925 | 3926 | 3927 | 3928 | 3929 | 3930 | 3931 | 3932 | 3933 | 3934 | 3935 | 3936 | 3937 | 3938 | 3939 | 3940 | 3941 | 3942 | 3943 | 3944 | 3945 | 3946 | 3947 | 3948 | 3949 | 3950 | 3951 | 3952 | 3953 | 3954 | 3955 | 3956 | 3957 | 3958 | 3959 | 3960 | 3961 | 3962 | 3963 | 3964 | 3965 | 3966 | 3967 | 3968 | 3969 | 3970 | 3971 | 3972 | 3973 | 3974 | 3975 | 3976 | 3977 | 3978 | 3979 | 3980 | 3981 | 3982 | 3983 | 3984 | 3985 | 3986 | 3987 | 3988 | 3989 | 3990 | 3991 | 3992 | 3993 | 3994 | 3995 | 3996 | 3997 | 3998 | 3999 | 4000 | 4001 | 4002 | 4003 | 4004 | 4005 | 4006 | 4007 | 4008 | 4009 | 4010 | 4011 | 4012 | 4013 | 4014 | 4015 | 4016 | 4017 | 4018 | 4019 | 4020 | 4021 | 4022 | 4023 | 4024 | 4025 | 4026 | 4027 | 4028 | 4029 | 4030 | 4031 | 4032 | 4033 | 4034 | 4035 | 4036 | 4037 | 4038 | 4039 | 4040 | 4041 | 4042 | 4043 | 4044 | 4045 | 4046 | 4047 | 4048 | 4049 | 4050 | 4051 | 4052 | 4053 | 4054 | 4055 | 4056 | 4057 | 4058 | 4059 | 4060 | 4061 | 4062 | 4063 | 4064 | 4065 | 4066 | 4067 | 4068 | 4069 | 4070 | 4071 | 4072 | 4073 | 4074 | 4075 | 4076 | 4077 | 4078 | 4079 | 4080 | 4081 | 4082 | 4083 | 4084 | 4085 | 4086 | 4087 | 4088 | 4089 | 4090 | 4091 | 4092 | 4093 | 4094 | 4095 | 4096 | 4097 | 4098 | 4099 | 4100 | 4101 | 4102 | 4103 | 4104 | 4105 | 4106 | 4107 | 4108 | 4109 | 4110 | 4111 | 4112 | 4113 | 4114 | 4115 | 4116 | 4117 | 4118 | 4119 | 4120 | 4121 | 4122 | 4123 | 4124 | 4125 | 4126 | 4127 | 4128 | 4129 | 4130 | 4131 | 4132 | 4133 | 4134 | 4135 | 4136 | 4137 | 4138 | 4139 | 4140 | 4141 | 4142 | 4143 | 4144 | 4145 | 4146 | 4147 | 4148 | 4149 | 4150 | 4151 | 4152 | 4153 | 4154 | 4155 | 4156 | 4157 | 4158 | 4159 | 4160 | 4161 | 4162 | 4163 | 4164 | 4165 | 4166 | 4167 | 4168 | 4169 | 4170 | 4171 | 4172 | 4173 | 4174 | 4175 | 4176 | 4177 | 4178 | 4179 | 4180 | 4181 | 4182 | 4183 | 4184 | 4185 | 4186 | 4187 | 4188 | 4189 | 4190 | 4191 | 4192 | 4193 | 4194 | 4195 | 4196 | 4197 | 4198 | 4199 | 4200 | 4201 | 4202 | 4203 | 4204 | 4205 | 4206 | 4207 | 4208 | 4209 | 4210 | 4211 | 4212 | 4213 | 4214 | 4215 | 4216 | 4217 | 4218 | 4219 | 4220 | 4221 | 4222 | 4223 | 4224 | 4225 | 4226 | 4227 | 4228 | 4229 | 4230 | 4231 | 4232 | 4233 | 4234 | 4235 | 4236 | 4237 | 4238 | 4239 | 4240 | 4241 | 4242 | 4243 | 4244 | 4245 | 4246 | 4247 | 4248 | 4249 | 4250 | 4251 | 4252 | 4253 | 4254 | 4255 | 4256 | 4257 | 4258 | 4259 | 4260 | 4261 | 4262 | 4263 | 4264 | 4265 | 4266 | 4267 | 4268 | 4269 | 4270 | 4271 | 4272 | 4273 | 4274 | 4275 | 4276 | 4277 | 4278 | 4279 | 4280 | 4281 | 4282 | 4283 | 4284 | 4285 | 4286 | 4287 | 4288 | 4289 | 4290 | 4291 | 4292 | 4293 | 4294 | 4295 | 4296 | 4297 | 4298 | 4299 | 4300 | 4301 | 4302 | 4303 | 4304 | 4305 | 4306 | 4307 | 4308 | 4309 | 4310 | 4311 | 4312 | 4313 | 4314 | 4315 | 4316 | 4317 | 4318 | 4319 | 4320 | 4321 | 4322 | 4323 | 4324 | 4325 | 4326 | 4327 | 4328 | 4329 | 4330 | 4331 | 4332 | 4333 | 4334 | 4335 | 4336 | 4337 | 4338 | 4339 | 4340 | 4341 | 4342 | 4343 | 4344 | 4345 | 4346 | 4347 | 4348 | 4349 | 4350 | 4351 | 4352 | 4353 | 4354 | 4355 | 4356 | 4357 | 4358 | 4359 | 4360 | 4361 | 4362 | 4363 | 4364 | 4365 | 4366 | 4367 | 4368 | 4369 | 4370 | 4371 | 4372 | 4373 | 4374 | 4375 | 4376 | 4377 | 4378 | 4379 | 4380 | 4381 | 4382 | 4383 | 4384 | 4385 | 4386 | 4387 | 4388 | 4389 | 4390 | 4391 | 4392 | 4393 | 4394 | 4395 | 4396 | 4397 | 4398 | 4399 | 4400 | 4401 | 4402 | 4403 | 4404 | 4405 | 4406 | 4407 | 4408 | 4409 | 4410 | 4411 | 4412 | 4413 | 4414 | 4415 | 4416 | 4417 | 4418 | 4419 | 4420 | 4421 | 4422 | 4423 | 4424 | 4425 | 4426 | 4427 | 4428 | 4429 | 4430 | 4431 | 4432 | 4433 | 4434 | 4435 | 4436 | 4437 | 4438 | 4439 | 4440 | 4441 | 4442 | 4443 | 4444 | 4445 | 4446 | 4447 | 4448 | 4449 | 4450 | 4451 | 4452 | 4453 | 4454 | 4455 | 4456 | 4457 | 4458 | 4459 | 4460 | 4461 | 4462 | 4463 | 4464 | 4465 | 4466 | 4467 | 4468 | 4469 | 4470 | 4471 | 4472 | 4473 | 4474 | 4475 | 4476 | 4477 | 4478 | 4479 | 4480 | 4481 | 4482 | 4483 | 4484 | 4485 | 4486 | 4487 | 4488 | 4489 | 4490 | 4491 | 4492 | 4493 | 4494 | 4495 | 4496 | 4497 | 4498 | 4499 | 4500 | 4501 | 4502 | 4503 | 4504 | 4505 | 4506 | 4507 | 4508 | 4509 | 4510 | 4511 | 4512 | 4513 | 4514 | 4515 | 4516 | 4517 | 4518 | 4519 | 4520 | 4521 | 4522 | 4523 | 4524 | 4525 | 4526 | 4527 | 4528 | 4529 | 4530 | 4531 | 4532 | 4533 | 4534 | 4535 | 4536 | 4537 | 4538 | 4539 | 4540 | 4541 | 4542 | 4543 | 4544 | 4545 | 4546 | 4547 | 4548 | 4549 | 4550 | 4551 | 4552 | 4553 | 4554 | 4555 | 4556 | 4557 | 4558 | 4559 | 4560 | 4561 | 4562 | 4563 | 4564 | 4565 | 4566 | 4567 | 4568 | 4569 | 4570 | 4571 | 4572 | 4573 | 4574 | 4575 | 4576 | 4577 | 4578 | 4579 | 4580 | 4581 | 4582 | 4583 | 4584 | 4585 | 4586 | 4587 | 4588 | 4589 | 4590 | 4591 | 4592 | 4593 | 4594 | 4595 | 4596 | 4597 | 4598 | 4599 | 4600 | 4601 | 4602 | 4603 | 4604 | 4605 | 4606 | 4607 | 4608 | 4609 | 4610 | 4611 | 4612 | 4613 | 4614 | 4615 | 4616 | 4617 | 4618 | 4619 | 4620 | 4621 | 4622 | 4623 | 4624 | 4625 | 4626 | 4627 | 4628 | 4629 | 4630 | 4631 | 4632 | 4633 | 4634 | 4635 | 4636 | 4637 | 4638 | 4639 | 4640 | 4641 | 4642 | 4643 | 4644 | 4645 | 4646 | 4647 | 4648 | 4649 | 4650 | 4651 | 4652 | 4653 | 4654 | 4655 | 4656 | 4657 | 4658 | 4659 | 4660 | 4661 | 4662 | 4663 | 4664 | 4665 | 4666 | 4667 | 4668 | 4669 | 4670 | 4671 | 4672 | 4673 | 4674 | 4675 | 4676 | 4677 | 4678 | 4679 | 4680 | 4681 | 4682 | 4683 | 4684 | 4685 | 4686 | 4687 | 4688 | 4689 | 4690 | 4691 | 4692 | 4693 | 4694 | 4695 | 4696 | 4697 | 4698 | 4699 | 4700 | 4701 | 4702 | 4703 | 4704 | 4705 | 4706 | 4707 | 4708 | 4709 | 4710 | 4711 | 4712 | 4713 | 4714 | 4715 | 4716 | 4717 | 4718 | 4719 | 4720 | 4721 | 4722 | 4723 | 4724 | 4725 | 4726 | 4727 | 4728 | 4729 | 4730 | 4731 | 4732 | 4733 | 4734 | 4735 | 4736 | 4737 | 4738 | 4739 | 4740 | 4741 | 4742 | 4743 | 4744 | 4745 | 4746 | 4747 | 4748 | 4749 | 4750 | 4751 | 4752 | 4753 | 4754 | 4755 | 4756 | 4757 | 4758 | 4759 | 4760 | 4761 | 4762 | 4763 | 4764 | 4765 | 4766 | 4767 | 4768 | 4769 | 4770 | 4771 | 4772 | 4773 | 4774 | 4775 | 4776 | 4777 | 4778 | 4779 | 4780 | 4781 | 4782 | 4783 | 4784 | 4785 | 4786 | 4787 | 4788 | 4789 | 4790 | 4791 | 4792 | 4793 | 4794 | 4795 | 4796 | 4797 | 4798 | 4799 | 4800 | 4801 | 4802 | 4803 | 4804 | 4805 | 4806 | 4807 | 4808 | 4809 | 4810 | 4811 | 4812 | 4813 | 4814 | 4815 | 4816 | 4817 | 4818 | 4819 | 4820 | 4821 | 4822 | 4823 | 4824 | 4825 | 4826 | 4827 | 4828 | 4829 | 4830 | 4831 | 4832 | 4833 | 4834 | 4835 | 4836 | 4837 | 4838 | 4839 | 4840 | 4841 | 4842 | 4843 | 4844 | 4845 | 4846 | 4847 | 4848 | 4849 | 4850 | 4851 | 4852 | 4853 | 4854 | 4855 | 4856 | 4857 | 4858 | 4859 | 4860 | 4861 | 4862 | 4863 | 4864 | 4865 | 4866 | 4867 | 4868 | 4869 | 4870 | 4871 | 4872 | 4873 | 4874 | 4875 | 4876 | 4877 | 4878 | 4879 | 4880 | 4881 | 4882 | 4883 | 4884 | 4885 | 4886 | 4887 | 4888 | 4889 | 4890 | 4891 | 4892 | 4893 | 4894 | 4895 | 4896 | 4897 | 4898 | 4899 | 4900 | 4901 | 4902 | 4903 | 4904 | 4905 | 4906 | 4907 | 4908 | 4909 | 4910 | 4911 | 4912 | 4913 | 4914 | 4915 | 4916 | 4917 | 4918 | 4919 | 4920 | 4921 | 4922 | 4923 | 4924 | 4925 | 4926 | 4927 | 4928 | 4929 | 4930 | 4931 | 4932 | 4933 | 4934 | 4935 | 4936 | 4937 | 4938 | 4939 | 4940 | 4941 | 4942 | 4943 | 4944 | 4945 | 4946 | 4947 | 4948 | 4949 | 4950 | 4951 | 4952 | 4953 | 4954 | 4955 | 4956 | 4957 | 4958 | 4959 | 4960 | 4961 | 4962 | 4963 | 4964 | 4965 | 4966 | 4967 | 4968 | 4969 | 4970 | 4971 | 4972 | 4973 | 4974 | 4975 | 4976 | 4977 | 4978 | 4979 | 4980 | 4981 | 4982 | 4983 | 4984 | 4985 | 4986 | 4987 | 4988 | 4989 | 4990 | 4991 | 4992 | 4993 | 4994 | 4995 | 4996 | 4997 | 4998 | 4999 | 5000 | 5001)[] +>[ 0 as 0, 1 as 1, 2 as 2, 3 as 3, 4 as 4, 5 as 5, 6 as 6, 7 as 7, 8 as 8, 9 as 9, 10 as 10, 11 as 11, 12 as 12, 13 as 13, 14 as 14, 15 as 15, 16 as 16, 17 as 17, 18 as 18, 19 as 19, 20 as 20, 21 as 21, 22 as 22, 23 as 23, 24 as 24, 25 as 25, 26 as 26, 27 as 27, 28 as 28, 29 as 29, 30 as 30, 31 as 31, 32 as 32, 33 as 33, 34 as 34, 35 as 35, 36 as 36, 37 as 37, 38 as 38, 39 as 39, 40 as 40, 41 as 41, 42 as 42, 43 as 43, 44 as 44, 45 as 45, 46 as 46, 47 as 47, 48 as 48, 49 as 49, 50 as 50, 51 as 51, 52 as 52, 53 as 53, 54 as 54, 55 as 55, 56 as 56, 57 as 57, 58 as 58, 59 as 59, 60 as 60, 61 as 61, 62 as 62, 63 as 63, 64 as 64, 65 as 65, 66 as 66, 67 as 67, 68 as 68, 69 as 69, 70 as 70, 71 as 71, 72 as 72, 73 as 73, 74 as 74, 75 as 75, 76 as 76, 77 as 77, 78 as 78, 79 as 79, 80 as 80, 81 as 81, 82 as 82, 83 as 83, 84 as 84, 85 as 85, 86 as 86, 87 as 87, 88 as 88, 89 as 89, 90 as 90, 91 as 91, 92 as 92, 93 as 93, 94 as 94, 95 as 95, 96 as 96, 97 as 97, 98 as 98, 99 as 99, 100 as 100, 101 as 101, 102 as 102, 103 as 103, 104 as 104, 105 as 105, 106 as 106, 107 as 107, 108 as 108, 109 as 109, 110 as 110, 111 as 111, 112 as 112, 113 as 113, 114 as 114, 115 as 115, 116 as 116, 117 as 117, 118 as 118, 119 as 119, 120 as 120, 121 as 121, 122 as 122, 123 as 123, 124 as 124, 125 as 125, 126 as 126, 127 as 127, 128 as 128, 129 as 129, 130 as 130, 131 as 131, 132 as 132, 133 as 133, 134 as 134, 135 as 135, 136 as 136, 137 as 137, 138 as 138, 139 as 139, 140 as 140, 141 as 141, 142 as 142, 143 as 143, 144 as 144, 145 as 145, 146 as 146, 147 as 147, 148 as 148, 149 as 149, 150 as 150, 151 as 151, 152 as 152, 153 as 153, 154 as 154, 155 as 155, 156 as 156, 157 as 157, 158 as 158, 159 as 159, 160 as 160, 161 as 161, 162 as 162, 163 as 163, 164 as 164, 165 as 165, 166 as 166, 167 as 167, 168 as 168, 169 as 169, 170 as 170, 171 as 171, 172 as 172, 173 as 173, 174 as 174, 175 as 175, 176 as 176, 177 as 177, 178 as 178, 179 as 179, 180 as 180, 181 as 181, 182 as 182, 183 as 183, 184 as 184, 185 as 185, 186 as 186, 187 as 187, 188 as 188, 189 as 189, 190 as 190, 191 as 191, 192 as 192, 193 as 193, 194 as 194, 195 as 195, 196 as 196, 197 as 197, 198 as 198, 199 as 199, 200 as 200, 201 as 201, 202 as 202, 203 as 203, 204 as 204, 205 as 205, 206 as 206, 207 as 207, 208 as 208, 209 as 209, 210 as 210, 211 as 211, 212 as 212, 213 as 213, 214 as 214, 215 as 215, 216 as 216, 217 as 217, 218 as 218, 219 as 219, 220 as 220, 221 as 221, 222 as 222, 223 as 223, 224 as 224, 225 as 225, 226 as 226, 227 as 227, 228 as 228, 229 as 229, 230 as 230, 231 as 231, 232 as 232, 233 as 233, 234 as 234, 235 as 235, 236 as 236, 237 as 237, 238 as 238, 239 as 239, 240 as 240, 241 as 241, 242 as 242, 243 as 243, 244 as 244, 245 as 245, 246 as 246, 247 as 247, 248 as 248, 249 as 249, 250 as 250, 251 as 251, 252 as 252, 253 as 253, 254 as 254, 255 as 255, 256 as 256, 257 as 257, 258 as 258, 259 as 259, 260 as 260, 261 as 261, 262 as 262, 263 as 263, 264 as 264, 265 as 265, 266 as 266, 267 as 267, 268 as 268, 269 as 269, 270 as 270, 271 as 271, 272 as 272, 273 as 273, 274 as 274, 275 as 275, 276 as 276, 277 as 277, 278 as 278, 279 as 279, 280 as 280, 281 as 281, 282 as 282, 283 as 283, 284 as 284, 285 as 285, 286 as 286, 287 as 287, 288 as 288, 289 as 289, 290 as 290, 291 as 291, 292 as 292, 293 as 293, 294 as 294, 295 as 295, 296 as 296, 297 as 297, 298 as 298, 299 as 299, 300 as 300, 301 as 301, 302 as 302, 303 as 303, 304 as 304, 305 as 305, 306 as 306, 307 as 307, 308 as 308, 309 as 309, 310 as 310, 311 as 311, 312 as 312, 313 as 313, 314 as 314, 315 as 315, 316 as 316, 317 as 317, 318 as 318, 319 as 319, 320 as 320, 321 as 321, 322 as 322, 323 as 323, 324 as 324, 325 as 325, 326 as 326, 327 as 327, 328 as 328, 329 as 329, 330 as 330, 331 as 331, 332 as 332, 333 as 333, 334 as 334, 335 as 335, 336 as 336, 337 as 337, 338 as 338, 339 as 339, 340 as 340, 341 as 341, 342 as 342, 343 as 343, 344 as 344, 345 as 345, 346 as 346, 347 as 347, 348 as 348, 349 as 349, 350 as 350, 351 as 351, 352 as 352, 353 as 353, 354 as 354, 355 as 355, 356 as 356, 357 as 357, 358 as 358, 359 as 359, 360 as 360, 361 as 361, 362 as 362, 363 as 363, 364 as 364, 365 as 365, 366 as 366, 367 as 367, 368 as 368, 369 as 369, 370 as 370, 371 as 371, 372 as 372, 373 as 373, 374 as 374, 375 as 375, 376 as 376, 377 as 377, 378 as 378, 379 as 379, 380 as 380, 381 as 381, 382 as 382, 383 as 383, 384 as 384, 385 as 385, 386 as 386, 387 as 387, 388 as 388, 389 as 389, 390 as 390, 391 as 391, 392 as 392, 393 as 393, 394 as 394, 395 as 395, 396 as 396, 397 as 397, 398 as 398, 399 as 399, 400 as 400, 401 as 401, 402 as 402, 403 as 403, 404 as 404, 405 as 405, 406 as 406, 407 as 407, 408 as 408, 409 as 409, 410 as 410, 411 as 411, 412 as 412, 413 as 413, 414 as 414, 415 as 415, 416 as 416, 417 as 417, 418 as 418, 419 as 419, 420 as 420, 421 as 421, 422 as 422, 423 as 423, 424 as 424, 425 as 425, 426 as 426, 427 as 427, 428 as 428, 429 as 429, 430 as 430, 431 as 431, 432 as 432, 433 as 433, 434 as 434, 435 as 435, 436 as 436, 437 as 437, 438 as 438, 439 as 439, 440 as 440, 441 as 441, 442 as 442, 443 as 443, 444 as 444, 445 as 445, 446 as 446, 447 as 447, 448 as 448, 449 as 449, 450 as 450, 451 as 451, 452 as 452, 453 as 453, 454 as 454, 455 as 455, 456 as 456, 457 as 457, 458 as 458, 459 as 459, 460 as 460, 461 as 461, 462 as 462, 463 as 463, 464 as 464, 465 as 465, 466 as 466, 467 as 467, 468 as 468, 469 as 469, 470 as 470, 471 as 471, 472 as 472, 473 as 473, 474 as 474, 475 as 475, 476 as 476, 477 as 477, 478 as 478, 479 as 479, 480 as 480, 481 as 481, 482 as 482, 483 as 483, 484 as 484, 485 as 485, 486 as 486, 487 as 487, 488 as 488, 489 as 489, 490 as 490, 491 as 491, 492 as 492, 493 as 493, 494 as 494, 495 as 495, 496 as 496, 497 as 497, 498 as 498, 499 as 499, 500 as 500, 501 as 501, 502 as 502, 503 as 503, 504 as 504, 505 as 505, 506 as 506, 507 as 507, 508 as 508, 509 as 509, 510 as 510, 511 as 511, 512 as 512, 513 as 513, 514 as 514, 515 as 515, 516 as 516, 517 as 517, 518 as 518, 519 as 519, 520 as 520, 521 as 521, 522 as 522, 523 as 523, 524 as 524, 525 as 525, 526 as 526, 527 as 527, 528 as 528, 529 as 529, 530 as 530, 531 as 531, 532 as 532, 533 as 533, 534 as 534, 535 as 535, 536 as 536, 537 as 537, 538 as 538, 539 as 539, 540 as 540, 541 as 541, 542 as 542, 543 as 543, 544 as 544, 545 as 545, 546 as 546, 547 as 547, 548 as 548, 549 as 549, 550 as 550, 551 as 551, 552 as 552, 553 as 553, 554 as 554, 555 as 555, 556 as 556, 557 as 557, 558 as 558, 559 as 559, 560 as 560, 561 as 561, 562 as 562, 563 as 563, 564 as 564, 565 as 565, 566 as 566, 567 as 567, 568 as 568, 569 as 569, 570 as 570, 571 as 571, 572 as 572, 573 as 573, 574 as 574, 575 as 575, 576 as 576, 577 as 577, 578 as 578, 579 as 579, 580 as 580, 581 as 581, 582 as 582, 583 as 583, 584 as 584, 585 as 585, 586 as 586, 587 as 587, 588 as 588, 589 as 589, 590 as 590, 591 as 591, 592 as 592, 593 as 593, 594 as 594, 595 as 595, 596 as 596, 597 as 597, 598 as 598, 599 as 599, 600 as 600, 601 as 601, 602 as 602, 603 as 603, 604 as 604, 605 as 605, 606 as 606, 607 as 607, 608 as 608, 609 as 609, 610 as 610, 611 as 611, 612 as 612, 613 as 613, 614 as 614, 615 as 615, 616 as 616, 617 as 617, 618 as 618, 619 as 619, 620 as 620, 621 as 621, 622 as 622, 623 as 623, 624 as 624, 625 as 625, 626 as 626, 627 as 627, 628 as 628, 629 as 629, 630 as 630, 631 as 631, 632 as 632, 633 as 633, 634 as 634, 635 as 635, 636 as 636, 637 as 637, 638 as 638, 639 as 639, 640 as 640, 641 as 641, 642 as 642, 643 as 643, 644 as 644, 645 as 645, 646 as 646, 647 as 647, 648 as 648, 649 as 649, 650 as 650, 651 as 651, 652 as 652, 653 as 653, 654 as 654, 655 as 655, 656 as 656, 657 as 657, 658 as 658, 659 as 659, 660 as 660, 661 as 661, 662 as 662, 663 as 663, 664 as 664, 665 as 665, 666 as 666, 667 as 667, 668 as 668, 669 as 669, 670 as 670, 671 as 671, 672 as 672, 673 as 673, 674 as 674, 675 as 675, 676 as 676, 677 as 677, 678 as 678, 679 as 679, 680 as 680, 681 as 681, 682 as 682, 683 as 683, 684 as 684, 685 as 685, 686 as 686, 687 as 687, 688 as 688, 689 as 689, 690 as 690, 691 as 691, 692 as 692, 693 as 693, 694 as 694, 695 as 695, 696 as 696, 697 as 697, 698 as 698, 699 as 699, 700 as 700, 701 as 701, 702 as 702, 703 as 703, 704 as 704, 705 as 705, 706 as 706, 707 as 707, 708 as 708, 709 as 709, 710 as 710, 711 as 711, 712 as 712, 713 as 713, 714 as 714, 715 as 715, 716 as 716, 717 as 717, 718 as 718, 719 as 719, 720 as 720, 721 as 721, 722 as 722, 723 as 723, 724 as 724, 725 as 725, 726 as 726, 727 as 727, 728 as 728, 729 as 729, 730 as 730, 731 as 731, 732 as 732, 733 as 733, 734 as 734, 735 as 735, 736 as 736, 737 as 737, 738 as 738, 739 as 739, 740 as 740, 741 as 741, 742 as 742, 743 as 743, 744 as 744, 745 as 745, 746 as 746, 747 as 747, 748 as 748, 749 as 749, 750 as 750, 751 as 751, 752 as 752, 753 as 753, 754 as 754, 755 as 755, 756 as 756, 757 as 757, 758 as 758, 759 as 759, 760 as 760, 761 as 761, 762 as 762, 763 as 763, 764 as 764, 765 as 765, 766 as 766, 767 as 767, 768 as 768, 769 as 769, 770 as 770, 771 as 771, 772 as 772, 773 as 773, 774 as 774, 775 as 775, 776 as 776, 777 as 777, 778 as 778, 779 as 779, 780 as 780, 781 as 781, 782 as 782, 783 as 783, 784 as 784, 785 as 785, 786 as 786, 787 as 787, 788 as 788, 789 as 789, 790 as 790, 791 as 791, 792 as 792, 793 as 793, 794 as 794, 795 as 795, 796 as 796, 797 as 797, 798 as 798, 799 as 799, 800 as 800, 801 as 801, 802 as 802, 803 as 803, 804 as 804, 805 as 805, 806 as 806, 807 as 807, 808 as 808, 809 as 809, 810 as 810, 811 as 811, 812 as 812, 813 as 813, 814 as 814, 815 as 815, 816 as 816, 817 as 817, 818 as 818, 819 as 819, 820 as 820, 821 as 821, 822 as 822, 823 as 823, 824 as 824, 825 as 825, 826 as 826, 827 as 827, 828 as 828, 829 as 829, 830 as 830, 831 as 831, 832 as 832, 833 as 833, 834 as 834, 835 as 835, 836 as 836, 837 as 837, 838 as 838, 839 as 839, 840 as 840, 841 as 841, 842 as 842, 843 as 843, 844 as 844, 845 as 845, 846 as 846, 847 as 847, 848 as 848, 849 as 849, 850 as 850, 851 as 851, 852 as 852, 853 as 853, 854 as 854, 855 as 855, 856 as 856, 857 as 857, 858 as 858, 859 as 859, 860 as 860, 861 as 861, 862 as 862, 863 as 863, 864 as 864, 865 as 865, 866 as 866, 867 as 867, 868 as 868, 869 as 869, 870 as 870, 871 as 871, 872 as 872, 873 as 873, 874 as 874, 875 as 875, 876 as 876, 877 as 877, 878 as 878, 879 as 879, 880 as 880, 881 as 881, 882 as 882, 883 as 883, 884 as 884, 885 as 885, 886 as 886, 887 as 887, 888 as 888, 889 as 889, 890 as 890, 891 as 891, 892 as 892, 893 as 893, 894 as 894, 895 as 895, 896 as 896, 897 as 897, 898 as 898, 899 as 899, 900 as 900, 901 as 901, 902 as 902, 903 as 903, 904 as 904, 905 as 905, 906 as 906, 907 as 907, 908 as 908, 909 as 909, 910 as 910, 911 as 911, 912 as 912, 913 as 913, 914 as 914, 915 as 915, 916 as 916, 917 as 917, 918 as 918, 919 as 919, 920 as 920, 921 as 921, 922 as 922, 923 as 923, 924 as 924, 925 as 925, 926 as 926, 927 as 927, 928 as 928, 929 as 929, 930 as 930, 931 as 931, 932 as 932, 933 as 933, 934 as 934, 935 as 935, 936 as 936, 937 as 937, 938 as 938, 939 as 939, 940 as 940, 941 as 941, 942 as 942, 943 as 943, 944 as 944, 945 as 945, 946 as 946, 947 as 947, 948 as 948, 949 as 949, 950 as 950, 951 as 951, 952 as 952, 953 as 953, 954 as 954, 955 as 955, 956 as 956, 957 as 957, 958 as 958, 959 as 959, 960 as 960, 961 as 961, 962 as 962, 963 as 963, 964 as 964, 965 as 965, 966 as 966, 967 as 967, 968 as 968, 969 as 969, 970 as 970, 971 as 971, 972 as 972, 973 as 973, 974 as 974, 975 as 975, 976 as 976, 977 as 977, 978 as 978, 979 as 979, 980 as 980, 981 as 981, 982 as 982, 983 as 983, 984 as 984, 985 as 985, 986 as 986, 987 as 987, 988 as 988, 989 as 989, 990 as 990, 991 as 991, 992 as 992, 993 as 993, 994 as 994, 995 as 995, 996 as 996, 997 as 997, 998 as 998, 999 as 999, 1000 as 1000, 1001 as 1001, 1002 as 1002, 1003 as 1003, 1004 as 1004, 1005 as 1005, 1006 as 1006, 1007 as 1007, 1008 as 1008, 1009 as 1009, 1010 as 1010, 1011 as 1011, 1012 as 1012, 1013 as 1013, 1014 as 1014, 1015 as 1015, 1016 as 1016, 1017 as 1017, 1018 as 1018, 1019 as 1019, 1020 as 1020, 1021 as 1021, 1022 as 1022, 1023 as 1023, 1024 as 1024, 1025 as 1025, 1026 as 1026, 1027 as 1027, 1028 as 1028, 1029 as 1029, 1030 as 1030, 1031 as 1031, 1032 as 1032, 1033 as 1033, 1034 as 1034, 1035 as 1035, 1036 as 1036, 1037 as 1037, 1038 as 1038, 1039 as 1039, 1040 as 1040, 1041 as 1041, 1042 as 1042, 1043 as 1043, 1044 as 1044, 1045 as 1045, 1046 as 1046, 1047 as 1047, 1048 as 1048, 1049 as 1049, 1050 as 1050, 1051 as 1051, 1052 as 1052, 1053 as 1053, 1054 as 1054, 1055 as 1055, 1056 as 1056, 1057 as 1057, 1058 as 1058, 1059 as 1059, 1060 as 1060, 1061 as 1061, 1062 as 1062, 1063 as 1063, 1064 as 1064, 1065 as 1065, 1066 as 1066, 1067 as 1067, 1068 as 1068, 1069 as 1069, 1070 as 1070, 1071 as 1071, 1072 as 1072, 1073 as 1073, 1074 as 1074, 1075 as 1075, 1076 as 1076, 1077 as 1077, 1078 as 1078, 1079 as 1079, 1080 as 1080, 1081 as 1081, 1082 as 1082, 1083 as 1083, 1084 as 1084, 1085 as 1085, 1086 as 1086, 1087 as 1087, 1088 as 1088, 1089 as 1089, 1090 as 1090, 1091 as 1091, 1092 as 1092, 1093 as 1093, 1094 as 1094, 1095 as 1095, 1096 as 1096, 1097 as 1097, 1098 as 1098, 1099 as 1099, 1100 as 1100, 1101 as 1101, 1102 as 1102, 1103 as 1103, 1104 as 1104, 1105 as 1105, 1106 as 1106, 1107 as 1107, 1108 as 1108, 1109 as 1109, 1110 as 1110, 1111 as 1111, 1112 as 1112, 1113 as 1113, 1114 as 1114, 1115 as 1115, 1116 as 1116, 1117 as 1117, 1118 as 1118, 1119 as 1119, 1120 as 1120, 1121 as 1121, 1122 as 1122, 1123 as 1123, 1124 as 1124, 1125 as 1125, 1126 as 1126, 1127 as 1127, 1128 as 1128, 1129 as 1129, 1130 as 1130, 1131 as 1131, 1132 as 1132, 1133 as 1133, 1134 as 1134, 1135 as 1135, 1136 as 1136, 1137 as 1137, 1138 as 1138, 1139 as 1139, 1140 as 1140, 1141 as 1141, 1142 as 1142, 1143 as 1143, 1144 as 1144, 1145 as 1145, 1146 as 1146, 1147 as 1147, 1148 as 1148, 1149 as 1149, 1150 as 1150, 1151 as 1151, 1152 as 1152, 1153 as 1153, 1154 as 1154, 1155 as 1155, 1156 as 1156, 1157 as 1157, 1158 as 1158, 1159 as 1159, 1160 as 1160, 1161 as 1161, 1162 as 1162, 1163 as 1163, 1164 as 1164, 1165 as 1165, 1166 as 1166, 1167 as 1167, 1168 as 1168, 1169 as 1169, 1170 as 1170, 1171 as 1171, 1172 as 1172, 1173 as 1173, 1174 as 1174, 1175 as 1175, 1176 as 1176, 1177 as 1177, 1178 as 1178, 1179 as 1179, 1180 as 1180, 1181 as 1181, 1182 as 1182, 1183 as 1183, 1184 as 1184, 1185 as 1185, 1186 as 1186, 1187 as 1187, 1188 as 1188, 1189 as 1189, 1190 as 1190, 1191 as 1191, 1192 as 1192, 1193 as 1193, 1194 as 1194, 1195 as 1195, 1196 as 1196, 1197 as 1197, 1198 as 1198, 1199 as 1199, 1200 as 1200, 1201 as 1201, 1202 as 1202, 1203 as 1203, 1204 as 1204, 1205 as 1205, 1206 as 1206, 1207 as 1207, 1208 as 1208, 1209 as 1209, 1210 as 1210, 1211 as 1211, 1212 as 1212, 1213 as 1213, 1214 as 1214, 1215 as 1215, 1216 as 1216, 1217 as 1217, 1218 as 1218, 1219 as 1219, 1220 as 1220, 1221 as 1221, 1222 as 1222, 1223 as 1223, 1224 as 1224, 1225 as 1225, 1226 as 1226, 1227 as 1227, 1228 as 1228, 1229 as 1229, 1230 as 1230, 1231 as 1231, 1232 as 1232, 1233 as 1233, 1234 as 1234, 1235 as 1235, 1236 as 1236, 1237 as 1237, 1238 as 1238, 1239 as 1239, 1240 as 1240, 1241 as 1241, 1242 as 1242, 1243 as 1243, 1244 as 1244, 1245 as 1245, 1246 as 1246, 1247 as 1247, 1248 as 1248, 1249 as 1249, 1250 as 1250, 1251 as 1251, 1252 as 1252, 1253 as 1253, 1254 as 1254, 1255 as 1255, 1256 as 1256, 1257 as 1257, 1258 as 1258, 1259 as 1259, 1260 as 1260, 1261 as 1261, 1262 as 1262, 1263 as 1263, 1264 as 1264, 1265 as 1265, 1266 as 1266, 1267 as 1267, 1268 as 1268, 1269 as 1269, 1270 as 1270, 1271 as 1271, 1272 as 1272, 1273 as 1273, 1274 as 1274, 1275 as 1275, 1276 as 1276, 1277 as 1277, 1278 as 1278, 1279 as 1279, 1280 as 1280, 1281 as 1281, 1282 as 1282, 1283 as 1283, 1284 as 1284, 1285 as 1285, 1286 as 1286, 1287 as 1287, 1288 as 1288, 1289 as 1289, 1290 as 1290, 1291 as 1291, 1292 as 1292, 1293 as 1293, 1294 as 1294, 1295 as 1295, 1296 as 1296, 1297 as 1297, 1298 as 1298, 1299 as 1299, 1300 as 1300, 1301 as 1301, 1302 as 1302, 1303 as 1303, 1304 as 1304, 1305 as 1305, 1306 as 1306, 1307 as 1307, 1308 as 1308, 1309 as 1309, 1310 as 1310, 1311 as 1311, 1312 as 1312, 1313 as 1313, 1314 as 1314, 1315 as 1315, 1316 as 1316, 1317 as 1317, 1318 as 1318, 1319 as 1319, 1320 as 1320, 1321 as 1321, 1322 as 1322, 1323 as 1323, 1324 as 1324, 1325 as 1325, 1326 as 1326, 1327 as 1327, 1328 as 1328, 1329 as 1329, 1330 as 1330, 1331 as 1331, 1332 as 1332, 1333 as 1333, 1334 as 1334, 1335 as 1335, 1336 as 1336, 1337 as 1337, 1338 as 1338, 1339 as 1339, 1340 as 1340, 1341 as 1341, 1342 as 1342, 1343 as 1343, 1344 as 1344, 1345 as 1345, 1346 as 1346, 1347 as 1347, 1348 as 1348, 1349 as 1349, 1350 as 1350, 1351 as 1351, 1352 as 1352, 1353 as 1353, 1354 as 1354, 1355 as 1355, 1356 as 1356, 1357 as 1357, 1358 as 1358, 1359 as 1359, 1360 as 1360, 1361 as 1361, 1362 as 1362, 1363 as 1363, 1364 as 1364, 1365 as 1365, 1366 as 1366, 1367 as 1367, 1368 as 1368, 1369 as 1369, 1370 as 1370, 1371 as 1371, 1372 as 1372, 1373 as 1373, 1374 as 1374, 1375 as 1375, 1376 as 1376, 1377 as 1377, 1378 as 1378, 1379 as 1379, 1380 as 1380, 1381 as 1381, 1382 as 1382, 1383 as 1383, 1384 as 1384, 1385 as 1385, 1386 as 1386, 1387 as 1387, 1388 as 1388, 1389 as 1389, 1390 as 1390, 1391 as 1391, 1392 as 1392, 1393 as 1393, 1394 as 1394, 1395 as 1395, 1396 as 1396, 1397 as 1397, 1398 as 1398, 1399 as 1399, 1400 as 1400, 1401 as 1401, 1402 as 1402, 1403 as 1403, 1404 as 1404, 1405 as 1405, 1406 as 1406, 1407 as 1407, 1408 as 1408, 1409 as 1409, 1410 as 1410, 1411 as 1411, 1412 as 1412, 1413 as 1413, 1414 as 1414, 1415 as 1415, 1416 as 1416, 1417 as 1417, 1418 as 1418, 1419 as 1419, 1420 as 1420, 1421 as 1421, 1422 as 1422, 1423 as 1423, 1424 as 1424, 1425 as 1425, 1426 as 1426, 1427 as 1427, 1428 as 1428, 1429 as 1429, 1430 as 1430, 1431 as 1431, 1432 as 1432, 1433 as 1433, 1434 as 1434, 1435 as 1435, 1436 as 1436, 1437 as 1437, 1438 as 1438, 1439 as 1439, 1440 as 1440, 1441 as 1441, 1442 as 1442, 1443 as 1443, 1444 as 1444, 1445 as 1445, 1446 as 1446, 1447 as 1447, 1448 as 1448, 1449 as 1449, 1450 as 1450, 1451 as 1451, 1452 as 1452, 1453 as 1453, 1454 as 1454, 1455 as 1455, 1456 as 1456, 1457 as 1457, 1458 as 1458, 1459 as 1459, 1460 as 1460, 1461 as 1461, 1462 as 1462, 1463 as 1463, 1464 as 1464, 1465 as 1465, 1466 as 1466, 1467 as 1467, 1468 as 1468, 1469 as 1469, 1470 as 1470, 1471 as 1471, 1472 as 1472, 1473 as 1473, 1474 as 1474, 1475 as 1475, 1476 as 1476, 1477 as 1477, 1478 as 1478, 1479 as 1479, 1480 as 1480, 1481 as 1481, 1482 as 1482, 1483 as 1483, 1484 as 1484, 1485 as 1485, 1486 as 1486, 1487 as 1487, 1488 as 1488, 1489 as 1489, 1490 as 1490, 1491 as 1491, 1492 as 1492, 1493 as 1493, 1494 as 1494, 1495 as 1495, 1496 as 1496, 1497 as 1497, 1498 as 1498, 1499 as 1499, 1500 as 1500, 1501 as 1501, 1502 as 1502, 1503 as 1503, 1504 as 1504, 1505 as 1505, 1506 as 1506, 1507 as 1507, 1508 as 1508, 1509 as 1509, 1510 as 1510, 1511 as 1511, 1512 as 1512, 1513 as 1513, 1514 as 1514, 1515 as 1515, 1516 as 1516, 1517 as 1517, 1518 as 1518, 1519 as 1519, 1520 as 1520, 1521 as 1521, 1522 as 1522, 1523 as 1523, 1524 as 1524, 1525 as 1525, 1526 as 1526, 1527 as 1527, 1528 as 1528, 1529 as 1529, 1530 as 1530, 1531 as 1531, 1532 as 1532, 1533 as 1533, 1534 as 1534, 1535 as 1535, 1536 as 1536, 1537 as 1537, 1538 as 1538, 1539 as 1539, 1540 as 1540, 1541 as 1541, 1542 as 1542, 1543 as 1543, 1544 as 1544, 1545 as 1545, 1546 as 1546, 1547 as 1547, 1548 as 1548, 1549 as 1549, 1550 as 1550, 1551 as 1551, 1552 as 1552, 1553 as 1553, 1554 as 1554, 1555 as 1555, 1556 as 1556, 1557 as 1557, 1558 as 1558, 1559 as 1559, 1560 as 1560, 1561 as 1561, 1562 as 1562, 1563 as 1563, 1564 as 1564, 1565 as 1565, 1566 as 1566, 1567 as 1567, 1568 as 1568, 1569 as 1569, 1570 as 1570, 1571 as 1571, 1572 as 1572, 1573 as 1573, 1574 as 1574, 1575 as 1575, 1576 as 1576, 1577 as 1577, 1578 as 1578, 1579 as 1579, 1580 as 1580, 1581 as 1581, 1582 as 1582, 1583 as 1583, 1584 as 1584, 1585 as 1585, 1586 as 1586, 1587 as 1587, 1588 as 1588, 1589 as 1589, 1590 as 1590, 1591 as 1591, 1592 as 1592, 1593 as 1593, 1594 as 1594, 1595 as 1595, 1596 as 1596, 1597 as 1597, 1598 as 1598, 1599 as 1599, 1600 as 1600, 1601 as 1601, 1602 as 1602, 1603 as 1603, 1604 as 1604, 1605 as 1605, 1606 as 1606, 1607 as 1607, 1608 as 1608, 1609 as 1609, 1610 as 1610, 1611 as 1611, 1612 as 1612, 1613 as 1613, 1614 as 1614, 1615 as 1615, 1616 as 1616, 1617 as 1617, 1618 as 1618, 1619 as 1619, 1620 as 1620, 1621 as 1621, 1622 as 1622, 1623 as 1623, 1624 as 1624, 1625 as 1625, 1626 as 1626, 1627 as 1627, 1628 as 1628, 1629 as 1629, 1630 as 1630, 1631 as 1631, 1632 as 1632, 1633 as 1633, 1634 as 1634, 1635 as 1635, 1636 as 1636, 1637 as 1637, 1638 as 1638, 1639 as 1639, 1640 as 1640, 1641 as 1641, 1642 as 1642, 1643 as 1643, 1644 as 1644, 1645 as 1645, 1646 as 1646, 1647 as 1647, 1648 as 1648, 1649 as 1649, 1650 as 1650, 1651 as 1651, 1652 as 1652, 1653 as 1653, 1654 as 1654, 1655 as 1655, 1656 as 1656, 1657 as 1657, 1658 as 1658, 1659 as 1659, 1660 as 1660, 1661 as 1661, 1662 as 1662, 1663 as 1663, 1664 as 1664, 1665 as 1665, 1666 as 1666, 1667 as 1667, 1668 as 1668, 1669 as 1669, 1670 as 1670, 1671 as 1671, 1672 as 1672, 1673 as 1673, 1674 as 1674, 1675 as 1675, 1676 as 1676, 1677 as 1677, 1678 as 1678, 1679 as 1679, 1680 as 1680, 1681 as 1681, 1682 as 1682, 1683 as 1683, 1684 as 1684, 1685 as 1685, 1686 as 1686, 1687 as 1687, 1688 as 1688, 1689 as 1689, 1690 as 1690, 1691 as 1691, 1692 as 1692, 1693 as 1693, 1694 as 1694, 1695 as 1695, 1696 as 1696, 1697 as 1697, 1698 as 1698, 1699 as 1699, 1700 as 1700, 1701 as 1701, 1702 as 1702, 1703 as 1703, 1704 as 1704, 1705 as 1705, 1706 as 1706, 1707 as 1707, 1708 as 1708, 1709 as 1709, 1710 as 1710, 1711 as 1711, 1712 as 1712, 1713 as 1713, 1714 as 1714, 1715 as 1715, 1716 as 1716, 1717 as 1717, 1718 as 1718, 1719 as 1719, 1720 as 1720, 1721 as 1721, 1722 as 1722, 1723 as 1723, 1724 as 1724, 1725 as 1725, 1726 as 1726, 1727 as 1727, 1728 as 1728, 1729 as 1729, 1730 as 1730, 1731 as 1731, 1732 as 1732, 1733 as 1733, 1734 as 1734, 1735 as 1735, 1736 as 1736, 1737 as 1737, 1738 as 1738, 1739 as 1739, 1740 as 1740, 1741 as 1741, 1742 as 1742, 1743 as 1743, 1744 as 1744, 1745 as 1745, 1746 as 1746, 1747 as 1747, 1748 as 1748, 1749 as 1749, 1750 as 1750, 1751 as 1751, 1752 as 1752, 1753 as 1753, 1754 as 1754, 1755 as 1755, 1756 as 1756, 1757 as 1757, 1758 as 1758, 1759 as 1759, 1760 as 1760, 1761 as 1761, 1762 as 1762, 1763 as 1763, 1764 as 1764, 1765 as 1765, 1766 as 1766, 1767 as 1767, 1768 as 1768, 1769 as 1769, 1770 as 1770, 1771 as 1771, 1772 as 1772, 1773 as 1773, 1774 as 1774, 1775 as 1775, 1776 as 1776, 1777 as 1777, 1778 as 1778, 1779 as 1779, 1780 as 1780, 1781 as 1781, 1782 as 1782, 1783 as 1783, 1784 as 1784, 1785 as 1785, 1786 as 1786, 1787 as 1787, 1788 as 1788, 1789 as 1789, 1790 as 1790, 1791 as 1791, 1792 as 1792, 1793 as 1793, 1794 as 1794, 1795 as 1795, 1796 as 1796, 1797 as 1797, 1798 as 1798, 1799 as 1799, 1800 as 1800, 1801 as 1801, 1802 as 1802, 1803 as 1803, 1804 as 1804, 1805 as 1805, 1806 as 1806, 1807 as 1807, 1808 as 1808, 1809 as 1809, 1810 as 1810, 1811 as 1811, 1812 as 1812, 1813 as 1813, 1814 as 1814, 1815 as 1815, 1816 as 1816, 1817 as 1817, 1818 as 1818, 1819 as 1819, 1820 as 1820, 1821 as 1821, 1822 as 1822, 1823 as 1823, 1824 as 1824, 1825 as 1825, 1826 as 1826, 1827 as 1827, 1828 as 1828, 1829 as 1829, 1830 as 1830, 1831 as 1831, 1832 as 1832, 1833 as 1833, 1834 as 1834, 1835 as 1835, 1836 as 1836, 1837 as 1837, 1838 as 1838, 1839 as 1839, 1840 as 1840, 1841 as 1841, 1842 as 1842, 1843 as 1843, 1844 as 1844, 1845 as 1845, 1846 as 1846, 1847 as 1847, 1848 as 1848, 1849 as 1849, 1850 as 1850, 1851 as 1851, 1852 as 1852, 1853 as 1853, 1854 as 1854, 1855 as 1855, 1856 as 1856, 1857 as 1857, 1858 as 1858, 1859 as 1859, 1860 as 1860, 1861 as 1861, 1862 as 1862, 1863 as 1863, 1864 as 1864, 1865 as 1865, 1866 as 1866, 1867 as 1867, 1868 as 1868, 1869 as 1869, 1870 as 1870, 1871 as 1871, 1872 as 1872, 1873 as 1873, 1874 as 1874, 1875 as 1875, 1876 as 1876, 1877 as 1877, 1878 as 1878, 1879 as 1879, 1880 as 1880, 1881 as 1881, 1882 as 1882, 1883 as 1883, 1884 as 1884, 1885 as 1885, 1886 as 1886, 1887 as 1887, 1888 as 1888, 1889 as 1889, 1890 as 1890, 1891 as 1891, 1892 as 1892, 1893 as 1893, 1894 as 1894, 1895 as 1895, 1896 as 1896, 1897 as 1897, 1898 as 1898, 1899 as 1899, 1900 as 1900, 1901 as 1901, 1902 as 1902, 1903 as 1903, 1904 as 1904, 1905 as 1905, 1906 as 1906, 1907 as 1907, 1908 as 1908, 1909 as 1909, 1910 as 1910, 1911 as 1911, 1912 as 1912, 1913 as 1913, 1914 as 1914, 1915 as 1915, 1916 as 1916, 1917 as 1917, 1918 as 1918, 1919 as 1919, 1920 as 1920, 1921 as 1921, 1922 as 1922, 1923 as 1923, 1924 as 1924, 1925 as 1925, 1926 as 1926, 1927 as 1927, 1928 as 1928, 1929 as 1929, 1930 as 1930, 1931 as 1931, 1932 as 1932, 1933 as 1933, 1934 as 1934, 1935 as 1935, 1936 as 1936, 1937 as 1937, 1938 as 1938, 1939 as 1939, 1940 as 1940, 1941 as 1941, 1942 as 1942, 1943 as 1943, 1944 as 1944, 1945 as 1945, 1946 as 1946, 1947 as 1947, 1948 as 1948, 1949 as 1949, 1950 as 1950, 1951 as 1951, 1952 as 1952, 1953 as 1953, 1954 as 1954, 1955 as 1955, 1956 as 1956, 1957 as 1957, 1958 as 1958, 1959 as 1959, 1960 as 1960, 1961 as 1961, 1962 as 1962, 1963 as 1963, 1964 as 1964, 1965 as 1965, 1966 as 1966, 1967 as 1967, 1968 as 1968, 1969 as 1969, 1970 as 1970, 1971 as 1971, 1972 as 1972, 1973 as 1973, 1974 as 1974, 1975 as 1975, 1976 as 1976, 1977 as 1977, 1978 as 1978, 1979 as 1979, 1980 as 1980, 1981 as 1981, 1982 as 1982, 1983 as 1983, 1984 as 1984, 1985 as 1985, 1986 as 1986, 1987 as 1987, 1988 as 1988, 1989 as 1989, 1990 as 1990, 1991 as 1991, 1992 as 1992, 1993 as 1993, 1994 as 1994, 1995 as 1995, 1996 as 1996, 1997 as 1997, 1998 as 1998, 1999 as 1999, 2000 as 2000, 2001 as 2001, 2002 as 2002, 2003 as 2003, 2004 as 2004, 2005 as 2005, 2006 as 2006, 2007 as 2007, 2008 as 2008, 2009 as 2009, 2010 as 2010, 2011 as 2011, 2012 as 2012, 2013 as 2013, 2014 as 2014, 2015 as 2015, 2016 as 2016, 2017 as 2017, 2018 as 2018, 2019 as 2019, 2020 as 2020, 2021 as 2021, 2022 as 2022, 2023 as 2023, 2024 as 2024, 2025 as 2025, 2026 as 2026, 2027 as 2027, 2028 as 2028, 2029 as 2029, 2030 as 2030, 2031 as 2031, 2032 as 2032, 2033 as 2033, 2034 as 2034, 2035 as 2035, 2036 as 2036, 2037 as 2037, 2038 as 2038, 2039 as 2039, 2040 as 2040, 2041 as 2041, 2042 as 2042, 2043 as 2043, 2044 as 2044, 2045 as 2045, 2046 as 2046, 2047 as 2047, 2048 as 2048, 2049 as 2049, 2050 as 2050, 2051 as 2051, 2052 as 2052, 2053 as 2053, 2054 as 2054, 2055 as 2055, 2056 as 2056, 2057 as 2057, 2058 as 2058, 2059 as 2059, 2060 as 2060, 2061 as 2061, 2062 as 2062, 2063 as 2063, 2064 as 2064, 2065 as 2065, 2066 as 2066, 2067 as 2067, 2068 as 2068, 2069 as 2069, 2070 as 2070, 2071 as 2071, 2072 as 2072, 2073 as 2073, 2074 as 2074, 2075 as 2075, 2076 as 2076, 2077 as 2077, 2078 as 2078, 2079 as 2079, 2080 as 2080, 2081 as 2081, 2082 as 2082, 2083 as 2083, 2084 as 2084, 2085 as 2085, 2086 as 2086, 2087 as 2087, 2088 as 2088, 2089 as 2089, 2090 as 2090, 2091 as 2091, 2092 as 2092, 2093 as 2093, 2094 as 2094, 2095 as 2095, 2096 as 2096, 2097 as 2097, 2098 as 2098, 2099 as 2099, 2100 as 2100, 2101 as 2101, 2102 as 2102, 2103 as 2103, 2104 as 2104, 2105 as 2105, 2106 as 2106, 2107 as 2107, 2108 as 2108, 2109 as 2109, 2110 as 2110, 2111 as 2111, 2112 as 2112, 2113 as 2113, 2114 as 2114, 2115 as 2115, 2116 as 2116, 2117 as 2117, 2118 as 2118, 2119 as 2119, 2120 as 2120, 2121 as 2121, 2122 as 2122, 2123 as 2123, 2124 as 2124, 2125 as 2125, 2126 as 2126, 2127 as 2127, 2128 as 2128, 2129 as 2129, 2130 as 2130, 2131 as 2131, 2132 as 2132, 2133 as 2133, 2134 as 2134, 2135 as 2135, 2136 as 2136, 2137 as 2137, 2138 as 2138, 2139 as 2139, 2140 as 2140, 2141 as 2141, 2142 as 2142, 2143 as 2143, 2144 as 2144, 2145 as 2145, 2146 as 2146, 2147 as 2147, 2148 as 2148, 2149 as 2149, 2150 as 2150, 2151 as 2151, 2152 as 2152, 2153 as 2153, 2154 as 2154, 2155 as 2155, 2156 as 2156, 2157 as 2157, 2158 as 2158, 2159 as 2159, 2160 as 2160, 2161 as 2161, 2162 as 2162, 2163 as 2163, 2164 as 2164, 2165 as 2165, 2166 as 2166, 2167 as 2167, 2168 as 2168, 2169 as 2169, 2170 as 2170, 2171 as 2171, 2172 as 2172, 2173 as 2173, 2174 as 2174, 2175 as 2175, 2176 as 2176, 2177 as 2177, 2178 as 2178, 2179 as 2179, 2180 as 2180, 2181 as 2181, 2182 as 2182, 2183 as 2183, 2184 as 2184, 2185 as 2185, 2186 as 2186, 2187 as 2187, 2188 as 2188, 2189 as 2189, 2190 as 2190, 2191 as 2191, 2192 as 2192, 2193 as 2193, 2194 as 2194, 2195 as 2195, 2196 as 2196, 2197 as 2197, 2198 as 2198, 2199 as 2199, 2200 as 2200, 2201 as 2201, 2202 as 2202, 2203 as 2203, 2204 as 2204, 2205 as 2205, 2206 as 2206, 2207 as 2207, 2208 as 2208, 2209 as 2209, 2210 as 2210, 2211 as 2211, 2212 as 2212, 2213 as 2213, 2214 as 2214, 2215 as 2215, 2216 as 2216, 2217 as 2217, 2218 as 2218, 2219 as 2219, 2220 as 2220, 2221 as 2221, 2222 as 2222, 2223 as 2223, 2224 as 2224, 2225 as 2225, 2226 as 2226, 2227 as 2227, 2228 as 2228, 2229 as 2229, 2230 as 2230, 2231 as 2231, 2232 as 2232, 2233 as 2233, 2234 as 2234, 2235 as 2235, 2236 as 2236, 2237 as 2237, 2238 as 2238, 2239 as 2239, 2240 as 2240, 2241 as 2241, 2242 as 2242, 2243 as 2243, 2244 as 2244, 2245 as 2245, 2246 as 2246, 2247 as 2247, 2248 as 2248, 2249 as 2249, 2250 as 2250, 2251 as 2251, 2252 as 2252, 2253 as 2253, 2254 as 2254, 2255 as 2255, 2256 as 2256, 2257 as 2257, 2258 as 2258, 2259 as 2259, 2260 as 2260, 2261 as 2261, 2262 as 2262, 2263 as 2263, 2264 as 2264, 2265 as 2265, 2266 as 2266, 2267 as 2267, 2268 as 2268, 2269 as 2269, 2270 as 2270, 2271 as 2271, 2272 as 2272, 2273 as 2273, 2274 as 2274, 2275 as 2275, 2276 as 2276, 2277 as 2277, 2278 as 2278, 2279 as 2279, 2280 as 2280, 2281 as 2281, 2282 as 2282, 2283 as 2283, 2284 as 2284, 2285 as 2285, 2286 as 2286, 2287 as 2287, 2288 as 2288, 2289 as 2289, 2290 as 2290, 2291 as 2291, 2292 as 2292, 2293 as 2293, 2294 as 2294, 2295 as 2295, 2296 as 2296, 2297 as 2297, 2298 as 2298, 2299 as 2299, 2300 as 2300, 2301 as 2301, 2302 as 2302, 2303 as 2303, 2304 as 2304, 2305 as 2305, 2306 as 2306, 2307 as 2307, 2308 as 2308, 2309 as 2309, 2310 as 2310, 2311 as 2311, 2312 as 2312, 2313 as 2313, 2314 as 2314, 2315 as 2315, 2316 as 2316, 2317 as 2317, 2318 as 2318, 2319 as 2319, 2320 as 2320, 2321 as 2321, 2322 as 2322, 2323 as 2323, 2324 as 2324, 2325 as 2325, 2326 as 2326, 2327 as 2327, 2328 as 2328, 2329 as 2329, 2330 as 2330, 2331 as 2331, 2332 as 2332, 2333 as 2333, 2334 as 2334, 2335 as 2335, 2336 as 2336, 2337 as 2337, 2338 as 2338, 2339 as 2339, 2340 as 2340, 2341 as 2341, 2342 as 2342, 2343 as 2343, 2344 as 2344, 2345 as 2345, 2346 as 2346, 2347 as 2347, 2348 as 2348, 2349 as 2349, 2350 as 2350, 2351 as 2351, 2352 as 2352, 2353 as 2353, 2354 as 2354, 2355 as 2355, 2356 as 2356, 2357 as 2357, 2358 as 2358, 2359 as 2359, 2360 as 2360, 2361 as 2361, 2362 as 2362, 2363 as 2363, 2364 as 2364, 2365 as 2365, 2366 as 2366, 2367 as 2367, 2368 as 2368, 2369 as 2369, 2370 as 2370, 2371 as 2371, 2372 as 2372, 2373 as 2373, 2374 as 2374, 2375 as 2375, 2376 as 2376, 2377 as 2377, 2378 as 2378, 2379 as 2379, 2380 as 2380, 2381 as 2381, 2382 as 2382, 2383 as 2383, 2384 as 2384, 2385 as 2385, 2386 as 2386, 2387 as 2387, 2388 as 2388, 2389 as 2389, 2390 as 2390, 2391 as 2391, 2392 as 2392, 2393 as 2393, 2394 as 2394, 2395 as 2395, 2396 as 2396, 2397 as 2397, 2398 as 2398, 2399 as 2399, 2400 as 2400, 2401 as 2401, 2402 as 2402, 2403 as 2403, 2404 as 2404, 2405 as 2405, 2406 as 2406, 2407 as 2407, 2408 as 2408, 2409 as 2409, 2410 as 2410, 2411 as 2411, 2412 as 2412, 2413 as 2413, 2414 as 2414, 2415 as 2415, 2416 as 2416, 2417 as 2417, 2418 as 2418, 2419 as 2419, 2420 as 2420, 2421 as 2421, 2422 as 2422, 2423 as 2423, 2424 as 2424, 2425 as 2425, 2426 as 2426, 2427 as 2427, 2428 as 2428, 2429 as 2429, 2430 as 2430, 2431 as 2431, 2432 as 2432, 2433 as 2433, 2434 as 2434, 2435 as 2435, 2436 as 2436, 2437 as 2437, 2438 as 2438, 2439 as 2439, 2440 as 2440, 2441 as 2441, 2442 as 2442, 2443 as 2443, 2444 as 2444, 2445 as 2445, 2446 as 2446, 2447 as 2447, 2448 as 2448, 2449 as 2449, 2450 as 2450, 2451 as 2451, 2452 as 2452, 2453 as 2453, 2454 as 2454, 2455 as 2455, 2456 as 2456, 2457 as 2457, 2458 as 2458, 2459 as 2459, 2460 as 2460, 2461 as 2461, 2462 as 2462, 2463 as 2463, 2464 as 2464, 2465 as 2465, 2466 as 2466, 2467 as 2467, 2468 as 2468, 2469 as 2469, 2470 as 2470, 2471 as 2471, 2472 as 2472, 2473 as 2473, 2474 as 2474, 2475 as 2475, 2476 as 2476, 2477 as 2477, 2478 as 2478, 2479 as 2479, 2480 as 2480, 2481 as 2481, 2482 as 2482, 2483 as 2483, 2484 as 2484, 2485 as 2485, 2486 as 2486, 2487 as 2487, 2488 as 2488, 2489 as 2489, 2490 as 2490, 2491 as 2491, 2492 as 2492, 2493 as 2493, 2494 as 2494, 2495 as 2495, 2496 as 2496, 2497 as 2497, 2498 as 2498, 2499 as 2499, 2500 as 2500, 2501 as 2501, 2502 as 2502, 2503 as 2503, 2504 as 2504, 2505 as 2505, 2506 as 2506, 2507 as 2507, 2508 as 2508, 2509 as 2509, 2510 as 2510, 2511 as 2511, 2512 as 2512, 2513 as 2513, 2514 as 2514, 2515 as 2515, 2516 as 2516, 2517 as 2517, 2518 as 2518, 2519 as 2519, 2520 as 2520, 2521 as 2521, 2522 as 2522, 2523 as 2523, 2524 as 2524, 2525 as 2525, 2526 as 2526, 2527 as 2527, 2528 as 2528, 2529 as 2529, 2530 as 2530, 2531 as 2531, 2532 as 2532, 2533 as 2533, 2534 as 2534, 2535 as 2535, 2536 as 2536, 2537 as 2537, 2538 as 2538, 2539 as 2539, 2540 as 2540, 2541 as 2541, 2542 as 2542, 2543 as 2543, 2544 as 2544, 2545 as 2545, 2546 as 2546, 2547 as 2547, 2548 as 2548, 2549 as 2549, 2550 as 2550, 2551 as 2551, 2552 as 2552, 2553 as 2553, 2554 as 2554, 2555 as 2555, 2556 as 2556, 2557 as 2557, 2558 as 2558, 2559 as 2559, 2560 as 2560, 2561 as 2561, 2562 as 2562, 2563 as 2563, 2564 as 2564, 2565 as 2565, 2566 as 2566, 2567 as 2567, 2568 as 2568, 2569 as 2569, 2570 as 2570, 2571 as 2571, 2572 as 2572, 2573 as 2573, 2574 as 2574, 2575 as 2575, 2576 as 2576, 2577 as 2577, 2578 as 2578, 2579 as 2579, 2580 as 2580, 2581 as 2581, 2582 as 2582, 2583 as 2583, 2584 as 2584, 2585 as 2585, 2586 as 2586, 2587 as 2587, 2588 as 2588, 2589 as 2589, 2590 as 2590, 2591 as 2591, 2592 as 2592, 2593 as 2593, 2594 as 2594, 2595 as 2595, 2596 as 2596, 2597 as 2597, 2598 as 2598, 2599 as 2599, 2600 as 2600, 2601 as 2601, 2602 as 2602, 2603 as 2603, 2604 as 2604, 2605 as 2605, 2606 as 2606, 2607 as 2607, 2608 as 2608, 2609 as 2609, 2610 as 2610, 2611 as 2611, 2612 as 2612, 2613 as 2613, 2614 as 2614, 2615 as 2615, 2616 as 2616, 2617 as 2617, 2618 as 2618, 2619 as 2619, 2620 as 2620, 2621 as 2621, 2622 as 2622, 2623 as 2623, 2624 as 2624, 2625 as 2625, 2626 as 2626, 2627 as 2627, 2628 as 2628, 2629 as 2629, 2630 as 2630, 2631 as 2631, 2632 as 2632, 2633 as 2633, 2634 as 2634, 2635 as 2635, 2636 as 2636, 2637 as 2637, 2638 as 2638, 2639 as 2639, 2640 as 2640, 2641 as 2641, 2642 as 2642, 2643 as 2643, 2644 as 2644, 2645 as 2645, 2646 as 2646, 2647 as 2647, 2648 as 2648, 2649 as 2649, 2650 as 2650, 2651 as 2651, 2652 as 2652, 2653 as 2653, 2654 as 2654, 2655 as 2655, 2656 as 2656, 2657 as 2657, 2658 as 2658, 2659 as 2659, 2660 as 2660, 2661 as 2661, 2662 as 2662, 2663 as 2663, 2664 as 2664, 2665 as 2665, 2666 as 2666, 2667 as 2667, 2668 as 2668, 2669 as 2669, 2670 as 2670, 2671 as 2671, 2672 as 2672, 2673 as 2673, 2674 as 2674, 2675 as 2675, 2676 as 2676, 2677 as 2677, 2678 as 2678, 2679 as 2679, 2680 as 2680, 2681 as 2681, 2682 as 2682, 2683 as 2683, 2684 as 2684, 2685 as 2685, 2686 as 2686, 2687 as 2687, 2688 as 2688, 2689 as 2689, 2690 as 2690, 2691 as 2691, 2692 as 2692, 2693 as 2693, 2694 as 2694, 2695 as 2695, 2696 as 2696, 2697 as 2697, 2698 as 2698, 2699 as 2699, 2700 as 2700, 2701 as 2701, 2702 as 2702, 2703 as 2703, 2704 as 2704, 2705 as 2705, 2706 as 2706, 2707 as 2707, 2708 as 2708, 2709 as 2709, 2710 as 2710, 2711 as 2711, 2712 as 2712, 2713 as 2713, 2714 as 2714, 2715 as 2715, 2716 as 2716, 2717 as 2717, 2718 as 2718, 2719 as 2719, 2720 as 2720, 2721 as 2721, 2722 as 2722, 2723 as 2723, 2724 as 2724, 2725 as 2725, 2726 as 2726, 2727 as 2727, 2728 as 2728, 2729 as 2729, 2730 as 2730, 2731 as 2731, 2732 as 2732, 2733 as 2733, 2734 as 2734, 2735 as 2735, 2736 as 2736, 2737 as 2737, 2738 as 2738, 2739 as 2739, 2740 as 2740, 2741 as 2741, 2742 as 2742, 2743 as 2743, 2744 as 2744, 2745 as 2745, 2746 as 2746, 2747 as 2747, 2748 as 2748, 2749 as 2749, 2750 as 2750, 2751 as 2751, 2752 as 2752, 2753 as 2753, 2754 as 2754, 2755 as 2755, 2756 as 2756, 2757 as 2757, 2758 as 2758, 2759 as 2759, 2760 as 2760, 2761 as 2761, 2762 as 2762, 2763 as 2763, 2764 as 2764, 2765 as 2765, 2766 as 2766, 2767 as 2767, 2768 as 2768, 2769 as 2769, 2770 as 2770, 2771 as 2771, 2772 as 2772, 2773 as 2773, 2774 as 2774, 2775 as 2775, 2776 as 2776, 2777 as 2777, 2778 as 2778, 2779 as 2779, 2780 as 2780, 2781 as 2781, 2782 as 2782, 2783 as 2783, 2784 as 2784, 2785 as 2785, 2786 as 2786, 2787 as 2787, 2788 as 2788, 2789 as 2789, 2790 as 2790, 2791 as 2791, 2792 as 2792, 2793 as 2793, 2794 as 2794, 2795 as 2795, 2796 as 2796, 2797 as 2797, 2798 as 2798, 2799 as 2799, 2800 as 2800, 2801 as 2801, 2802 as 2802, 2803 as 2803, 2804 as 2804, 2805 as 2805, 2806 as 2806, 2807 as 2807, 2808 as 2808, 2809 as 2809, 2810 as 2810, 2811 as 2811, 2812 as 2812, 2813 as 2813, 2814 as 2814, 2815 as 2815, 2816 as 2816, 2817 as 2817, 2818 as 2818, 2819 as 2819, 2820 as 2820, 2821 as 2821, 2822 as 2822, 2823 as 2823, 2824 as 2824, 2825 as 2825, 2826 as 2826, 2827 as 2827, 2828 as 2828, 2829 as 2829, 2830 as 2830, 2831 as 2831, 2832 as 2832, 2833 as 2833, 2834 as 2834, 2835 as 2835, 2836 as 2836, 2837 as 2837, 2838 as 2838, 2839 as 2839, 2840 as 2840, 2841 as 2841, 2842 as 2842, 2843 as 2843, 2844 as 2844, 2845 as 2845, 2846 as 2846, 2847 as 2847, 2848 as 2848, 2849 as 2849, 2850 as 2850, 2851 as 2851, 2852 as 2852, 2853 as 2853, 2854 as 2854, 2855 as 2855, 2856 as 2856, 2857 as 2857, 2858 as 2858, 2859 as 2859, 2860 as 2860, 2861 as 2861, 2862 as 2862, 2863 as 2863, 2864 as 2864, 2865 as 2865, 2866 as 2866, 2867 as 2867, 2868 as 2868, 2869 as 2869, 2870 as 2870, 2871 as 2871, 2872 as 2872, 2873 as 2873, 2874 as 2874, 2875 as 2875, 2876 as 2876, 2877 as 2877, 2878 as 2878, 2879 as 2879, 2880 as 2880, 2881 as 2881, 2882 as 2882, 2883 as 2883, 2884 as 2884, 2885 as 2885, 2886 as 2886, 2887 as 2887, 2888 as 2888, 2889 as 2889, 2890 as 2890, 2891 as 2891, 2892 as 2892, 2893 as 2893, 2894 as 2894, 2895 as 2895, 2896 as 2896, 2897 as 2897, 2898 as 2898, 2899 as 2899, 2900 as 2900, 2901 as 2901, 2902 as 2902, 2903 as 2903, 2904 as 2904, 2905 as 2905, 2906 as 2906, 2907 as 2907, 2908 as 2908, 2909 as 2909, 2910 as 2910, 2911 as 2911, 2912 as 2912, 2913 as 2913, 2914 as 2914, 2915 as 2915, 2916 as 2916, 2917 as 2917, 2918 as 2918, 2919 as 2919, 2920 as 2920, 2921 as 2921, 2922 as 2922, 2923 as 2923, 2924 as 2924, 2925 as 2925, 2926 as 2926, 2927 as 2927, 2928 as 2928, 2929 as 2929, 2930 as 2930, 2931 as 2931, 2932 as 2932, 2933 as 2933, 2934 as 2934, 2935 as 2935, 2936 as 2936, 2937 as 2937, 2938 as 2938, 2939 as 2939, 2940 as 2940, 2941 as 2941, 2942 as 2942, 2943 as 2943, 2944 as 2944, 2945 as 2945, 2946 as 2946, 2947 as 2947, 2948 as 2948, 2949 as 2949, 2950 as 2950, 2951 as 2951, 2952 as 2952, 2953 as 2953, 2954 as 2954, 2955 as 2955, 2956 as 2956, 2957 as 2957, 2958 as 2958, 2959 as 2959, 2960 as 2960, 2961 as 2961, 2962 as 2962, 2963 as 2963, 2964 as 2964, 2965 as 2965, 2966 as 2966, 2967 as 2967, 2968 as 2968, 2969 as 2969, 2970 as 2970, 2971 as 2971, 2972 as 2972, 2973 as 2973, 2974 as 2974, 2975 as 2975, 2976 as 2976, 2977 as 2977, 2978 as 2978, 2979 as 2979, 2980 as 2980, 2981 as 2981, 2982 as 2982, 2983 as 2983, 2984 as 2984, 2985 as 2985, 2986 as 2986, 2987 as 2987, 2988 as 2988, 2989 as 2989, 2990 as 2990, 2991 as 2991, 2992 as 2992, 2993 as 2993, 2994 as 2994, 2995 as 2995, 2996 as 2996, 2997 as 2997, 2998 as 2998, 2999 as 2999, 3000 as 3000, 3001 as 3001, 3002 as 3002, 3003 as 3003, 3004 as 3004, 3005 as 3005, 3006 as 3006, 3007 as 3007, 3008 as 3008, 3009 as 3009, 3010 as 3010, 3011 as 3011, 3012 as 3012, 3013 as 3013, 3014 as 3014, 3015 as 3015, 3016 as 3016, 3017 as 3017, 3018 as 3018, 3019 as 3019, 3020 as 3020, 3021 as 3021, 3022 as 3022, 3023 as 3023, 3024 as 3024, 3025 as 3025, 3026 as 3026, 3027 as 3027, 3028 as 3028, 3029 as 3029, 3030 as 3030, 3031 as 3031, 3032 as 3032, 3033 as 3033, 3034 as 3034, 3035 as 3035, 3036 as 3036, 3037 as 3037, 3038 as 3038, 3039 as 3039, 3040 as 3040, 3041 as 3041, 3042 as 3042, 3043 as 3043, 3044 as 3044, 3045 as 3045, 3046 as 3046, 3047 as 3047, 3048 as 3048, 3049 as 3049, 3050 as 3050, 3051 as 3051, 3052 as 3052, 3053 as 3053, 3054 as 3054, 3055 as 3055, 3056 as 3056, 3057 as 3057, 3058 as 3058, 3059 as 3059, 3060 as 3060, 3061 as 3061, 3062 as 3062, 3063 as 3063, 3064 as 3064, 3065 as 3065, 3066 as 3066, 3067 as 3067, 3068 as 3068, 3069 as 3069, 3070 as 3070, 3071 as 3071, 3072 as 3072, 3073 as 3073, 3074 as 3074, 3075 as 3075, 3076 as 3076, 3077 as 3077, 3078 as 3078, 3079 as 3079, 3080 as 3080, 3081 as 3081, 3082 as 3082, 3083 as 3083, 3084 as 3084, 3085 as 3085, 3086 as 3086, 3087 as 3087, 3088 as 3088, 3089 as 3089, 3090 as 3090, 3091 as 3091, 3092 as 3092, 3093 as 3093, 3094 as 3094, 3095 as 3095, 3096 as 3096, 3097 as 3097, 3098 as 3098, 3099 as 3099, 3100 as 3100, 3101 as 3101, 3102 as 3102, 3103 as 3103, 3104 as 3104, 3105 as 3105, 3106 as 3106, 3107 as 3107, 3108 as 3108, 3109 as 3109, 3110 as 3110, 3111 as 3111, 3112 as 3112, 3113 as 3113, 3114 as 3114, 3115 as 3115, 3116 as 3116, 3117 as 3117, 3118 as 3118, 3119 as 3119, 3120 as 3120, 3121 as 3121, 3122 as 3122, 3123 as 3123, 3124 as 3124, 3125 as 3125, 3126 as 3126, 3127 as 3127, 3128 as 3128, 3129 as 3129, 3130 as 3130, 3131 as 3131, 3132 as 3132, 3133 as 3133, 3134 as 3134, 3135 as 3135, 3136 as 3136, 3137 as 3137, 3138 as 3138, 3139 as 3139, 3140 as 3140, 3141 as 3141, 3142 as 3142, 3143 as 3143, 3144 as 3144, 3145 as 3145, 3146 as 3146, 3147 as 3147, 3148 as 3148, 3149 as 3149, 3150 as 3150, 3151 as 3151, 3152 as 3152, 3153 as 3153, 3154 as 3154, 3155 as 3155, 3156 as 3156, 3157 as 3157, 3158 as 3158, 3159 as 3159, 3160 as 3160, 3161 as 3161, 3162 as 3162, 3163 as 3163, 3164 as 3164, 3165 as 3165, 3166 as 3166, 3167 as 3167, 3168 as 3168, 3169 as 3169, 3170 as 3170, 3171 as 3171, 3172 as 3172, 3173 as 3173, 3174 as 3174, 3175 as 3175, 3176 as 3176, 3177 as 3177, 3178 as 3178, 3179 as 3179, 3180 as 3180, 3181 as 3181, 3182 as 3182, 3183 as 3183, 3184 as 3184, 3185 as 3185, 3186 as 3186, 3187 as 3187, 3188 as 3188, 3189 as 3189, 3190 as 3190, 3191 as 3191, 3192 as 3192, 3193 as 3193, 3194 as 3194, 3195 as 3195, 3196 as 3196, 3197 as 3197, 3198 as 3198, 3199 as 3199, 3200 as 3200, 3201 as 3201, 3202 as 3202, 3203 as 3203, 3204 as 3204, 3205 as 3205, 3206 as 3206, 3207 as 3207, 3208 as 3208, 3209 as 3209, 3210 as 3210, 3211 as 3211, 3212 as 3212, 3213 as 3213, 3214 as 3214, 3215 as 3215, 3216 as 3216, 3217 as 3217, 3218 as 3218, 3219 as 3219, 3220 as 3220, 3221 as 3221, 3222 as 3222, 3223 as 3223, 3224 as 3224, 3225 as 3225, 3226 as 3226, 3227 as 3227, 3228 as 3228, 3229 as 3229, 3230 as 3230, 3231 as 3231, 3232 as 3232, 3233 as 3233, 3234 as 3234, 3235 as 3235, 3236 as 3236, 3237 as 3237, 3238 as 3238, 3239 as 3239, 3240 as 3240, 3241 as 3241, 3242 as 3242, 3243 as 3243, 3244 as 3244, 3245 as 3245, 3246 as 3246, 3247 as 3247, 3248 as 3248, 3249 as 3249, 3250 as 3250, 3251 as 3251, 3252 as 3252, 3253 as 3253, 3254 as 3254, 3255 as 3255, 3256 as 3256, 3257 as 3257, 3258 as 3258, 3259 as 3259, 3260 as 3260, 3261 as 3261, 3262 as 3262, 3263 as 3263, 3264 as 3264, 3265 as 3265, 3266 as 3266, 3267 as 3267, 3268 as 3268, 3269 as 3269, 3270 as 3270, 3271 as 3271, 3272 as 3272, 3273 as 3273, 3274 as 3274, 3275 as 3275, 3276 as 3276, 3277 as 3277, 3278 as 3278, 3279 as 3279, 3280 as 3280, 3281 as 3281, 3282 as 3282, 3283 as 3283, 3284 as 3284, 3285 as 3285, 3286 as 3286, 3287 as 3287, 3288 as 3288, 3289 as 3289, 3290 as 3290, 3291 as 3291, 3292 as 3292, 3293 as 3293, 3294 as 3294, 3295 as 3295, 3296 as 3296, 3297 as 3297, 3298 as 3298, 3299 as 3299, 3300 as 3300, 3301 as 3301, 3302 as 3302, 3303 as 3303, 3304 as 3304, 3305 as 3305, 3306 as 3306, 3307 as 3307, 3308 as 3308, 3309 as 3309, 3310 as 3310, 3311 as 3311, 3312 as 3312, 3313 as 3313, 3314 as 3314, 3315 as 3315, 3316 as 3316, 3317 as 3317, 3318 as 3318, 3319 as 3319, 3320 as 3320, 3321 as 3321, 3322 as 3322, 3323 as 3323, 3324 as 3324, 3325 as 3325, 3326 as 3326, 3327 as 3327, 3328 as 3328, 3329 as 3329, 3330 as 3330, 3331 as 3331, 3332 as 3332, 3333 as 3333, 3334 as 3334, 3335 as 3335, 3336 as 3336, 3337 as 3337, 3338 as 3338, 3339 as 3339, 3340 as 3340, 3341 as 3341, 3342 as 3342, 3343 as 3343, 3344 as 3344, 3345 as 3345, 3346 as 3346, 3347 as 3347, 3348 as 3348, 3349 as 3349, 3350 as 3350, 3351 as 3351, 3352 as 3352, 3353 as 3353, 3354 as 3354, 3355 as 3355, 3356 as 3356, 3357 as 3357, 3358 as 3358, 3359 as 3359, 3360 as 3360, 3361 as 3361, 3362 as 3362, 3363 as 3363, 3364 as 3364, 3365 as 3365, 3366 as 3366, 3367 as 3367, 3368 as 3368, 3369 as 3369, 3370 as 3370, 3371 as 3371, 3372 as 3372, 3373 as 3373, 3374 as 3374, 3375 as 3375, 3376 as 3376, 3377 as 3377, 3378 as 3378, 3379 as 3379, 3380 as 3380, 3381 as 3381, 3382 as 3382, 3383 as 3383, 3384 as 3384, 3385 as 3385, 3386 as 3386, 3387 as 3387, 3388 as 3388, 3389 as 3389, 3390 as 3390, 3391 as 3391, 3392 as 3392, 3393 as 3393, 3394 as 3394, 3395 as 3395, 3396 as 3396, 3397 as 3397, 3398 as 3398, 3399 as 3399, 3400 as 3400, 3401 as 3401, 3402 as 3402, 3403 as 3403, 3404 as 3404, 3405 as 3405, 3406 as 3406, 3407 as 3407, 3408 as 3408, 3409 as 3409, 3410 as 3410, 3411 as 3411, 3412 as 3412, 3413 as 3413, 3414 as 3414, 3415 as 3415, 3416 as 3416, 3417 as 3417, 3418 as 3418, 3419 as 3419, 3420 as 3420, 3421 as 3421, 3422 as 3422, 3423 as 3423, 3424 as 3424, 3425 as 3425, 3426 as 3426, 3427 as 3427, 3428 as 3428, 3429 as 3429, 3430 as 3430, 3431 as 3431, 3432 as 3432, 3433 as 3433, 3434 as 3434, 3435 as 3435, 3436 as 3436, 3437 as 3437, 3438 as 3438, 3439 as 3439, 3440 as 3440, 3441 as 3441, 3442 as 3442, 3443 as 3443, 3444 as 3444, 3445 as 3445, 3446 as 3446, 3447 as 3447, 3448 as 3448, 3449 as 3449, 3450 as 3450, 3451 as 3451, 3452 as 3452, 3453 as 3453, 3454 as 3454, 3455 as 3455, 3456 as 3456, 3457 as 3457, 3458 as 3458, 3459 as 3459, 3460 as 3460, 3461 as 3461, 3462 as 3462, 3463 as 3463, 3464 as 3464, 3465 as 3465, 3466 as 3466, 3467 as 3467, 3468 as 3468, 3469 as 3469, 3470 as 3470, 3471 as 3471, 3472 as 3472, 3473 as 3473, 3474 as 3474, 3475 as 3475, 3476 as 3476, 3477 as 3477, 3478 as 3478, 3479 as 3479, 3480 as 3480, 3481 as 3481, 3482 as 3482, 3483 as 3483, 3484 as 3484, 3485 as 3485, 3486 as 3486, 3487 as 3487, 3488 as 3488, 3489 as 3489, 3490 as 3490, 3491 as 3491, 3492 as 3492, 3493 as 3493, 3494 as 3494, 3495 as 3495, 3496 as 3496, 3497 as 3497, 3498 as 3498, 3499 as 3499, 3500 as 3500, 3501 as 3501, 3502 as 3502, 3503 as 3503, 3504 as 3504, 3505 as 3505, 3506 as 3506, 3507 as 3507, 3508 as 3508, 3509 as 3509, 3510 as 3510, 3511 as 3511, 3512 as 3512, 3513 as 3513, 3514 as 3514, 3515 as 3515, 3516 as 3516, 3517 as 3517, 3518 as 3518, 3519 as 3519, 3520 as 3520, 3521 as 3521, 3522 as 3522, 3523 as 3523, 3524 as 3524, 3525 as 3525, 3526 as 3526, 3527 as 3527, 3528 as 3528, 3529 as 3529, 3530 as 3530, 3531 as 3531, 3532 as 3532, 3533 as 3533, 3534 as 3534, 3535 as 3535, 3536 as 3536, 3537 as 3537, 3538 as 3538, 3539 as 3539, 3540 as 3540, 3541 as 3541, 3542 as 3542, 3543 as 3543, 3544 as 3544, 3545 as 3545, 3546 as 3546, 3547 as 3547, 3548 as 3548, 3549 as 3549, 3550 as 3550, 3551 as 3551, 3552 as 3552, 3553 as 3553, 3554 as 3554, 3555 as 3555, 3556 as 3556, 3557 as 3557, 3558 as 3558, 3559 as 3559, 3560 as 3560, 3561 as 3561, 3562 as 3562, 3563 as 3563, 3564 as 3564, 3565 as 3565, 3566 as 3566, 3567 as 3567, 3568 as 3568, 3569 as 3569, 3570 as 3570, 3571 as 3571, 3572 as 3572, 3573 as 3573, 3574 as 3574, 3575 as 3575, 3576 as 3576, 3577 as 3577, 3578 as 3578, 3579 as 3579, 3580 as 3580, 3581 as 3581, 3582 as 3582, 3583 as 3583, 3584 as 3584, 3585 as 3585, 3586 as 3586, 3587 as 3587, 3588 as 3588, 3589 as 3589, 3590 as 3590, 3591 as 3591, 3592 as 3592, 3593 as 3593, 3594 as 3594, 3595 as 3595, 3596 as 3596, 3597 as 3597, 3598 as 3598, 3599 as 3599, 3600 as 3600, 3601 as 3601, 3602 as 3602, 3603 as 3603, 3604 as 3604, 3605 as 3605, 3606 as 3606, 3607 as 3607, 3608 as 3608, 3609 as 3609, 3610 as 3610, 3611 as 3611, 3612 as 3612, 3613 as 3613, 3614 as 3614, 3615 as 3615, 3616 as 3616, 3617 as 3617, 3618 as 3618, 3619 as 3619, 3620 as 3620, 3621 as 3621, 3622 as 3622, 3623 as 3623, 3624 as 3624, 3625 as 3625, 3626 as 3626, 3627 as 3627, 3628 as 3628, 3629 as 3629, 3630 as 3630, 3631 as 3631, 3632 as 3632, 3633 as 3633, 3634 as 3634, 3635 as 3635, 3636 as 3636, 3637 as 3637, 3638 as 3638, 3639 as 3639, 3640 as 3640, 3641 as 3641, 3642 as 3642, 3643 as 3643, 3644 as 3644, 3645 as 3645, 3646 as 3646, 3647 as 3647, 3648 as 3648, 3649 as 3649, 3650 as 3650, 3651 as 3651, 3652 as 3652, 3653 as 3653, 3654 as 3654, 3655 as 3655, 3656 as 3656, 3657 as 3657, 3658 as 3658, 3659 as 3659, 3660 as 3660, 3661 as 3661, 3662 as 3662, 3663 as 3663, 3664 as 3664, 3665 as 3665, 3666 as 3666, 3667 as 3667, 3668 as 3668, 3669 as 3669, 3670 as 3670, 3671 as 3671, 3672 as 3672, 3673 as 3673, 3674 as 3674, 3675 as 3675, 3676 as 3676, 3677 as 3677, 3678 as 3678, 3679 as 3679, 3680 as 3680, 3681 as 3681, 3682 as 3682, 3683 as 3683, 3684 as 3684, 3685 as 3685, 3686 as 3686, 3687 as 3687, 3688 as 3688, 3689 as 3689, 3690 as 3690, 3691 as 3691, 3692 as 3692, 3693 as 3693, 3694 as 3694, 3695 as 3695, 3696 as 3696, 3697 as 3697, 3698 as 3698, 3699 as 3699, 3700 as 3700, 3701 as 3701, 3702 as 3702, 3703 as 3703, 3704 as 3704, 3705 as 3705, 3706 as 3706, 3707 as 3707, 3708 as 3708, 3709 as 3709, 3710 as 3710, 3711 as 3711, 3712 as 3712, 3713 as 3713, 3714 as 3714, 3715 as 3715, 3716 as 3716, 3717 as 3717, 3718 as 3718, 3719 as 3719, 3720 as 3720, 3721 as 3721, 3722 as 3722, 3723 as 3723, 3724 as 3724, 3725 as 3725, 3726 as 3726, 3727 as 3727, 3728 as 3728, 3729 as 3729, 3730 as 3730, 3731 as 3731, 3732 as 3732, 3733 as 3733, 3734 as 3734, 3735 as 3735, 3736 as 3736, 3737 as 3737, 3738 as 3738, 3739 as 3739, 3740 as 3740, 3741 as 3741, 3742 as 3742, 3743 as 3743, 3744 as 3744, 3745 as 3745, 3746 as 3746, 3747 as 3747, 3748 as 3748, 3749 as 3749, 3750 as 3750, 3751 as 3751, 3752 as 3752, 3753 as 3753, 3754 as 3754, 3755 as 3755, 3756 as 3756, 3757 as 3757, 3758 as 3758, 3759 as 3759, 3760 as 3760, 3761 as 3761, 3762 as 3762, 3763 as 3763, 3764 as 3764, 3765 as 3765, 3766 as 3766, 3767 as 3767, 3768 as 3768, 3769 as 3769, 3770 as 3770, 3771 as 3771, 3772 as 3772, 3773 as 3773, 3774 as 3774, 3775 as 3775, 3776 as 3776, 3777 as 3777, 3778 as 3778, 3779 as 3779, 3780 as 3780, 3781 as 3781, 3782 as 3782, 3783 as 3783, 3784 as 3784, 3785 as 3785, 3786 as 3786, 3787 as 3787, 3788 as 3788, 3789 as 3789, 3790 as 3790, 3791 as 3791, 3792 as 3792, 3793 as 3793, 3794 as 3794, 3795 as 3795, 3796 as 3796, 3797 as 3797, 3798 as 3798, 3799 as 3799, 3800 as 3800, 3801 as 3801, 3802 as 3802, 3803 as 3803, 3804 as 3804, 3805 as 3805, 3806 as 3806, 3807 as 3807, 3808 as 3808, 3809 as 3809, 3810 as 3810, 3811 as 3811, 3812 as 3812, 3813 as 3813, 3814 as 3814, 3815 as 3815, 3816 as 3816, 3817 as 3817, 3818 as 3818, 3819 as 3819, 3820 as 3820, 3821 as 3821, 3822 as 3822, 3823 as 3823, 3824 as 3824, 3825 as 3825, 3826 as 3826, 3827 as 3827, 3828 as 3828, 3829 as 3829, 3830 as 3830, 3831 as 3831, 3832 as 3832, 3833 as 3833, 3834 as 3834, 3835 as 3835, 3836 as 3836, 3837 as 3837, 3838 as 3838, 3839 as 3839, 3840 as 3840, 3841 as 3841, 3842 as 3842, 3843 as 3843, 3844 as 3844, 3845 as 3845, 3846 as 3846, 3847 as 3847, 3848 as 3848, 3849 as 3849, 3850 as 3850, 3851 as 3851, 3852 as 3852, 3853 as 3853, 3854 as 3854, 3855 as 3855, 3856 as 3856, 3857 as 3857, 3858 as 3858, 3859 as 3859, 3860 as 3860, 3861 as 3861, 3862 as 3862, 3863 as 3863, 3864 as 3864, 3865 as 3865, 3866 as 3866, 3867 as 3867, 3868 as 3868, 3869 as 3869, 3870 as 3870, 3871 as 3871, 3872 as 3872, 3873 as 3873, 3874 as 3874, 3875 as 3875, 3876 as 3876, 3877 as 3877, 3878 as 3878, 3879 as 3879, 3880 as 3880, 3881 as 3881, 3882 as 3882, 3883 as 3883, 3884 as 3884, 3885 as 3885, 3886 as 3886, 3887 as 3887, 3888 as 3888, 3889 as 3889, 3890 as 3890, 3891 as 3891, 3892 as 3892, 3893 as 3893, 3894 as 3894, 3895 as 3895, 3896 as 3896, 3897 as 3897, 3898 as 3898, 3899 as 3899, 3900 as 3900, 3901 as 3901, 3902 as 3902, 3903 as 3903, 3904 as 3904, 3905 as 3905, 3906 as 3906, 3907 as 3907, 3908 as 3908, 3909 as 3909, 3910 as 3910, 3911 as 3911, 3912 as 3912, 3913 as 3913, 3914 as 3914, 3915 as 3915, 3916 as 3916, 3917 as 3917, 3918 as 3918, 3919 as 3919, 3920 as 3920, 3921 as 3921, 3922 as 3922, 3923 as 3923, 3924 as 3924, 3925 as 3925, 3926 as 3926, 3927 as 3927, 3928 as 3928, 3929 as 3929, 3930 as 3930, 3931 as 3931, 3932 as 3932, 3933 as 3933, 3934 as 3934, 3935 as 3935, 3936 as 3936, 3937 as 3937, 3938 as 3938, 3939 as 3939, 3940 as 3940, 3941 as 3941, 3942 as 3942, 3943 as 3943, 3944 as 3944, 3945 as 3945, 3946 as 3946, 3947 as 3947, 3948 as 3948, 3949 as 3949, 3950 as 3950, 3951 as 3951, 3952 as 3952, 3953 as 3953, 3954 as 3954, 3955 as 3955, 3956 as 3956, 3957 as 3957, 3958 as 3958, 3959 as 3959, 3960 as 3960, 3961 as 3961, 3962 as 3962, 3963 as 3963, 3964 as 3964, 3965 as 3965, 3966 as 3966, 3967 as 3967, 3968 as 3968, 3969 as 3969, 3970 as 3970, 3971 as 3971, 3972 as 3972, 3973 as 3973, 3974 as 3974, 3975 as 3975, 3976 as 3976, 3977 as 3977, 3978 as 3978, 3979 as 3979, 3980 as 3980, 3981 as 3981, 3982 as 3982, 3983 as 3983, 3984 as 3984, 3985 as 3985, 3986 as 3986, 3987 as 3987, 3988 as 3988, 3989 as 3989, 3990 as 3990, 3991 as 3991, 3992 as 3992, 3993 as 3993, 3994 as 3994, 3995 as 3995, 3996 as 3996, 3997 as 3997, 3998 as 3998, 3999 as 3999, 4000 as 4000, 4001 as 4001, 4002 as 4002, 4003 as 4003, 4004 as 4004, 4005 as 4005, 4006 as 4006, 4007 as 4007, 4008 as 4008, 4009 as 4009, 4010 as 4010, 4011 as 4011, 4012 as 4012, 4013 as 4013, 4014 as 4014, 4015 as 4015, 4016 as 4016, 4017 as 4017, 4018 as 4018, 4019 as 4019, 4020 as 4020, 4021 as 4021, 4022 as 4022, 4023 as 4023, 4024 as 4024, 4025 as 4025, 4026 as 4026, 4027 as 4027, 4028 as 4028, 4029 as 4029, 4030 as 4030, 4031 as 4031, 4032 as 4032, 4033 as 4033, 4034 as 4034, 4035 as 4035, 4036 as 4036, 4037 as 4037, 4038 as 4038, 4039 as 4039, 4040 as 4040, 4041 as 4041, 4042 as 4042, 4043 as 4043, 4044 as 4044, 4045 as 4045, 4046 as 4046, 4047 as 4047, 4048 as 4048, 4049 as 4049, 4050 as 4050, 4051 as 4051, 4052 as 4052, 4053 as 4053, 4054 as 4054, 4055 as 4055, 4056 as 4056, 4057 as 4057, 4058 as 4058, 4059 as 4059, 4060 as 4060, 4061 as 4061, 4062 as 4062, 4063 as 4063, 4064 as 4064, 4065 as 4065, 4066 as 4066, 4067 as 4067, 4068 as 4068, 4069 as 4069, 4070 as 4070, 4071 as 4071, 4072 as 4072, 4073 as 4073, 4074 as 4074, 4075 as 4075, 4076 as 4076, 4077 as 4077, 4078 as 4078, 4079 as 4079, 4080 as 4080, 4081 as 4081, 4082 as 4082, 4083 as 4083, 4084 as 4084, 4085 as 4085, 4086 as 4086, 4087 as 4087, 4088 as 4088, 4089 as 4089, 4090 as 4090, 4091 as 4091, 4092 as 4092, 4093 as 4093, 4094 as 4094, 4095 as 4095, 4096 as 4096, 4097 as 4097, 4098 as 4098, 4099 as 4099, 4100 as 4100, 4101 as 4101, 4102 as 4102, 4103 as 4103, 4104 as 4104, 4105 as 4105, 4106 as 4106, 4107 as 4107, 4108 as 4108, 4109 as 4109, 4110 as 4110, 4111 as 4111, 4112 as 4112, 4113 as 4113, 4114 as 4114, 4115 as 4115, 4116 as 4116, 4117 as 4117, 4118 as 4118, 4119 as 4119, 4120 as 4120, 4121 as 4121, 4122 as 4122, 4123 as 4123, 4124 as 4124, 4125 as 4125, 4126 as 4126, 4127 as 4127, 4128 as 4128, 4129 as 4129, 4130 as 4130, 4131 as 4131, 4132 as 4132, 4133 as 4133, 4134 as 4134, 4135 as 4135, 4136 as 4136, 4137 as 4137, 4138 as 4138, 4139 as 4139, 4140 as 4140, 4141 as 4141, 4142 as 4142, 4143 as 4143, 4144 as 4144, 4145 as 4145, 4146 as 4146, 4147 as 4147, 4148 as 4148, 4149 as 4149, 4150 as 4150, 4151 as 4151, 4152 as 4152, 4153 as 4153, 4154 as 4154, 4155 as 4155, 4156 as 4156, 4157 as 4157, 4158 as 4158, 4159 as 4159, 4160 as 4160, 4161 as 4161, 4162 as 4162, 4163 as 4163, 4164 as 4164, 4165 as 4165, 4166 as 4166, 4167 as 4167, 4168 as 4168, 4169 as 4169, 4170 as 4170, 4171 as 4171, 4172 as 4172, 4173 as 4173, 4174 as 4174, 4175 as 4175, 4176 as 4176, 4177 as 4177, 4178 as 4178, 4179 as 4179, 4180 as 4180, 4181 as 4181, 4182 as 4182, 4183 as 4183, 4184 as 4184, 4185 as 4185, 4186 as 4186, 4187 as 4187, 4188 as 4188, 4189 as 4189, 4190 as 4190, 4191 as 4191, 4192 as 4192, 4193 as 4193, 4194 as 4194, 4195 as 4195, 4196 as 4196, 4197 as 4197, 4198 as 4198, 4199 as 4199, 4200 as 4200, 4201 as 4201, 4202 as 4202, 4203 as 4203, 4204 as 4204, 4205 as 4205, 4206 as 4206, 4207 as 4207, 4208 as 4208, 4209 as 4209, 4210 as 4210, 4211 as 4211, 4212 as 4212, 4213 as 4213, 4214 as 4214, 4215 as 4215, 4216 as 4216, 4217 as 4217, 4218 as 4218, 4219 as 4219, 4220 as 4220, 4221 as 4221, 4222 as 4222, 4223 as 4223, 4224 as 4224, 4225 as 4225, 4226 as 4226, 4227 as 4227, 4228 as 4228, 4229 as 4229, 4230 as 4230, 4231 as 4231, 4232 as 4232, 4233 as 4233, 4234 as 4234, 4235 as 4235, 4236 as 4236, 4237 as 4237, 4238 as 4238, 4239 as 4239, 4240 as 4240, 4241 as 4241, 4242 as 4242, 4243 as 4243, 4244 as 4244, 4245 as 4245, 4246 as 4246, 4247 as 4247, 4248 as 4248, 4249 as 4249, 4250 as 4250, 4251 as 4251, 4252 as 4252, 4253 as 4253, 4254 as 4254, 4255 as 4255, 4256 as 4256, 4257 as 4257, 4258 as 4258, 4259 as 4259, 4260 as 4260, 4261 as 4261, 4262 as 4262, 4263 as 4263, 4264 as 4264, 4265 as 4265, 4266 as 4266, 4267 as 4267, 4268 as 4268, 4269 as 4269, 4270 as 4270, 4271 as 4271, 4272 as 4272, 4273 as 4273, 4274 as 4274, 4275 as 4275, 4276 as 4276, 4277 as 4277, 4278 as 4278, 4279 as 4279, 4280 as 4280, 4281 as 4281, 4282 as 4282, 4283 as 4283, 4284 as 4284, 4285 as 4285, 4286 as 4286, 4287 as 4287, 4288 as 4288, 4289 as 4289, 4290 as 4290, 4291 as 4291, 4292 as 4292, 4293 as 4293, 4294 as 4294, 4295 as 4295, 4296 as 4296, 4297 as 4297, 4298 as 4298, 4299 as 4299, 4300 as 4300, 4301 as 4301, 4302 as 4302, 4303 as 4303, 4304 as 4304, 4305 as 4305, 4306 as 4306, 4307 as 4307, 4308 as 4308, 4309 as 4309, 4310 as 4310, 4311 as 4311, 4312 as 4312, 4313 as 4313, 4314 as 4314, 4315 as 4315, 4316 as 4316, 4317 as 4317, 4318 as 4318, 4319 as 4319, 4320 as 4320, 4321 as 4321, 4322 as 4322, 4323 as 4323, 4324 as 4324, 4325 as 4325, 4326 as 4326, 4327 as 4327, 4328 as 4328, 4329 as 4329, 4330 as 4330, 4331 as 4331, 4332 as 4332, 4333 as 4333, 4334 as 4334, 4335 as 4335, 4336 as 4336, 4337 as 4337, 4338 as 4338, 4339 as 4339, 4340 as 4340, 4341 as 4341, 4342 as 4342, 4343 as 4343, 4344 as 4344, 4345 as 4345, 4346 as 4346, 4347 as 4347, 4348 as 4348, 4349 as 4349, 4350 as 4350, 4351 as 4351, 4352 as 4352, 4353 as 4353, 4354 as 4354, 4355 as 4355, 4356 as 4356, 4357 as 4357, 4358 as 4358, 4359 as 4359, 4360 as 4360, 4361 as 4361, 4362 as 4362, 4363 as 4363, 4364 as 4364, 4365 as 4365, 4366 as 4366, 4367 as 4367, 4368 as 4368, 4369 as 4369, 4370 as 4370, 4371 as 4371, 4372 as 4372, 4373 as 4373, 4374 as 4374, 4375 as 4375, 4376 as 4376, 4377 as 4377, 4378 as 4378, 4379 as 4379, 4380 as 4380, 4381 as 4381, 4382 as 4382, 4383 as 4383, 4384 as 4384, 4385 as 4385, 4386 as 4386, 4387 as 4387, 4388 as 4388, 4389 as 4389, 4390 as 4390, 4391 as 4391, 4392 as 4392, 4393 as 4393, 4394 as 4394, 4395 as 4395, 4396 as 4396, 4397 as 4397, 4398 as 4398, 4399 as 4399, 4400 as 4400, 4401 as 4401, 4402 as 4402, 4403 as 4403, 4404 as 4404, 4405 as 4405, 4406 as 4406, 4407 as 4407, 4408 as 4408, 4409 as 4409, 4410 as 4410, 4411 as 4411, 4412 as 4412, 4413 as 4413, 4414 as 4414, 4415 as 4415, 4416 as 4416, 4417 as 4417, 4418 as 4418, 4419 as 4419, 4420 as 4420, 4421 as 4421, 4422 as 4422, 4423 as 4423, 4424 as 4424, 4425 as 4425, 4426 as 4426, 4427 as 4427, 4428 as 4428, 4429 as 4429, 4430 as 4430, 4431 as 4431, 4432 as 4432, 4433 as 4433, 4434 as 4434, 4435 as 4435, 4436 as 4436, 4437 as 4437, 4438 as 4438, 4439 as 4439, 4440 as 4440, 4441 as 4441, 4442 as 4442, 4443 as 4443, 4444 as 4444, 4445 as 4445, 4446 as 4446, 4447 as 4447, 4448 as 4448, 4449 as 4449, 4450 as 4450, 4451 as 4451, 4452 as 4452, 4453 as 4453, 4454 as 4454, 4455 as 4455, 4456 as 4456, 4457 as 4457, 4458 as 4458, 4459 as 4459, 4460 as 4460, 4461 as 4461, 4462 as 4462, 4463 as 4463, 4464 as 4464, 4465 as 4465, 4466 as 4466, 4467 as 4467, 4468 as 4468, 4469 as 4469, 4470 as 4470, 4471 as 4471, 4472 as 4472, 4473 as 4473, 4474 as 4474, 4475 as 4475, 4476 as 4476, 4477 as 4477, 4478 as 4478, 4479 as 4479, 4480 as 4480, 4481 as 4481, 4482 as 4482, 4483 as 4483, 4484 as 4484, 4485 as 4485, 4486 as 4486, 4487 as 4487, 4488 as 4488, 4489 as 4489, 4490 as 4490, 4491 as 4491, 4492 as 4492, 4493 as 4493, 4494 as 4494, 4495 as 4495, 4496 as 4496, 4497 as 4497, 4498 as 4498, 4499 as 4499, 4500 as 4500, 4501 as 4501, 4502 as 4502, 4503 as 4503, 4504 as 4504, 4505 as 4505, 4506 as 4506, 4507 as 4507, 4508 as 4508, 4509 as 4509, 4510 as 4510, 4511 as 4511, 4512 as 4512, 4513 as 4513, 4514 as 4514, 4515 as 4515, 4516 as 4516, 4517 as 4517, 4518 as 4518, 4519 as 4519, 4520 as 4520, 4521 as 4521, 4522 as 4522, 4523 as 4523, 4524 as 4524, 4525 as 4525, 4526 as 4526, 4527 as 4527, 4528 as 4528, 4529 as 4529, 4530 as 4530, 4531 as 4531, 4532 as 4532, 4533 as 4533, 4534 as 4534, 4535 as 4535, 4536 as 4536, 4537 as 4537, 4538 as 4538, 4539 as 4539, 4540 as 4540, 4541 as 4541, 4542 as 4542, 4543 as 4543, 4544 as 4544, 4545 as 4545, 4546 as 4546, 4547 as 4547, 4548 as 4548, 4549 as 4549, 4550 as 4550, 4551 as 4551, 4552 as 4552, 4553 as 4553, 4554 as 4554, 4555 as 4555, 4556 as 4556, 4557 as 4557, 4558 as 4558, 4559 as 4559, 4560 as 4560, 4561 as 4561, 4562 as 4562, 4563 as 4563, 4564 as 4564, 4565 as 4565, 4566 as 4566, 4567 as 4567, 4568 as 4568, 4569 as 4569, 4570 as 4570, 4571 as 4571, 4572 as 4572, 4573 as 4573, 4574 as 4574, 4575 as 4575, 4576 as 4576, 4577 as 4577, 4578 as 4578, 4579 as 4579, 4580 as 4580, 4581 as 4581, 4582 as 4582, 4583 as 4583, 4584 as 4584, 4585 as 4585, 4586 as 4586, 4587 as 4587, 4588 as 4588, 4589 as 4589, 4590 as 4590, 4591 as 4591, 4592 as 4592, 4593 as 4593, 4594 as 4594, 4595 as 4595, 4596 as 4596, 4597 as 4597, 4598 as 4598, 4599 as 4599, 4600 as 4600, 4601 as 4601, 4602 as 4602, 4603 as 4603, 4604 as 4604, 4605 as 4605, 4606 as 4606, 4607 as 4607, 4608 as 4608, 4609 as 4609, 4610 as 4610, 4611 as 4611, 4612 as 4612, 4613 as 4613, 4614 as 4614, 4615 as 4615, 4616 as 4616, 4617 as 4617, 4618 as 4618, 4619 as 4619, 4620 as 4620, 4621 as 4621, 4622 as 4622, 4623 as 4623, 4624 as 4624, 4625 as 4625, 4626 as 4626, 4627 as 4627, 4628 as 4628, 4629 as 4629, 4630 as 4630, 4631 as 4631, 4632 as 4632, 4633 as 4633, 4634 as 4634, 4635 as 4635, 4636 as 4636, 4637 as 4637, 4638 as 4638, 4639 as 4639, 4640 as 4640, 4641 as 4641, 4642 as 4642, 4643 as 4643, 4644 as 4644, 4645 as 4645, 4646 as 4646, 4647 as 4647, 4648 as 4648, 4649 as 4649, 4650 as 4650, 4651 as 4651, 4652 as 4652, 4653 as 4653, 4654 as 4654, 4655 as 4655, 4656 as 4656, 4657 as 4657, 4658 as 4658, 4659 as 4659, 4660 as 4660, 4661 as 4661, 4662 as 4662, 4663 as 4663, 4664 as 4664, 4665 as 4665, 4666 as 4666, 4667 as 4667, 4668 as 4668, 4669 as 4669, 4670 as 4670, 4671 as 4671, 4672 as 4672, 4673 as 4673, 4674 as 4674, 4675 as 4675, 4676 as 4676, 4677 as 4677, 4678 as 4678, 4679 as 4679, 4680 as 4680, 4681 as 4681, 4682 as 4682, 4683 as 4683, 4684 as 4684, 4685 as 4685, 4686 as 4686, 4687 as 4687, 4688 as 4688, 4689 as 4689, 4690 as 4690, 4691 as 4691, 4692 as 4692, 4693 as 4693, 4694 as 4694, 4695 as 4695, 4696 as 4696, 4697 as 4697, 4698 as 4698, 4699 as 4699, 4700 as 4700, 4701 as 4701, 4702 as 4702, 4703 as 4703, 4704 as 4704, 4705 as 4705, 4706 as 4706, 4707 as 4707, 4708 as 4708, 4709 as 4709, 4710 as 4710, 4711 as 4711, 4712 as 4712, 4713 as 4713, 4714 as 4714, 4715 as 4715, 4716 as 4716, 4717 as 4717, 4718 as 4718, 4719 as 4719, 4720 as 4720, 4721 as 4721, 4722 as 4722, 4723 as 4723, 4724 as 4724, 4725 as 4725, 4726 as 4726, 4727 as 4727, 4728 as 4728, 4729 as 4729, 4730 as 4730, 4731 as 4731, 4732 as 4732, 4733 as 4733, 4734 as 4734, 4735 as 4735, 4736 as 4736, 4737 as 4737, 4738 as 4738, 4739 as 4739, 4740 as 4740, 4741 as 4741, 4742 as 4742, 4743 as 4743, 4744 as 4744, 4745 as 4745, 4746 as 4746, 4747 as 4747, 4748 as 4748, 4749 as 4749, 4750 as 4750, 4751 as 4751, 4752 as 4752, 4753 as 4753, 4754 as 4754, 4755 as 4755, 4756 as 4756, 4757 as 4757, 4758 as 4758, 4759 as 4759, 4760 as 4760, 4761 as 4761, 4762 as 4762, 4763 as 4763, 4764 as 4764, 4765 as 4765, 4766 as 4766, 4767 as 4767, 4768 as 4768, 4769 as 4769, 4770 as 4770, 4771 as 4771, 4772 as 4772, 4773 as 4773, 4774 as 4774, 4775 as 4775, 4776 as 4776, 4777 as 4777, 4778 as 4778, 4779 as 4779, 4780 as 4780, 4781 as 4781, 4782 as 4782, 4783 as 4783, 4784 as 4784, 4785 as 4785, 4786 as 4786, 4787 as 4787, 4788 as 4788, 4789 as 4789, 4790 as 4790, 4791 as 4791, 4792 as 4792, 4793 as 4793, 4794 as 4794, 4795 as 4795, 4796 as 4796, 4797 as 4797, 4798 as 4798, 4799 as 4799, 4800 as 4800, 4801 as 4801, 4802 as 4802, 4803 as 4803, 4804 as 4804, 4805 as 4805, 4806 as 4806, 4807 as 4807, 4808 as 4808, 4809 as 4809, 4810 as 4810, 4811 as 4811, 4812 as 4812, 4813 as 4813, 4814 as 4814, 4815 as 4815, 4816 as 4816, 4817 as 4817, 4818 as 4818, 4819 as 4819, 4820 as 4820, 4821 as 4821, 4822 as 4822, 4823 as 4823, 4824 as 4824, 4825 as 4825, 4826 as 4826, 4827 as 4827, 4828 as 4828, 4829 as 4829, 4830 as 4830, 4831 as 4831, 4832 as 4832, 4833 as 4833, 4834 as 4834, 4835 as 4835, 4836 as 4836, 4837 as 4837, 4838 as 4838, 4839 as 4839, 4840 as 4840, 4841 as 4841, 4842 as 4842, 4843 as 4843, 4844 as 4844, 4845 as 4845, 4846 as 4846, 4847 as 4847, 4848 as 4848, 4849 as 4849, 4850 as 4850, 4851 as 4851, 4852 as 4852, 4853 as 4853, 4854 as 4854, 4855 as 4855, 4856 as 4856, 4857 as 4857, 4858 as 4858, 4859 as 4859, 4860 as 4860, 4861 as 4861, 4862 as 4862, 4863 as 4863, 4864 as 4864, 4865 as 4865, 4866 as 4866, 4867 as 4867, 4868 as 4868, 4869 as 4869, 4870 as 4870, 4871 as 4871, 4872 as 4872, 4873 as 4873, 4874 as 4874, 4875 as 4875, 4876 as 4876, 4877 as 4877, 4878 as 4878, 4879 as 4879, 4880 as 4880, 4881 as 4881, 4882 as 4882, 4883 as 4883, 4884 as 4884, 4885 as 4885, 4886 as 4886, 4887 as 4887, 4888 as 4888, 4889 as 4889, 4890 as 4890, 4891 as 4891, 4892 as 4892, 4893 as 4893, 4894 as 4894, 4895 as 4895, 4896 as 4896, 4897 as 4897, 4898 as 4898, 4899 as 4899, 4900 as 4900, 4901 as 4901, 4902 as 4902, 4903 as 4903, 4904 as 4904, 4905 as 4905, 4906 as 4906, 4907 as 4907, 4908 as 4908, 4909 as 4909, 4910 as 4910, 4911 as 4911, 4912 as 4912, 4913 as 4913, 4914 as 4914, 4915 as 4915, 4916 as 4916, 4917 as 4917, 4918 as 4918, 4919 as 4919, 4920 as 4920, 4921 as 4921, 4922 as 4922, 4923 as 4923, 4924 as 4924, 4925 as 4925, 4926 as 4926, 4927 as 4927, 4928 as 4928, 4929 as 4929, 4930 as 4930, 4931 as 4931, 4932 as 4932, 4933 as 4933, 4934 as 4934, 4935 as 4935, 4936 as 4936, 4937 as 4937, 4938 as 4938, 4939 as 4939, 4940 as 4940, 4941 as 4941, 4942 as 4942, 4943 as 4943, 4944 as 4944, 4945 as 4945, 4946 as 4946, 4947 as 4947, 4948 as 4948, 4949 as 4949, 4950 as 4950, 4951 as 4951, 4952 as 4952, 4953 as 4953, 4954 as 4954, 4955 as 4955, 4956 as 4956, 4957 as 4957, 4958 as 4958, 4959 as 4959, 4960 as 4960, 4961 as 4961, 4962 as 4962, 4963 as 4963, 4964 as 4964, 4965 as 4965, 4966 as 4966, 4967 as 4967, 4968 as 4968, 4969 as 4969, 4970 as 4970, 4971 as 4971, 4972 as 4972, 4973 as 4973, 4974 as 4974, 4975 as 4975, 4976 as 4976, 4977 as 4977, 4978 as 4978, 4979 as 4979, 4980 as 4980, 4981 as 4981, 4982 as 4982, 4983 as 4983, 4984 as 4984, 4985 as 4985, 4986 as 4986, 4987 as 4987, 4988 as 4988, 4989 as 4989, 4990 as 4990, 4991 as 4991, 4992 as 4992, 4993 as 4993, 4994 as 4994, 4995 as 4995, 4996 as 4996, 4997 as 4997, 4998 as 4998, 4999 as 4999, 5000 as 5000, 5001 as 5001,] : (0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | 461 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 496 | 497 | 498 | 499 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 509 | 510 | 511 | 512 | 513 | 514 | 515 | 516 | 517 | 518 | 519 | 520 | 521 | 522 | 523 | 524 | 525 | 526 | 527 | 528 | 529 | 530 | 531 | 532 | 533 | 534 | 535 | 536 | 537 | 538 | 539 | 540 | 541 | 542 | 543 | 544 | 545 | 546 | 547 | 548 | 549 | 550 | 551 | 552 | 553 | 554 | 555 | 556 | 557 | 558 | 559 | 560 | 561 | 562 | 563 | 564 | 565 | 566 | 567 | 568 | 569 | 570 | 571 | 572 | 573 | 574 | 575 | 576 | 577 | 578 | 579 | 580 | 581 | 582 | 583 | 584 | 585 | 586 | 587 | 588 | 589 | 590 | 591 | 592 | 593 | 594 | 595 | 596 | 597 | 598 | 599 | 600 | 601 | 602 | 603 | 604 | 605 | 606 | 607 | 608 | 609 | 610 | 611 | 612 | 613 | 614 | 615 | 616 | 617 | 618 | 619 | 620 | 621 | 622 | 623 | 624 | 625 | 626 | 627 | 628 | 629 | 630 | 631 | 632 | 633 | 634 | 635 | 636 | 637 | 638 | 639 | 640 | 641 | 642 | 643 | 644 | 645 | 646 | 647 | 648 | 649 | 650 | 651 | 652 | 653 | 654 | 655 | 656 | 657 | 658 | 659 | 660 | 661 | 662 | 663 | 664 | 665 | 666 | 667 | 668 | 669 | 670 | 671 | 672 | 673 | 674 | 675 | 676 | 677 | 678 | 679 | 680 | 681 | 682 | 683 | 684 | 685 | 686 | 687 | 688 | 689 | 690 | 691 | 692 | 693 | 694 | 695 | 696 | 697 | 698 | 699 | 700 | 701 | 702 | 703 | 704 | 705 | 706 | 707 | 708 | 709 | 710 | 711 | 712 | 713 | 714 | 715 | 716 | 717 | 718 | 719 | 720 | 721 | 722 | 723 | 724 | 725 | 726 | 727 | 728 | 729 | 730 | 731 | 732 | 733 | 734 | 735 | 736 | 737 | 738 | 739 | 740 | 741 | 742 | 743 | 744 | 745 | 746 | 747 | 748 | 749 | 750 | 751 | 752 | 753 | 754 | 755 | 756 | 757 | 758 | 759 | 760 | 761 | 762 | 763 | 764 | 765 | 766 | 767 | 768 | 769 | 770 | 771 | 772 | 773 | 774 | 775 | 776 | 777 | 778 | 779 | 780 | 781 | 782 | 783 | 784 | 785 | 786 | 787 | 788 | 789 | 790 | 791 | 792 | 793 | 794 | 795 | 796 | 797 | 798 | 799 | 800 | 801 | 802 | 803 | 804 | 805 | 806 | 807 | 808 | 809 | 810 | 811 | 812 | 813 | 814 | 815 | 816 | 817 | 818 | 819 | 820 | 821 | 822 | 823 | 824 | 825 | 826 | 827 | 828 | 829 | 830 | 831 | 832 | 833 | 834 | 835 | 836 | 837 | 838 | 839 | 840 | 841 | 842 | 843 | 844 | 845 | 846 | 847 | 848 | 849 | 850 | 851 | 852 | 853 | 854 | 855 | 856 | 857 | 858 | 859 | 860 | 861 | 862 | 863 | 864 | 865 | 866 | 867 | 868 | 869 | 870 | 871 | 872 | 873 | 874 | 875 | 876 | 877 | 878 | 879 | 880 | 881 | 882 | 883 | 884 | 885 | 886 | 887 | 888 | 889 | 890 | 891 | 892 | 893 | 894 | 895 | 896 | 897 | 898 | 899 | 900 | 901 | 902 | 903 | 904 | 905 | 906 | 907 | 908 | 909 | 910 | 911 | 912 | 913 | 914 | 915 | 916 | 917 | 918 | 919 | 920 | 921 | 922 | 923 | 924 | 925 | 926 | 927 | 928 | 929 | 930 | 931 | 932 | 933 | 934 | 935 | 936 | 937 | 938 | 939 | 940 | 941 | 942 | 943 | 944 | 945 | 946 | 947 | 948 | 949 | 950 | 951 | 952 | 953 | 954 | 955 | 956 | 957 | 958 | 959 | 960 | 961 | 962 | 963 | 964 | 965 | 966 | 967 | 968 | 969 | 970 | 971 | 972 | 973 | 974 | 975 | 976 | 977 | 978 | 979 | 980 | 981 | 982 | 983 | 984 | 985 | 986 | 987 | 988 | 989 | 990 | 991 | 992 | 993 | 994 | 995 | 996 | 997 | 998 | 999 | 1000 | 1001 | 1002 | 1003 | 1004 | 1005 | 1006 | 1007 | 1008 | 1009 | 1010 | 1011 | 1012 | 1013 | 1014 | 1015 | 1016 | 1017 | 1018 | 1019 | 1020 | 1021 | 1022 | 1023 | 1024 | 1025 | 1026 | 1027 | 1028 | 1029 | 1030 | 1031 | 1032 | 1033 | 1034 | 1035 | 1036 | 1037 | 1038 | 1039 | 1040 | 1041 | 1042 | 1043 | 1044 | 1045 | 1046 | 1047 | 1048 | 1049 | 1050 | 1051 | 1052 | 1053 | 1054 | 1055 | 1056 | 1057 | 1058 | 1059 | 1060 | 1061 | 1062 | 1063 | 1064 | 1065 | 1066 | 1067 | 1068 | 1069 | 1070 | 1071 | 1072 | 1073 | 1074 | 1075 | 1076 | 1077 | 1078 | 1079 | 1080 | 1081 | 1082 | 1083 | 1084 | 1085 | 1086 | 1087 | 1088 | 1089 | 1090 | 1091 | 1092 | 1093 | 1094 | 1095 | 1096 | 1097 | 1098 | 1099 | 1100 | 1101 | 1102 | 1103 | 1104 | 1105 | 1106 | 1107 | 1108 | 1109 | 1110 | 1111 | 1112 | 1113 | 1114 | 1115 | 1116 | 1117 | 1118 | 1119 | 1120 | 1121 | 1122 | 1123 | 1124 | 1125 | 1126 | 1127 | 1128 | 1129 | 1130 | 1131 | 1132 | 1133 | 1134 | 1135 | 1136 | 1137 | 1138 | 1139 | 1140 | 1141 | 1142 | 1143 | 1144 | 1145 | 1146 | 1147 | 1148 | 1149 | 1150 | 1151 | 1152 | 1153 | 1154 | 1155 | 1156 | 1157 | 1158 | 1159 | 1160 | 1161 | 1162 | 1163 | 1164 | 1165 | 1166 | 1167 | 1168 | 1169 | 1170 | 1171 | 1172 | 1173 | 1174 | 1175 | 1176 | 1177 | 1178 | 1179 | 1180 | 1181 | 1182 | 1183 | 1184 | 1185 | 1186 | 1187 | 1188 | 1189 | 1190 | 1191 | 1192 | 1193 | 1194 | 1195 | 1196 | 1197 | 1198 | 1199 | 1200 | 1201 | 1202 | 1203 | 1204 | 1205 | 1206 | 1207 | 1208 | 1209 | 1210 | 1211 | 1212 | 1213 | 1214 | 1215 | 1216 | 1217 | 1218 | 1219 | 1220 | 1221 | 1222 | 1223 | 1224 | 1225 | 1226 | 1227 | 1228 | 1229 | 1230 | 1231 | 1232 | 1233 | 1234 | 1235 | 1236 | 1237 | 1238 | 1239 | 1240 | 1241 | 1242 | 1243 | 1244 | 1245 | 1246 | 1247 | 1248 | 1249 | 1250 | 1251 | 1252 | 1253 | 1254 | 1255 | 1256 | 1257 | 1258 | 1259 | 1260 | 1261 | 1262 | 1263 | 1264 | 1265 | 1266 | 1267 | 1268 | 1269 | 1270 | 1271 | 1272 | 1273 | 1274 | 1275 | 1276 | 1277 | 1278 | 1279 | 1280 | 1281 | 1282 | 1283 | 1284 | 1285 | 1286 | 1287 | 1288 | 1289 | 1290 | 1291 | 1292 | 1293 | 1294 | 1295 | 1296 | 1297 | 1298 | 1299 | 1300 | 1301 | 1302 | 1303 | 1304 | 1305 | 1306 | 1307 | 1308 | 1309 | 1310 | 1311 | 1312 | 1313 | 1314 | 1315 | 1316 | 1317 | 1318 | 1319 | 1320 | 1321 | 1322 | 1323 | 1324 | 1325 | 1326 | 1327 | 1328 | 1329 | 1330 | 1331 | 1332 | 1333 | 1334 | 1335 | 1336 | 1337 | 1338 | 1339 | 1340 | 1341 | 1342 | 1343 | 1344 | 1345 | 1346 | 1347 | 1348 | 1349 | 1350 | 1351 | 1352 | 1353 | 1354 | 1355 | 1356 | 1357 | 1358 | 1359 | 1360 | 1361 | 1362 | 1363 | 1364 | 1365 | 1366 | 1367 | 1368 | 1369 | 1370 | 1371 | 1372 | 1373 | 1374 | 1375 | 1376 | 1377 | 1378 | 1379 | 1380 | 1381 | 1382 | 1383 | 1384 | 1385 | 1386 | 1387 | 1388 | 1389 | 1390 | 1391 | 1392 | 1393 | 1394 | 1395 | 1396 | 1397 | 1398 | 1399 | 1400 | 1401 | 1402 | 1403 | 1404 | 1405 | 1406 | 1407 | 1408 | 1409 | 1410 | 1411 | 1412 | 1413 | 1414 | 1415 | 1416 | 1417 | 1418 | 1419 | 1420 | 1421 | 1422 | 1423 | 1424 | 1425 | 1426 | 1427 | 1428 | 1429 | 1430 | 1431 | 1432 | 1433 | 1434 | 1435 | 1436 | 1437 | 1438 | 1439 | 1440 | 1441 | 1442 | 1443 | 1444 | 1445 | 1446 | 1447 | 1448 | 1449 | 1450 | 1451 | 1452 | 1453 | 1454 | 1455 | 1456 | 1457 | 1458 | 1459 | 1460 | 1461 | 1462 | 1463 | 1464 | 1465 | 1466 | 1467 | 1468 | 1469 | 1470 | 1471 | 1472 | 1473 | 1474 | 1475 | 1476 | 1477 | 1478 | 1479 | 1480 | 1481 | 1482 | 1483 | 1484 | 1485 | 1486 | 1487 | 1488 | 1489 | 1490 | 1491 | 1492 | 1493 | 1494 | 1495 | 1496 | 1497 | 1498 | 1499 | 1500 | 1501 | 1502 | 1503 | 1504 | 1505 | 1506 | 1507 | 1508 | 1509 | 1510 | 1511 | 1512 | 1513 | 1514 | 1515 | 1516 | 1517 | 1518 | 1519 | 1520 | 1521 | 1522 | 1523 | 1524 | 1525 | 1526 | 1527 | 1528 | 1529 | 1530 | 1531 | 1532 | 1533 | 1534 | 1535 | 1536 | 1537 | 1538 | 1539 | 1540 | 1541 | 1542 | 1543 | 1544 | 1545 | 1546 | 1547 | 1548 | 1549 | 1550 | 1551 | 1552 | 1553 | 1554 | 1555 | 1556 | 1557 | 1558 | 1559 | 1560 | 1561 | 1562 | 1563 | 1564 | 1565 | 1566 | 1567 | 1568 | 1569 | 1570 | 1571 | 1572 | 1573 | 1574 | 1575 | 1576 | 1577 | 1578 | 1579 | 1580 | 1581 | 1582 | 1583 | 1584 | 1585 | 1586 | 1587 | 1588 | 1589 | 1590 | 1591 | 1592 | 1593 | 1594 | 1595 | 1596 | 1597 | 1598 | 1599 | 1600 | 1601 | 1602 | 1603 | 1604 | 1605 | 1606 | 1607 | 1608 | 1609 | 1610 | 1611 | 1612 | 1613 | 1614 | 1615 | 1616 | 1617 | 1618 | 1619 | 1620 | 1621 | 1622 | 1623 | 1624 | 1625 | 1626 | 1627 | 1628 | 1629 | 1630 | 1631 | 1632 | 1633 | 1634 | 1635 | 1636 | 1637 | 1638 | 1639 | 1640 | 1641 | 1642 | 1643 | 1644 | 1645 | 1646 | 1647 | 1648 | 1649 | 1650 | 1651 | 1652 | 1653 | 1654 | 1655 | 1656 | 1657 | 1658 | 1659 | 1660 | 1661 | 1662 | 1663 | 1664 | 1665 | 1666 | 1667 | 1668 | 1669 | 1670 | 1671 | 1672 | 1673 | 1674 | 1675 | 1676 | 1677 | 1678 | 1679 | 1680 | 1681 | 1682 | 1683 | 1684 | 1685 | 1686 | 1687 | 1688 | 1689 | 1690 | 1691 | 1692 | 1693 | 1694 | 1695 | 1696 | 1697 | 1698 | 1699 | 1700 | 1701 | 1702 | 1703 | 1704 | 1705 | 1706 | 1707 | 1708 | 1709 | 1710 | 1711 | 1712 | 1713 | 1714 | 1715 | 1716 | 1717 | 1718 | 1719 | 1720 | 1721 | 1722 | 1723 | 1724 | 1725 | 1726 | 1727 | 1728 | 1729 | 1730 | 1731 | 1732 | 1733 | 1734 | 1735 | 1736 | 1737 | 1738 | 1739 | 1740 | 1741 | 1742 | 1743 | 1744 | 1745 | 1746 | 1747 | 1748 | 1749 | 1750 | 1751 | 1752 | 1753 | 1754 | 1755 | 1756 | 1757 | 1758 | 1759 | 1760 | 1761 | 1762 | 1763 | 1764 | 1765 | 1766 | 1767 | 1768 | 1769 | 1770 | 1771 | 1772 | 1773 | 1774 | 1775 | 1776 | 1777 | 1778 | 1779 | 1780 | 1781 | 1782 | 1783 | 1784 | 1785 | 1786 | 1787 | 1788 | 1789 | 1790 | 1791 | 1792 | 1793 | 1794 | 1795 | 1796 | 1797 | 1798 | 1799 | 1800 | 1801 | 1802 | 1803 | 1804 | 1805 | 1806 | 1807 | 1808 | 1809 | 1810 | 1811 | 1812 | 1813 | 1814 | 1815 | 1816 | 1817 | 1818 | 1819 | 1820 | 1821 | 1822 | 1823 | 1824 | 1825 | 1826 | 1827 | 1828 | 1829 | 1830 | 1831 | 1832 | 1833 | 1834 | 1835 | 1836 | 1837 | 1838 | 1839 | 1840 | 1841 | 1842 | 1843 | 1844 | 1845 | 1846 | 1847 | 1848 | 1849 | 1850 | 1851 | 1852 | 1853 | 1854 | 1855 | 1856 | 1857 | 1858 | 1859 | 1860 | 1861 | 1862 | 1863 | 1864 | 1865 | 1866 | 1867 | 1868 | 1869 | 1870 | 1871 | 1872 | 1873 | 1874 | 1875 | 1876 | 1877 | 1878 | 1879 | 1880 | 1881 | 1882 | 1883 | 1884 | 1885 | 1886 | 1887 | 1888 | 1889 | 1890 | 1891 | 1892 | 1893 | 1894 | 1895 | 1896 | 1897 | 1898 | 1899 | 1900 | 1901 | 1902 | 1903 | 1904 | 1905 | 1906 | 1907 | 1908 | 1909 | 1910 | 1911 | 1912 | 1913 | 1914 | 1915 | 1916 | 1917 | 1918 | 1919 | 1920 | 1921 | 1922 | 1923 | 1924 | 1925 | 1926 | 1927 | 1928 | 1929 | 1930 | 1931 | 1932 | 1933 | 1934 | 1935 | 1936 | 1937 | 1938 | 1939 | 1940 | 1941 | 1942 | 1943 | 1944 | 1945 | 1946 | 1947 | 1948 | 1949 | 1950 | 1951 | 1952 | 1953 | 1954 | 1955 | 1956 | 1957 | 1958 | 1959 | 1960 | 1961 | 1962 | 1963 | 1964 | 1965 | 1966 | 1967 | 1968 | 1969 | 1970 | 1971 | 1972 | 1973 | 1974 | 1975 | 1976 | 1977 | 1978 | 1979 | 1980 | 1981 | 1982 | 1983 | 1984 | 1985 | 1986 | 1987 | 1988 | 1989 | 1990 | 1991 | 1992 | 1993 | 1994 | 1995 | 1996 | 1997 | 1998 | 1999 | 2000 | 2001 | 2002 | 2003 | 2004 | 2005 | 2006 | 2007 | 2008 | 2009 | 2010 | 2011 | 2012 | 2013 | 2014 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 | 2021 | 2022 | 2023 | 2024 | 2025 | 2026 | 2027 | 2028 | 2029 | 2030 | 2031 | 2032 | 2033 | 2034 | 2035 | 2036 | 2037 | 2038 | 2039 | 2040 | 2041 | 2042 | 2043 | 2044 | 2045 | 2046 | 2047 | 2048 | 2049 | 2050 | 2051 | 2052 | 2053 | 2054 | 2055 | 2056 | 2057 | 2058 | 2059 | 2060 | 2061 | 2062 | 2063 | 2064 | 2065 | 2066 | 2067 | 2068 | 2069 | 2070 | 2071 | 2072 | 2073 | 2074 | 2075 | 2076 | 2077 | 2078 | 2079 | 2080 | 2081 | 2082 | 2083 | 2084 | 2085 | 2086 | 2087 | 2088 | 2089 | 2090 | 2091 | 2092 | 2093 | 2094 | 2095 | 2096 | 2097 | 2098 | 2099 | 2100 | 2101 | 2102 | 2103 | 2104 | 2105 | 2106 | 2107 | 2108 | 2109 | 2110 | 2111 | 2112 | 2113 | 2114 | 2115 | 2116 | 2117 | 2118 | 2119 | 2120 | 2121 | 2122 | 2123 | 2124 | 2125 | 2126 | 2127 | 2128 | 2129 | 2130 | 2131 | 2132 | 2133 | 2134 | 2135 | 2136 | 2137 | 2138 | 2139 | 2140 | 2141 | 2142 | 2143 | 2144 | 2145 | 2146 | 2147 | 2148 | 2149 | 2150 | 2151 | 2152 | 2153 | 2154 | 2155 | 2156 | 2157 | 2158 | 2159 | 2160 | 2161 | 2162 | 2163 | 2164 | 2165 | 2166 | 2167 | 2168 | 2169 | 2170 | 2171 | 2172 | 2173 | 2174 | 2175 | 2176 | 2177 | 2178 | 2179 | 2180 | 2181 | 2182 | 2183 | 2184 | 2185 | 2186 | 2187 | 2188 | 2189 | 2190 | 2191 | 2192 | 2193 | 2194 | 2195 | 2196 | 2197 | 2198 | 2199 | 2200 | 2201 | 2202 | 2203 | 2204 | 2205 | 2206 | 2207 | 2208 | 2209 | 2210 | 2211 | 2212 | 2213 | 2214 | 2215 | 2216 | 2217 | 2218 | 2219 | 2220 | 2221 | 2222 | 2223 | 2224 | 2225 | 2226 | 2227 | 2228 | 2229 | 2230 | 2231 | 2232 | 2233 | 2234 | 2235 | 2236 | 2237 | 2238 | 2239 | 2240 | 2241 | 2242 | 2243 | 2244 | 2245 | 2246 | 2247 | 2248 | 2249 | 2250 | 2251 | 2252 | 2253 | 2254 | 2255 | 2256 | 2257 | 2258 | 2259 | 2260 | 2261 | 2262 | 2263 | 2264 | 2265 | 2266 | 2267 | 2268 | 2269 | 2270 | 2271 | 2272 | 2273 | 2274 | 2275 | 2276 | 2277 | 2278 | 2279 | 2280 | 2281 | 2282 | 2283 | 2284 | 2285 | 2286 | 2287 | 2288 | 2289 | 2290 | 2291 | 2292 | 2293 | 2294 | 2295 | 2296 | 2297 | 2298 | 2299 | 2300 | 2301 | 2302 | 2303 | 2304 | 2305 | 2306 | 2307 | 2308 | 2309 | 2310 | 2311 | 2312 | 2313 | 2314 | 2315 | 2316 | 2317 | 2318 | 2319 | 2320 | 2321 | 2322 | 2323 | 2324 | 2325 | 2326 | 2327 | 2328 | 2329 | 2330 | 2331 | 2332 | 2333 | 2334 | 2335 | 2336 | 2337 | 2338 | 2339 | 2340 | 2341 | 2342 | 2343 | 2344 | 2345 | 2346 | 2347 | 2348 | 2349 | 2350 | 2351 | 2352 | 2353 | 2354 | 2355 | 2356 | 2357 | 2358 | 2359 | 2360 | 2361 | 2362 | 2363 | 2364 | 2365 | 2366 | 2367 | 2368 | 2369 | 2370 | 2371 | 2372 | 2373 | 2374 | 2375 | 2376 | 2377 | 2378 | 2379 | 2380 | 2381 | 2382 | 2383 | 2384 | 2385 | 2386 | 2387 | 2388 | 2389 | 2390 | 2391 | 2392 | 2393 | 2394 | 2395 | 2396 | 2397 | 2398 | 2399 | 2400 | 2401 | 2402 | 2403 | 2404 | 2405 | 2406 | 2407 | 2408 | 2409 | 2410 | 2411 | 2412 | 2413 | 2414 | 2415 | 2416 | 2417 | 2418 | 2419 | 2420 | 2421 | 2422 | 2423 | 2424 | 2425 | 2426 | 2427 | 2428 | 2429 | 2430 | 2431 | 2432 | 2433 | 2434 | 2435 | 2436 | 2437 | 2438 | 2439 | 2440 | 2441 | 2442 | 2443 | 2444 | 2445 | 2446 | 2447 | 2448 | 2449 | 2450 | 2451 | 2452 | 2453 | 2454 | 2455 | 2456 | 2457 | 2458 | 2459 | 2460 | 2461 | 2462 | 2463 | 2464 | 2465 | 2466 | 2467 | 2468 | 2469 | 2470 | 2471 | 2472 | 2473 | 2474 | 2475 | 2476 | 2477 | 2478 | 2479 | 2480 | 2481 | 2482 | 2483 | 2484 | 2485 | 2486 | 2487 | 2488 | 2489 | 2490 | 2491 | 2492 | 2493 | 2494 | 2495 | 2496 | 2497 | 2498 | 2499 | 2500 | 2501 | 2502 | 2503 | 2504 | 2505 | 2506 | 2507 | 2508 | 2509 | 2510 | 2511 | 2512 | 2513 | 2514 | 2515 | 2516 | 2517 | 2518 | 2519 | 2520 | 2521 | 2522 | 2523 | 2524 | 2525 | 2526 | 2527 | 2528 | 2529 | 2530 | 2531 | 2532 | 2533 | 2534 | 2535 | 2536 | 2537 | 2538 | 2539 | 2540 | 2541 | 2542 | 2543 | 2544 | 2545 | 2546 | 2547 | 2548 | 2549 | 2550 | 2551 | 2552 | 2553 | 2554 | 2555 | 2556 | 2557 | 2558 | 2559 | 2560 | 2561 | 2562 | 2563 | 2564 | 2565 | 2566 | 2567 | 2568 | 2569 | 2570 | 2571 | 2572 | 2573 | 2574 | 2575 | 2576 | 2577 | 2578 | 2579 | 2580 | 2581 | 2582 | 2583 | 2584 | 2585 | 2586 | 2587 | 2588 | 2589 | 2590 | 2591 | 2592 | 2593 | 2594 | 2595 | 2596 | 2597 | 2598 | 2599 | 2600 | 2601 | 2602 | 2603 | 2604 | 2605 | 2606 | 2607 | 2608 | 2609 | 2610 | 2611 | 2612 | 2613 | 2614 | 2615 | 2616 | 2617 | 2618 | 2619 | 2620 | 2621 | 2622 | 2623 | 2624 | 2625 | 2626 | 2627 | 2628 | 2629 | 2630 | 2631 | 2632 | 2633 | 2634 | 2635 | 2636 | 2637 | 2638 | 2639 | 2640 | 2641 | 2642 | 2643 | 2644 | 2645 | 2646 | 2647 | 2648 | 2649 | 2650 | 2651 | 2652 | 2653 | 2654 | 2655 | 2656 | 2657 | 2658 | 2659 | 2660 | 2661 | 2662 | 2663 | 2664 | 2665 | 2666 | 2667 | 2668 | 2669 | 2670 | 2671 | 2672 | 2673 | 2674 | 2675 | 2676 | 2677 | 2678 | 2679 | 2680 | 2681 | 2682 | 2683 | 2684 | 2685 | 2686 | 2687 | 2688 | 2689 | 2690 | 2691 | 2692 | 2693 | 2694 | 2695 | 2696 | 2697 | 2698 | 2699 | 2700 | 2701 | 2702 | 2703 | 2704 | 2705 | 2706 | 2707 | 2708 | 2709 | 2710 | 2711 | 2712 | 2713 | 2714 | 2715 | 2716 | 2717 | 2718 | 2719 | 2720 | 2721 | 2722 | 2723 | 2724 | 2725 | 2726 | 2727 | 2728 | 2729 | 2730 | 2731 | 2732 | 2733 | 2734 | 2735 | 2736 | 2737 | 2738 | 2739 | 2740 | 2741 | 2742 | 2743 | 2744 | 2745 | 2746 | 2747 | 2748 | 2749 | 2750 | 2751 | 2752 | 2753 | 2754 | 2755 | 2756 | 2757 | 2758 | 2759 | 2760 | 2761 | 2762 | 2763 | 2764 | 2765 | 2766 | 2767 | 2768 | 2769 | 2770 | 2771 | 2772 | 2773 | 2774 | 2775 | 2776 | 2777 | 2778 | 2779 | 2780 | 2781 | 2782 | 2783 | 2784 | 2785 | 2786 | 2787 | 2788 | 2789 | 2790 | 2791 | 2792 | 2793 | 2794 | 2795 | 2796 | 2797 | 2798 | 2799 | 2800 | 2801 | 2802 | 2803 | 2804 | 2805 | 2806 | 2807 | 2808 | 2809 | 2810 | 2811 | 2812 | 2813 | 2814 | 2815 | 2816 | 2817 | 2818 | 2819 | 2820 | 2821 | 2822 | 2823 | 2824 | 2825 | 2826 | 2827 | 2828 | 2829 | 2830 | 2831 | 2832 | 2833 | 2834 | 2835 | 2836 | 2837 | 2838 | 2839 | 2840 | 2841 | 2842 | 2843 | 2844 | 2845 | 2846 | 2847 | 2848 | 2849 | 2850 | 2851 | 2852 | 2853 | 2854 | 2855 | 2856 | 2857 | 2858 | 2859 | 2860 | 2861 | 2862 | 2863 | 2864 | 2865 | 2866 | 2867 | 2868 | 2869 | 2870 | 2871 | 2872 | 2873 | 2874 | 2875 | 2876 | 2877 | 2878 | 2879 | 2880 | 2881 | 2882 | 2883 | 2884 | 2885 | 2886 | 2887 | 2888 | 2889 | 2890 | 2891 | 2892 | 2893 | 2894 | 2895 | 2896 | 2897 | 2898 | 2899 | 2900 | 2901 | 2902 | 2903 | 2904 | 2905 | 2906 | 2907 | 2908 | 2909 | 2910 | 2911 | 2912 | 2913 | 2914 | 2915 | 2916 | 2917 | 2918 | 2919 | 2920 | 2921 | 2922 | 2923 | 2924 | 2925 | 2926 | 2927 | 2928 | 2929 | 2930 | 2931 | 2932 | 2933 | 2934 | 2935 | 2936 | 2937 | 2938 | 2939 | 2940 | 2941 | 2942 | 2943 | 2944 | 2945 | 2946 | 2947 | 2948 | 2949 | 2950 | 2951 | 2952 | 2953 | 2954 | 2955 | 2956 | 2957 | 2958 | 2959 | 2960 | 2961 | 2962 | 2963 | 2964 | 2965 | 2966 | 2967 | 2968 | 2969 | 2970 | 2971 | 2972 | 2973 | 2974 | 2975 | 2976 | 2977 | 2978 | 2979 | 2980 | 2981 | 2982 | 2983 | 2984 | 2985 | 2986 | 2987 | 2988 | 2989 | 2990 | 2991 | 2992 | 2993 | 2994 | 2995 | 2996 | 2997 | 2998 | 2999 | 3000 | 3001 | 3002 | 3003 | 3004 | 3005 | 3006 | 3007 | 3008 | 3009 | 3010 | 3011 | 3012 | 3013 | 3014 | 3015 | 3016 | 3017 | 3018 | 3019 | 3020 | 3021 | 3022 | 3023 | 3024 | 3025 | 3026 | 3027 | 3028 | 3029 | 3030 | 3031 | 3032 | 3033 | 3034 | 3035 | 3036 | 3037 | 3038 | 3039 | 3040 | 3041 | 3042 | 3043 | 3044 | 3045 | 3046 | 3047 | 3048 | 3049 | 3050 | 3051 | 3052 | 3053 | 3054 | 3055 | 3056 | 3057 | 3058 | 3059 | 3060 | 3061 | 3062 | 3063 | 3064 | 3065 | 3066 | 3067 | 3068 | 3069 | 3070 | 3071 | 3072 | 3073 | 3074 | 3075 | 3076 | 3077 | 3078 | 3079 | 3080 | 3081 | 3082 | 3083 | 3084 | 3085 | 3086 | 3087 | 3088 | 3089 | 3090 | 3091 | 3092 | 3093 | 3094 | 3095 | 3096 | 3097 | 3098 | 3099 | 3100 | 3101 | 3102 | 3103 | 3104 | 3105 | 3106 | 3107 | 3108 | 3109 | 3110 | 3111 | 3112 | 3113 | 3114 | 3115 | 3116 | 3117 | 3118 | 3119 | 3120 | 3121 | 3122 | 3123 | 3124 | 3125 | 3126 | 3127 | 3128 | 3129 | 3130 | 3131 | 3132 | 3133 | 3134 | 3135 | 3136 | 3137 | 3138 | 3139 | 3140 | 3141 | 3142 | 3143 | 3144 | 3145 | 3146 | 3147 | 3148 | 3149 | 3150 | 3151 | 3152 | 3153 | 3154 | 3155 | 3156 | 3157 | 3158 | 3159 | 3160 | 3161 | 3162 | 3163 | 3164 | 3165 | 3166 | 3167 | 3168 | 3169 | 3170 | 3171 | 3172 | 3173 | 3174 | 3175 | 3176 | 3177 | 3178 | 3179 | 3180 | 3181 | 3182 | 3183 | 3184 | 3185 | 3186 | 3187 | 3188 | 3189 | 3190 | 3191 | 3192 | 3193 | 3194 | 3195 | 3196 | 3197 | 3198 | 3199 | 3200 | 3201 | 3202 | 3203 | 3204 | 3205 | 3206 | 3207 | 3208 | 3209 | 3210 | 3211 | 3212 | 3213 | 3214 | 3215 | 3216 | 3217 | 3218 | 3219 | 3220 | 3221 | 3222 | 3223 | 3224 | 3225 | 3226 | 3227 | 3228 | 3229 | 3230 | 3231 | 3232 | 3233 | 3234 | 3235 | 3236 | 3237 | 3238 | 3239 | 3240 | 3241 | 3242 | 3243 | 3244 | 3245 | 3246 | 3247 | 3248 | 3249 | 3250 | 3251 | 3252 | 3253 | 3254 | 3255 | 3256 | 3257 | 3258 | 3259 | 3260 | 3261 | 3262 | 3263 | 3264 | 3265 | 3266 | 3267 | 3268 | 3269 | 3270 | 3271 | 3272 | 3273 | 3274 | 3275 | 3276 | 3277 | 3278 | 3279 | 3280 | 3281 | 3282 | 3283 | 3284 | 3285 | 3286 | 3287 | 3288 | 3289 | 3290 | 3291 | 3292 | 3293 | 3294 | 3295 | 3296 | 3297 | 3298 | 3299 | 3300 | 3301 | 3302 | 3303 | 3304 | 3305 | 3306 | 3307 | 3308 | 3309 | 3310 | 3311 | 3312 | 3313 | 3314 | 3315 | 3316 | 3317 | 3318 | 3319 | 3320 | 3321 | 3322 | 3323 | 3324 | 3325 | 3326 | 3327 | 3328 | 3329 | 3330 | 3331 | 3332 | 3333 | 3334 | 3335 | 3336 | 3337 | 3338 | 3339 | 3340 | 3341 | 3342 | 3343 | 3344 | 3345 | 3346 | 3347 | 3348 | 3349 | 3350 | 3351 | 3352 | 3353 | 3354 | 3355 | 3356 | 3357 | 3358 | 3359 | 3360 | 3361 | 3362 | 3363 | 3364 | 3365 | 3366 | 3367 | 3368 | 3369 | 3370 | 3371 | 3372 | 3373 | 3374 | 3375 | 3376 | 3377 | 3378 | 3379 | 3380 | 3381 | 3382 | 3383 | 3384 | 3385 | 3386 | 3387 | 3388 | 3389 | 3390 | 3391 | 3392 | 3393 | 3394 | 3395 | 3396 | 3397 | 3398 | 3399 | 3400 | 3401 | 3402 | 3403 | 3404 | 3405 | 3406 | 3407 | 3408 | 3409 | 3410 | 3411 | 3412 | 3413 | 3414 | 3415 | 3416 | 3417 | 3418 | 3419 | 3420 | 3421 | 3422 | 3423 | 3424 | 3425 | 3426 | 3427 | 3428 | 3429 | 3430 | 3431 | 3432 | 3433 | 3434 | 3435 | 3436 | 3437 | 3438 | 3439 | 3440 | 3441 | 3442 | 3443 | 3444 | 3445 | 3446 | 3447 | 3448 | 3449 | 3450 | 3451 | 3452 | 3453 | 3454 | 3455 | 3456 | 3457 | 3458 | 3459 | 3460 | 3461 | 3462 | 3463 | 3464 | 3465 | 3466 | 3467 | 3468 | 3469 | 3470 | 3471 | 3472 | 3473 | 3474 | 3475 | 3476 | 3477 | 3478 | 3479 | 3480 | 3481 | 3482 | 3483 | 3484 | 3485 | 3486 | 3487 | 3488 | 3489 | 3490 | 3491 | 3492 | 3493 | 3494 | 3495 | 3496 | 3497 | 3498 | 3499 | 3500 | 3501 | 3502 | 3503 | 3504 | 3505 | 3506 | 3507 | 3508 | 3509 | 3510 | 3511 | 3512 | 3513 | 3514 | 3515 | 3516 | 3517 | 3518 | 3519 | 3520 | 3521 | 3522 | 3523 | 3524 | 3525 | 3526 | 3527 | 3528 | 3529 | 3530 | 3531 | 3532 | 3533 | 3534 | 3535 | 3536 | 3537 | 3538 | 3539 | 3540 | 3541 | 3542 | 3543 | 3544 | 3545 | 3546 | 3547 | 3548 | 3549 | 3550 | 3551 | 3552 | 3553 | 3554 | 3555 | 3556 | 3557 | 3558 | 3559 | 3560 | 3561 | 3562 | 3563 | 3564 | 3565 | 3566 | 3567 | 3568 | 3569 | 3570 | 3571 | 3572 | 3573 | 3574 | 3575 | 3576 | 3577 | 3578 | 3579 | 3580 | 3581 | 3582 | 3583 | 3584 | 3585 | 3586 | 3587 | 3588 | 3589 | 3590 | 3591 | 3592 | 3593 | 3594 | 3595 | 3596 | 3597 | 3598 | 3599 | 3600 | 3601 | 3602 | 3603 | 3604 | 3605 | 3606 | 3607 | 3608 | 3609 | 3610 | 3611 | 3612 | 3613 | 3614 | 3615 | 3616 | 3617 | 3618 | 3619 | 3620 | 3621 | 3622 | 3623 | 3624 | 3625 | 3626 | 3627 | 3628 | 3629 | 3630 | 3631 | 3632 | 3633 | 3634 | 3635 | 3636 | 3637 | 3638 | 3639 | 3640 | 3641 | 3642 | 3643 | 3644 | 3645 | 3646 | 3647 | 3648 | 3649 | 3650 | 3651 | 3652 | 3653 | 3654 | 3655 | 3656 | 3657 | 3658 | 3659 | 3660 | 3661 | 3662 | 3663 | 3664 | 3665 | 3666 | 3667 | 3668 | 3669 | 3670 | 3671 | 3672 | 3673 | 3674 | 3675 | 3676 | 3677 | 3678 | 3679 | 3680 | 3681 | 3682 | 3683 | 3684 | 3685 | 3686 | 3687 | 3688 | 3689 | 3690 | 3691 | 3692 | 3693 | 3694 | 3695 | 3696 | 3697 | 3698 | 3699 | 3700 | 3701 | 3702 | 3703 | 3704 | 3705 | 3706 | 3707 | 3708 | 3709 | 3710 | 3711 | 3712 | 3713 | 3714 | 3715 | 3716 | 3717 | 3718 | 3719 | 3720 | 3721 | 3722 | 3723 | 3724 | 3725 | 3726 | 3727 | 3728 | 3729 | 3730 | 3731 | 3732 | 3733 | 3734 | 3735 | 3736 | 3737 | 3738 | 3739 | 3740 | 3741 | 3742 | 3743 | 3744 | 3745 | 3746 | 3747 | 3748 | 3749 | 3750 | 3751 | 3752 | 3753 | 3754 | 3755 | 3756 | 3757 | 3758 | 3759 | 3760 | 3761 | 3762 | 3763 | 3764 | 3765 | 3766 | 3767 | 3768 | 3769 | 3770 | 3771 | 3772 | 3773 | 3774 | 3775 | 3776 | 3777 | 3778 | 3779 | 3780 | 3781 | 3782 | 3783 | 3784 | 3785 | 3786 | 3787 | 3788 | 3789 | 3790 | 3791 | 3792 | 3793 | 3794 | 3795 | 3796 | 3797 | 3798 | 3799 | 3800 | 3801 | 3802 | 3803 | 3804 | 3805 | 3806 | 3807 | 3808 | 3809 | 3810 | 3811 | 3812 | 3813 | 3814 | 3815 | 3816 | 3817 | 3818 | 3819 | 3820 | 3821 | 3822 | 3823 | 3824 | 3825 | 3826 | 3827 | 3828 | 3829 | 3830 | 3831 | 3832 | 3833 | 3834 | 3835 | 3836 | 3837 | 3838 | 3839 | 3840 | 3841 | 3842 | 3843 | 3844 | 3845 | 3846 | 3847 | 3848 | 3849 | 3850 | 3851 | 3852 | 3853 | 3854 | 3855 | 3856 | 3857 | 3858 | 3859 | 3860 | 3861 | 3862 | 3863 | 3864 | 3865 | 3866 | 3867 | 3868 | 3869 | 3870 | 3871 | 3872 | 3873 | 3874 | 3875 | 3876 | 3877 | 3878 | 3879 | 3880 | 3881 | 3882 | 3883 | 3884 | 3885 | 3886 | 3887 | 3888 | 3889 | 3890 | 3891 | 3892 | 3893 | 3894 | 3895 | 3896 | 3897 | 3898 | 3899 | 3900 | 3901 | 3902 | 3903 | 3904 | 3905 | 3906 | 3907 | 3908 | 3909 | 3910 | 3911 | 3912 | 3913 | 3914 | 3915 | 3916 | 3917 | 3918 | 3919 | 3920 | 3921 | 3922 | 3923 | 3924 | 3925 | 3926 | 3927 | 3928 | 3929 | 3930 | 3931 | 3932 | 3933 | 3934 | 3935 | 3936 | 3937 | 3938 | 3939 | 3940 | 3941 | 3942 | 3943 | 3944 | 3945 | 3946 | 3947 | 3948 | 3949 | 3950 | 3951 | 3952 | 3953 | 3954 | 3955 | 3956 | 3957 | 3958 | 3959 | 3960 | 3961 | 3962 | 3963 | 3964 | 3965 | 3966 | 3967 | 3968 | 3969 | 3970 | 3971 | 3972 | 3973 | 3974 | 3975 | 3976 | 3977 | 3978 | 3979 | 3980 | 3981 | 3982 | 3983 | 3984 | 3985 | 3986 | 3987 | 3988 | 3989 | 3990 | 3991 | 3992 | 3993 | 3994 | 3995 | 3996 | 3997 | 3998 | 3999 | 4000 | 4001 | 4002 | 4003 | 4004 | 4005 | 4006 | 4007 | 4008 | 4009 | 4010 | 4011 | 4012 | 4013 | 4014 | 4015 | 4016 | 4017 | 4018 | 4019 | 4020 | 4021 | 4022 | 4023 | 4024 | 4025 | 4026 | 4027 | 4028 | 4029 | 4030 | 4031 | 4032 | 4033 | 4034 | 4035 | 4036 | 4037 | 4038 | 4039 | 4040 | 4041 | 4042 | 4043 | 4044 | 4045 | 4046 | 4047 | 4048 | 4049 | 4050 | 4051 | 4052 | 4053 | 4054 | 4055 | 4056 | 4057 | 4058 | 4059 | 4060 | 4061 | 4062 | 4063 | 4064 | 4065 | 4066 | 4067 | 4068 | 4069 | 4070 | 4071 | 4072 | 4073 | 4074 | 4075 | 4076 | 4077 | 4078 | 4079 | 4080 | 4081 | 4082 | 4083 | 4084 | 4085 | 4086 | 4087 | 4088 | 4089 | 4090 | 4091 | 4092 | 4093 | 4094 | 4095 | 4096 | 4097 | 4098 | 4099 | 4100 | 4101 | 4102 | 4103 | 4104 | 4105 | 4106 | 4107 | 4108 | 4109 | 4110 | 4111 | 4112 | 4113 | 4114 | 4115 | 4116 | 4117 | 4118 | 4119 | 4120 | 4121 | 4122 | 4123 | 4124 | 4125 | 4126 | 4127 | 4128 | 4129 | 4130 | 4131 | 4132 | 4133 | 4134 | 4135 | 4136 | 4137 | 4138 | 4139 | 4140 | 4141 | 4142 | 4143 | 4144 | 4145 | 4146 | 4147 | 4148 | 4149 | 4150 | 4151 | 4152 | 4153 | 4154 | 4155 | 4156 | 4157 | 4158 | 4159 | 4160 | 4161 | 4162 | 4163 | 4164 | 4165 | 4166 | 4167 | 4168 | 4169 | 4170 | 4171 | 4172 | 4173 | 4174 | 4175 | 4176 | 4177 | 4178 | 4179 | 4180 | 4181 | 4182 | 4183 | 4184 | 4185 | 4186 | 4187 | 4188 | 4189 | 4190 | 4191 | 4192 | 4193 | 4194 | 4195 | 4196 | 4197 | 4198 | 4199 | 4200 | 4201 | 4202 | 4203 | 4204 | 4205 | 4206 | 4207 | 4208 | 4209 | 4210 | 4211 | 4212 | 4213 | 4214 | 4215 | 4216 | 4217 | 4218 | 4219 | 4220 | 4221 | 4222 | 4223 | 4224 | 4225 | 4226 | 4227 | 4228 | 4229 | 4230 | 4231 | 4232 | 4233 | 4234 | 4235 | 4236 | 4237 | 4238 | 4239 | 4240 | 4241 | 4242 | 4243 | 4244 | 4245 | 4246 | 4247 | 4248 | 4249 | 4250 | 4251 | 4252 | 4253 | 4254 | 4255 | 4256 | 4257 | 4258 | 4259 | 4260 | 4261 | 4262 | 4263 | 4264 | 4265 | 4266 | 4267 | 4268 | 4269 | 4270 | 4271 | 4272 | 4273 | 4274 | 4275 | 4276 | 4277 | 4278 | 4279 | 4280 | 4281 | 4282 | 4283 | 4284 | 4285 | 4286 | 4287 | 4288 | 4289 | 4290 | 4291 | 4292 | 4293 | 4294 | 4295 | 4296 | 4297 | 4298 | 4299 | 4300 | 4301 | 4302 | 4303 | 4304 | 4305 | 4306 | 4307 | 4308 | 4309 | 4310 | 4311 | 4312 | 4313 | 4314 | 4315 | 4316 | 4317 | 4318 | 4319 | 4320 | 4321 | 4322 | 4323 | 4324 | 4325 | 4326 | 4327 | 4328 | 4329 | 4330 | 4331 | 4332 | 4333 | 4334 | 4335 | 4336 | 4337 | 4338 | 4339 | 4340 | 4341 | 4342 | 4343 | 4344 | 4345 | 4346 | 4347 | 4348 | 4349 | 4350 | 4351 | 4352 | 4353 | 4354 | 4355 | 4356 | 4357 | 4358 | 4359 | 4360 | 4361 | 4362 | 4363 | 4364 | 4365 | 4366 | 4367 | 4368 | 4369 | 4370 | 4371 | 4372 | 4373 | 4374 | 4375 | 4376 | 4377 | 4378 | 4379 | 4380 | 4381 | 4382 | 4383 | 4384 | 4385 | 4386 | 4387 | 4388 | 4389 | 4390 | 4391 | 4392 | 4393 | 4394 | 4395 | 4396 | 4397 | 4398 | 4399 | 4400 | 4401 | 4402 | 4403 | 4404 | 4405 | 4406 | 4407 | 4408 | 4409 | 4410 | 4411 | 4412 | 4413 | 4414 | 4415 | 4416 | 4417 | 4418 | 4419 | 4420 | 4421 | 4422 | 4423 | 4424 | 4425 | 4426 | 4427 | 4428 | 4429 | 4430 | 4431 | 4432 | 4433 | 4434 | 4435 | 4436 | 4437 | 4438 | 4439 | 4440 | 4441 | 4442 | 4443 | 4444 | 4445 | 4446 | 4447 | 4448 | 4449 | 4450 | 4451 | 4452 | 4453 | 4454 | 4455 | 4456 | 4457 | 4458 | 4459 | 4460 | 4461 | 4462 | 4463 | 4464 | 4465 | 4466 | 4467 | 4468 | 4469 | 4470 | 4471 | 4472 | 4473 | 4474 | 4475 | 4476 | 4477 | 4478 | 4479 | 4480 | 4481 | 4482 | 4483 | 4484 | 4485 | 4486 | 4487 | 4488 | 4489 | 4490 | 4491 | 4492 | 4493 | 4494 | 4495 | 4496 | 4497 | 4498 | 4499 | 4500 | 4501 | 4502 | 4503 | 4504 | 4505 | 4506 | 4507 | 4508 | 4509 | 4510 | 4511 | 4512 | 4513 | 4514 | 4515 | 4516 | 4517 | 4518 | 4519 | 4520 | 4521 | 4522 | 4523 | 4524 | 4525 | 4526 | 4527 | 4528 | 4529 | 4530 | 4531 | 4532 | 4533 | 4534 | 4535 | 4536 | 4537 | 4538 | 4539 | 4540 | 4541 | 4542 | 4543 | 4544 | 4545 | 4546 | 4547 | 4548 | 4549 | 4550 | 4551 | 4552 | 4553 | 4554 | 4555 | 4556 | 4557 | 4558 | 4559 | 4560 | 4561 | 4562 | 4563 | 4564 | 4565 | 4566 | 4567 | 4568 | 4569 | 4570 | 4571 | 4572 | 4573 | 4574 | 4575 | 4576 | 4577 | 4578 | 4579 | 4580 | 4581 | 4582 | 4583 | 4584 | 4585 | 4586 | 4587 | 4588 | 4589 | 4590 | 4591 | 4592 | 4593 | 4594 | 4595 | 4596 | 4597 | 4598 | 4599 | 4600 | 4601 | 4602 | 4603 | 4604 | 4605 | 4606 | 4607 | 4608 | 4609 | 4610 | 4611 | 4612 | 4613 | 4614 | 4615 | 4616 | 4617 | 4618 | 4619 | 4620 | 4621 | 4622 | 4623 | 4624 | 4625 | 4626 | 4627 | 4628 | 4629 | 4630 | 4631 | 4632 | 4633 | 4634 | 4635 | 4636 | 4637 | 4638 | 4639 | 4640 | 4641 | 4642 | 4643 | 4644 | 4645 | 4646 | 4647 | 4648 | 4649 | 4650 | 4651 | 4652 | 4653 | 4654 | 4655 | 4656 | 4657 | 4658 | 4659 | 4660 | 4661 | 4662 | 4663 | 4664 | 4665 | 4666 | 4667 | 4668 | 4669 | 4670 | 4671 | 4672 | 4673 | 4674 | 4675 | 4676 | 4677 | 4678 | 4679 | 4680 | 4681 | 4682 | 4683 | 4684 | 4685 | 4686 | 4687 | 4688 | 4689 | 4690 | 4691 | 4692 | 4693 | 4694 | 4695 | 4696 | 4697 | 4698 | 4699 | 4700 | 4701 | 4702 | 4703 | 4704 | 4705 | 4706 | 4707 | 4708 | 4709 | 4710 | 4711 | 4712 | 4713 | 4714 | 4715 | 4716 | 4717 | 4718 | 4719 | 4720 | 4721 | 4722 | 4723 | 4724 | 4725 | 4726 | 4727 | 4728 | 4729 | 4730 | 4731 | 4732 | 4733 | 4734 | 4735 | 4736 | 4737 | 4738 | 4739 | 4740 | 4741 | 4742 | 4743 | 4744 | 4745 | 4746 | 4747 | 4748 | 4749 | 4750 | 4751 | 4752 | 4753 | 4754 | 4755 | 4756 | 4757 | 4758 | 4759 | 4760 | 4761 | 4762 | 4763 | 4764 | 4765 | 4766 | 4767 | 4768 | 4769 | 4770 | 4771 | 4772 | 4773 | 4774 | 4775 | 4776 | 4777 | 4778 | 4779 | 4780 | 4781 | 4782 | 4783 | 4784 | 4785 | 4786 | 4787 | 4788 | 4789 | 4790 | 4791 | 4792 | 4793 | 4794 | 4795 | 4796 | 4797 | 4798 | 4799 | 4800 | 4801 | 4802 | 4803 | 4804 | 4805 | 4806 | 4807 | 4808 | 4809 | 4810 | 4811 | 4812 | 4813 | 4814 | 4815 | 4816 | 4817 | 4818 | 4819 | 4820 | 4821 | 4822 | 4823 | 4824 | 4825 | 4826 | 4827 | 4828 | 4829 | 4830 | 4831 | 4832 | 4833 | 4834 | 4835 | 4836 | 4837 | 4838 | 4839 | 4840 | 4841 | 4842 | 4843 | 4844 | 4845 | 4846 | 4847 | 4848 | 4849 | 4850 | 4851 | 4852 | 4853 | 4854 | 4855 | 4856 | 4857 | 4858 | 4859 | 4860 | 4861 | 4862 | 4863 | 4864 | 4865 | 4866 | 4867 | 4868 | 4869 | 4870 | 4871 | 4872 | 4873 | 4874 | 4875 | 4876 | 4877 | 4878 | 4879 | 4880 | 4881 | 4882 | 4883 | 4884 | 4885 | 4886 | 4887 | 4888 | 4889 | 4890 | 4891 | 4892 | 4893 | 4894 | 4895 | 4896 | 4897 | 4898 | 4899 | 4900 | 4901 | 4902 | 4903 | 4904 | 4905 | 4906 | 4907 | 4908 | 4909 | 4910 | 4911 | 4912 | 4913 | 4914 | 4915 | 4916 | 4917 | 4918 | 4919 | 4920 | 4921 | 4922 | 4923 | 4924 | 4925 | 4926 | 4927 | 4928 | 4929 | 4930 | 4931 | 4932 | 4933 | 4934 | 4935 | 4936 | 4937 | 4938 | 4939 | 4940 | 4941 | 4942 | 4943 | 4944 | 4945 | 4946 | 4947 | 4948 | 4949 | 4950 | 4951 | 4952 | 4953 | 4954 | 4955 | 4956 | 4957 | 4958 | 4959 | 4960 | 4961 | 4962 | 4963 | 4964 | 4965 | 4966 | 4967 | 4968 | 4969 | 4970 | 4971 | 4972 | 4973 | 4974 | 4975 | 4976 | 4977 | 4978 | 4979 | 4980 | 4981 | 4982 | 4983 | 4984 | 4985 | 4986 | 4987 | 4988 | 4989 | 4990 | 4991 | 4992 | 4993 | 4994 | 4995 | 4996 | 4997 | 4998 | 4999 | 5000 | 5001)[] 0 as 0, >0 as 0 : 0 diff --git a/tests/baselines/reference/unusedVariablesWithUnderscoreInBindingElement.errors.txt b/tests/baselines/reference/unusedVariablesWithUnderscoreInBindingElement.errors.txt new file mode 100644 index 0000000000000..58eccaee1e8f5 --- /dev/null +++ b/tests/baselines/reference/unusedVariablesWithUnderscoreInBindingElement.errors.txt @@ -0,0 +1,145 @@ +tests/cases/compiler/unusedVariablesWithUnderscoreInBindingElement.ts(12,17): error TS6133: 'b1' is declared but its value is never read. +tests/cases/compiler/unusedVariablesWithUnderscoreInBindingElement.ts(13,12): error TS6133: 'a2' is declared but its value is never read. +tests/cases/compiler/unusedVariablesWithUnderscoreInBindingElement.ts(14,12): error TS6133: 'a3' is declared but its value is never read. +tests/cases/compiler/unusedVariablesWithUnderscoreInBindingElement.ts(14,16): error TS6133: 'b3' is declared but its value is never read. +tests/cases/compiler/unusedVariablesWithUnderscoreInBindingElement.ts(23,12): error TS6133: 'a3' is declared but its value is never read. +tests/cases/compiler/unusedVariablesWithUnderscoreInBindingElement.ts(23,18): error TS6133: 'b3' is declared but its value is never read. +tests/cases/compiler/unusedVariablesWithUnderscoreInBindingElement.ts(23,22): error TS6133: 'c3' is declared but its value is never read. +tests/cases/compiler/unusedVariablesWithUnderscoreInBindingElement.ts(23,28): error TS6133: 'd3' is declared but its value is never read. +tests/cases/compiler/unusedVariablesWithUnderscoreInBindingElement.ts(23,32): error TS6133: 'e3' is declared but its value is never read. +tests/cases/compiler/unusedVariablesWithUnderscoreInBindingElement.ts(37,22): error TS6133: 'b1' is declared but its value is never read. +tests/cases/compiler/unusedVariablesWithUnderscoreInBindingElement.ts(38,13): error TS6133: 'a2' is declared but its value is never read. +tests/cases/compiler/unusedVariablesWithUnderscoreInBindingElement.ts(39,11): error TS6198: All destructured elements are unused. +tests/cases/compiler/unusedVariablesWithUnderscoreInBindingElement.ts(68,9): error TS6133: 'a3' is declared but its value is never read. +tests/cases/compiler/unusedVariablesWithUnderscoreInBindingElement.ts(70,18): error TS6198: All destructured elements are unused. +tests/cases/compiler/unusedVariablesWithUnderscoreInBindingElement.ts(74,9): error TS6133: 'c3' is declared but its value is never read. +tests/cases/compiler/unusedVariablesWithUnderscoreInBindingElement.ts(75,9): error TS6133: 'd3' is declared but its value is never read. +tests/cases/compiler/unusedVariablesWithUnderscoreInBindingElement.ts(81,11): error TS6198: All destructured elements are unused. + + +==== tests/cases/compiler/unusedVariablesWithUnderscoreInBindingElement.ts (17 errors) ==== + function t1() { + const [_a1, b1] = [1, 2]; + console.log(b1); + + const [a2, _b2] = [1, 2]; + console.log(a2); + + const [_a3, _b3] = [1, 2]; + } + + function t2() { + const [_a1, b1] = [1, 2]; + ~~ +!!! error TS6133: 'b1' is declared but its value is never read. + const [a2, _b2] = [1, 2]; + ~~ +!!! error TS6133: 'a2' is declared but its value is never read. + const [a3, b3] = [1, 2]; + ~~ +!!! error TS6133: 'a3' is declared but its value is never read. + ~~ +!!! error TS6133: 'b3' is declared but its value is never read. + } + + function t3() { + const [_a1, [[_b1, c1]], d1, _e1] = [1, [[2, 3]], 4, 5]; + console.log(c1, d1); + + const [_a2, [[_b2, _c2]], _d2, _e2] = [1, [[2, 3]], 4, 5]; + + const [a3, [[b3, c3]], d3, e3] = [1, [[2, 3]], 4, 5]; + ~~ +!!! error TS6133: 'a3' is declared but its value is never read. + ~~ +!!! error TS6133: 'b3' is declared but its value is never read. + ~~ +!!! error TS6133: 'c3' is declared but its value is never read. + ~~ +!!! error TS6133: 'd3' is declared but its value is never read. + ~~ +!!! error TS6133: 'e3' is declared but its value is never read. + } + + function t4() { + const { a1: _a1, b1 } = { a1: 1, b1: 1 }; + console.log(b1); + + const { a2, b2: _b2 } = { a2: 1, b2: 1 }; + console.log(a2); + + const { a3: _a3, b3: _b3 } = { a3: 1, b3: 1 }; + } + + function t5() { + const { a1: _a1, b1 } = { a1: 1, b1: 1 }; + ~~ +!!! error TS6133: 'b1' is declared but its value is never read. + const { a2, b2: _b2 } = { a2: 1, b2: 1 }; + ~~ +!!! error TS6133: 'a2' is declared but its value is never read. + const { a3, b3 } = { a3: 1, b3: 1 }; + ~~~~~~~~~~ +!!! error TS6198: All destructured elements are unused. + } + + function t6() { + const { + a1: _a1, + b1: { + b11: { + b111: _b111, + b112 + } + }, + c1, + d1: _d1 + } = { a1: 1, b1: { b11: { b111: 1, b112: 1 } }, c1: 1, d1: 1 }; + console.log(b112, c1); + + const { + a2: _a2, + b2: { + b21: { + b211: _b211, b212: _b212 + } + }, + c2: _c2, + d2: _d2 + } = { a2: 1, b2: { b21: { b211: 1, b212: 1 } }, c2: 1, d2: 1 }; + + const { + a3, + ~~ +!!! error TS6133: 'a3' is declared but its value is never read. + b3: { + b31: { + ~ + b311, b312 + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + } + ~~~~~~~~~~~~~ +!!! error TS6198: All destructured elements are unused. + }, + c3, + ~~ +!!! error TS6133: 'c3' is declared but its value is never read. + d3 + ~~ +!!! error TS6133: 'd3' is declared but its value is never read. + } = { a3: 1, b3: { b31: { b311: 1, b312: 1 } }, c3: 1, d3: 1 }; + } + + function t7() { + // error + const { _a1, _b1 } = { _a1: 1, _b1: 1 }; + ~~~~~~~~~~~~ +!!! error TS6198: All destructured elements are unused. + + // ok + const { a2: _a2, b2: _b2 } = { a2: 1, b2: 1 }; + + // ok + const { _a3: _ignoreA3, _b3: _ignoreB3 } = { _a3: 1, _b3: 1 }; + } + \ No newline at end of file diff --git a/tests/baselines/reference/unusedVariablesWithUnderscoreInBindingElement.js b/tests/baselines/reference/unusedVariablesWithUnderscoreInBindingElement.js new file mode 100644 index 0000000000000..6e6846f470a59 --- /dev/null +++ b/tests/baselines/reference/unusedVariablesWithUnderscoreInBindingElement.js @@ -0,0 +1,136 @@ +//// [unusedVariablesWithUnderscoreInBindingElement.ts] +function t1() { + const [_a1, b1] = [1, 2]; + console.log(b1); + + const [a2, _b2] = [1, 2]; + console.log(a2); + + const [_a3, _b3] = [1, 2]; +} + +function t2() { + const [_a1, b1] = [1, 2]; + const [a2, _b2] = [1, 2]; + const [a3, b3] = [1, 2]; +} + +function t3() { + const [_a1, [[_b1, c1]], d1, _e1] = [1, [[2, 3]], 4, 5]; + console.log(c1, d1); + + const [_a2, [[_b2, _c2]], _d2, _e2] = [1, [[2, 3]], 4, 5]; + + const [a3, [[b3, c3]], d3, e3] = [1, [[2, 3]], 4, 5]; +} + +function t4() { + const { a1: _a1, b1 } = { a1: 1, b1: 1 }; + console.log(b1); + + const { a2, b2: _b2 } = { a2: 1, b2: 1 }; + console.log(a2); + + const { a3: _a3, b3: _b3 } = { a3: 1, b3: 1 }; +} + +function t5() { + const { a1: _a1, b1 } = { a1: 1, b1: 1 }; + const { a2, b2: _b2 } = { a2: 1, b2: 1 }; + const { a3, b3 } = { a3: 1, b3: 1 }; +} + +function t6() { + const { + a1: _a1, + b1: { + b11: { + b111: _b111, + b112 + } + }, + c1, + d1: _d1 + } = { a1: 1, b1: { b11: { b111: 1, b112: 1 } }, c1: 1, d1: 1 }; + console.log(b112, c1); + + const { + a2: _a2, + b2: { + b21: { + b211: _b211, b212: _b212 + } + }, + c2: _c2, + d2: _d2 + } = { a2: 1, b2: { b21: { b211: 1, b212: 1 } }, c2: 1, d2: 1 }; + + const { + a3, + b3: { + b31: { + b311, b312 + } + }, + c3, + d3 + } = { a3: 1, b3: { b31: { b311: 1, b312: 1 } }, c3: 1, d3: 1 }; +} + +function t7() { + // error + const { _a1, _b1 } = { _a1: 1, _b1: 1 }; + + // ok + const { a2: _a2, b2: _b2 } = { a2: 1, b2: 1 }; + + // ok + const { _a3: _ignoreA3, _b3: _ignoreB3 } = { _a3: 1, _b3: 1 }; +} + + +//// [unusedVariablesWithUnderscoreInBindingElement.js] +function t1() { + var _a = [1, 2], _a1 = _a[0], b1 = _a[1]; + console.log(b1); + var _b = [1, 2], a2 = _b[0], _b2 = _b[1]; + console.log(a2); + var _c = [1, 2], _a3 = _c[0], _b3 = _c[1]; +} +function t2() { + var _a = [1, 2], _a1 = _a[0], b1 = _a[1]; + var _b = [1, 2], a2 = _b[0], _b2 = _b[1]; + var _c = [1, 2], a3 = _c[0], b3 = _c[1]; +} +function t3() { + var _a = [1, [[2, 3]], 4, 5], _a1 = _a[0], _b = _a[1][0], _b1 = _b[0], c1 = _b[1], d1 = _a[2], _e1 = _a[3]; + console.log(c1, d1); + var _c = [1, [[2, 3]], 4, 5], _a2 = _c[0], _d = _c[1][0], _b2 = _d[0], _c2 = _d[1], _d2 = _c[2], _e2 = _c[3]; + var _e = [1, [[2, 3]], 4, 5], a3 = _e[0], _f = _e[1][0], b3 = _f[0], c3 = _f[1], d3 = _e[2], e3 = _e[3]; +} +function t4() { + var _a = { a1: 1, b1: 1 }, _a1 = _a.a1, b1 = _a.b1; + console.log(b1); + var _b = { a2: 1, b2: 1 }, a2 = _b.a2, _b2 = _b.b2; + console.log(a2); + var _c = { a3: 1, b3: 1 }, _a3 = _c.a3, _b3 = _c.b3; +} +function t5() { + var _a = { a1: 1, b1: 1 }, _a1 = _a.a1, b1 = _a.b1; + var _b = { a2: 1, b2: 1 }, a2 = _b.a2, _b2 = _b.b2; + var _c = { a3: 1, b3: 1 }, a3 = _c.a3, b3 = _c.b3; +} +function t6() { + var _a = { a1: 1, b1: { b11: { b111: 1, b112: 1 } }, c1: 1, d1: 1 }, _a1 = _a.a1, _b = _a.b1.b11, _b111 = _b.b111, b112 = _b.b112, c1 = _a.c1, _d1 = _a.d1; + console.log(b112, c1); + var _c = { a2: 1, b2: { b21: { b211: 1, b212: 1 } }, c2: 1, d2: 1 }, _a2 = _c.a2, _d = _c.b2.b21, _b211 = _d.b211, _b212 = _d.b212, _c2 = _c.c2, _d2 = _c.d2; + var _e = { a3: 1, b3: { b31: { b311: 1, b312: 1 } }, c3: 1, d3: 1 }, a3 = _e.a3, _f = _e.b3.b31, b311 = _f.b311, b312 = _f.b312, c3 = _e.c3, d3 = _e.d3; +} +function t7() { + // error + var _a = { _a1: 1, _b1: 1 }, _a1 = _a._a1, _b1 = _a._b1; + // ok + var _b = { a2: 1, b2: 1 }, _a2 = _b.a2, _b2 = _b.b2; + // ok + var _c = { _a3: 1, _b3: 1 }, _ignoreA3 = _c._a3, _ignoreB3 = _c._b3; +} diff --git a/tests/baselines/reference/unusedVariablesWithUnderscoreInBindingElement.symbols b/tests/baselines/reference/unusedVariablesWithUnderscoreInBindingElement.symbols new file mode 100644 index 0000000000000..0c5367a9ed64f --- /dev/null +++ b/tests/baselines/reference/unusedVariablesWithUnderscoreInBindingElement.symbols @@ -0,0 +1,279 @@ +=== tests/cases/compiler/unusedVariablesWithUnderscoreInBindingElement.ts === +function t1() { +>t1 : Symbol(t1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 0, 0)) + + const [_a1, b1] = [1, 2]; +>_a1 : Symbol(_a1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 1, 11)) +>b1 : Symbol(b1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 1, 15)) + + console.log(b1); +>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>console : Symbol(console, Decl(lib.dom.d.ts, --, --)) +>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>b1 : Symbol(b1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 1, 15)) + + const [a2, _b2] = [1, 2]; +>a2 : Symbol(a2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 4, 11)) +>_b2 : Symbol(_b2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 4, 14)) + + console.log(a2); +>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>console : Symbol(console, Decl(lib.dom.d.ts, --, --)) +>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>a2 : Symbol(a2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 4, 11)) + + const [_a3, _b3] = [1, 2]; +>_a3 : Symbol(_a3, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 7, 11)) +>_b3 : Symbol(_b3, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 7, 15)) +} + +function t2() { +>t2 : Symbol(t2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 8, 1)) + + const [_a1, b1] = [1, 2]; +>_a1 : Symbol(_a1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 11, 11)) +>b1 : Symbol(b1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 11, 15)) + + const [a2, _b2] = [1, 2]; +>a2 : Symbol(a2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 12, 11)) +>_b2 : Symbol(_b2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 12, 14)) + + const [a3, b3] = [1, 2]; +>a3 : Symbol(a3, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 13, 11)) +>b3 : Symbol(b3, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 13, 14)) +} + +function t3() { +>t3 : Symbol(t3, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 14, 1)) + + const [_a1, [[_b1, c1]], d1, _e1] = [1, [[2, 3]], 4, 5]; +>_a1 : Symbol(_a1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 17, 11)) +>_b1 : Symbol(_b1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 17, 18)) +>c1 : Symbol(c1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 17, 22)) +>d1 : Symbol(d1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 17, 28)) +>_e1 : Symbol(_e1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 17, 32)) + + console.log(c1, d1); +>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>console : Symbol(console, Decl(lib.dom.d.ts, --, --)) +>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>c1 : Symbol(c1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 17, 22)) +>d1 : Symbol(d1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 17, 28)) + + const [_a2, [[_b2, _c2]], _d2, _e2] = [1, [[2, 3]], 4, 5]; +>_a2 : Symbol(_a2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 20, 11)) +>_b2 : Symbol(_b2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 20, 18)) +>_c2 : Symbol(_c2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 20, 22)) +>_d2 : Symbol(_d2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 20, 29)) +>_e2 : Symbol(_e2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 20, 34)) + + const [a3, [[b3, c3]], d3, e3] = [1, [[2, 3]], 4, 5]; +>a3 : Symbol(a3, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 22, 11)) +>b3 : Symbol(b3, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 22, 17)) +>c3 : Symbol(c3, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 22, 20)) +>d3 : Symbol(d3, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 22, 26)) +>e3 : Symbol(e3, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 22, 30)) +} + +function t4() { +>t4 : Symbol(t4, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 23, 1)) + + const { a1: _a1, b1 } = { a1: 1, b1: 1 }; +>a1 : Symbol(a1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 26, 29)) +>_a1 : Symbol(_a1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 26, 11)) +>b1 : Symbol(b1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 26, 20)) +>a1 : Symbol(a1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 26, 29)) +>b1 : Symbol(b1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 26, 36)) + + console.log(b1); +>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>console : Symbol(console, Decl(lib.dom.d.ts, --, --)) +>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>b1 : Symbol(b1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 26, 20)) + + const { a2, b2: _b2 } = { a2: 1, b2: 1 }; +>a2 : Symbol(a2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 29, 11)) +>b2 : Symbol(b2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 29, 36)) +>_b2 : Symbol(_b2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 29, 15)) +>a2 : Symbol(a2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 29, 29)) +>b2 : Symbol(b2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 29, 36)) + + console.log(a2); +>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>console : Symbol(console, Decl(lib.dom.d.ts, --, --)) +>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>a2 : Symbol(a2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 29, 11)) + + const { a3: _a3, b3: _b3 } = { a3: 1, b3: 1 }; +>a3 : Symbol(a3, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 32, 34)) +>_a3 : Symbol(_a3, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 32, 11)) +>b3 : Symbol(b3, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 32, 41)) +>_b3 : Symbol(_b3, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 32, 20)) +>a3 : Symbol(a3, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 32, 34)) +>b3 : Symbol(b3, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 32, 41)) +} + +function t5() { +>t5 : Symbol(t5, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 33, 1)) + + const { a1: _a1, b1 } = { a1: 1, b1: 1 }; +>a1 : Symbol(a1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 36, 29)) +>_a1 : Symbol(_a1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 36, 11)) +>b1 : Symbol(b1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 36, 20)) +>a1 : Symbol(a1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 36, 29)) +>b1 : Symbol(b1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 36, 36)) + + const { a2, b2: _b2 } = { a2: 1, b2: 1 }; +>a2 : Symbol(a2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 37, 11)) +>b2 : Symbol(b2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 37, 36)) +>_b2 : Symbol(_b2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 37, 15)) +>a2 : Symbol(a2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 37, 29)) +>b2 : Symbol(b2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 37, 36)) + + const { a3, b3 } = { a3: 1, b3: 1 }; +>a3 : Symbol(a3, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 38, 11)) +>b3 : Symbol(b3, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 38, 15)) +>a3 : Symbol(a3, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 38, 24)) +>b3 : Symbol(b3, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 38, 31)) +} + +function t6() { +>t6 : Symbol(t6, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 39, 1)) + + const { + a1: _a1, +>a1 : Symbol(a1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 52, 9)) +>_a1 : Symbol(_a1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 42, 11)) + + b1: { +>b1 : Symbol(b1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 52, 16)) + + b11: { +>b11 : Symbol(b11, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 52, 22)) + + b111: _b111, +>b111 : Symbol(b111, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 52, 29)) +>_b111 : Symbol(_b111, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 45, 18)) + + b112 +>b112 : Symbol(b112, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 46, 28)) + } + }, + c1, +>c1 : Symbol(c1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 49, 10)) + + d1: _d1 +>d1 : Symbol(d1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 52, 58)) +>_d1 : Symbol(_d1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 50, 11)) + + } = { a1: 1, b1: { b11: { b111: 1, b112: 1 } }, c1: 1, d1: 1 }; +>a1 : Symbol(a1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 52, 9)) +>b1 : Symbol(b1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 52, 16)) +>b11 : Symbol(b11, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 52, 22)) +>b111 : Symbol(b111, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 52, 29)) +>b112 : Symbol(b112, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 52, 38)) +>c1 : Symbol(c1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 52, 51)) +>d1 : Symbol(d1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 52, 58)) + + console.log(b112, c1); +>console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>console : Symbol(console, Decl(lib.dom.d.ts, --, --)) +>log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --)) +>b112 : Symbol(b112, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 46, 28)) +>c1 : Symbol(c1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 49, 10)) + + const { + a2: _a2, +>a2 : Symbol(a2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 64, 9)) +>_a2 : Symbol(_a2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 55, 11)) + + b2: { +>b2 : Symbol(b2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 64, 16)) + + b21: { +>b21 : Symbol(b21, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 64, 22)) + + b211: _b211, b212: _b212 +>b211 : Symbol(b211, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 64, 29)) +>_b211 : Symbol(_b211, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 58, 18)) +>b212 : Symbol(b212, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 64, 38)) +>_b212 : Symbol(_b212, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 59, 28)) + } + }, + c2: _c2, +>c2 : Symbol(c2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 64, 51)) +>_c2 : Symbol(_c2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 61, 10)) + + d2: _d2 +>d2 : Symbol(d2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 64, 58)) +>_d2 : Symbol(_d2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 62, 16)) + + } = { a2: 1, b2: { b21: { b211: 1, b212: 1 } }, c2: 1, d2: 1 }; +>a2 : Symbol(a2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 64, 9)) +>b2 : Symbol(b2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 64, 16)) +>b21 : Symbol(b21, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 64, 22)) +>b211 : Symbol(b211, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 64, 29)) +>b212 : Symbol(b212, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 64, 38)) +>c2 : Symbol(c2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 64, 51)) +>d2 : Symbol(d2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 64, 58)) + + const { + a3, +>a3 : Symbol(a3, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 66, 11)) + + b3: { +>b3 : Symbol(b3, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 75, 16)) + + b31: { +>b31 : Symbol(b31, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 75, 22)) + + b311, b312 +>b311 : Symbol(b311, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 69, 18)) +>b312 : Symbol(b312, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 70, 21)) + } + }, + c3, +>c3 : Symbol(c3, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 72, 10)) + + d3 +>d3 : Symbol(d3, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 73, 11)) + + } = { a3: 1, b3: { b31: { b311: 1, b312: 1 } }, c3: 1, d3: 1 }; +>a3 : Symbol(a3, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 75, 9)) +>b3 : Symbol(b3, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 75, 16)) +>b31 : Symbol(b31, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 75, 22)) +>b311 : Symbol(b311, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 75, 29)) +>b312 : Symbol(b312, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 75, 38)) +>c3 : Symbol(c3, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 75, 51)) +>d3 : Symbol(d3, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 75, 58)) +} + +function t7() { +>t7 : Symbol(t7, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 76, 1)) + + // error + const { _a1, _b1 } = { _a1: 1, _b1: 1 }; +>_a1 : Symbol(_a1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 80, 11)) +>_b1 : Symbol(_b1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 80, 16)) +>_a1 : Symbol(_a1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 80, 26)) +>_b1 : Symbol(_b1, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 80, 34)) + + // ok + const { a2: _a2, b2: _b2 } = { a2: 1, b2: 1 }; +>a2 : Symbol(a2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 83, 34)) +>_a2 : Symbol(_a2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 83, 11)) +>b2 : Symbol(b2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 83, 41)) +>_b2 : Symbol(_b2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 83, 20)) +>a2 : Symbol(a2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 83, 34)) +>b2 : Symbol(b2, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 83, 41)) + + // ok + const { _a3: _ignoreA3, _b3: _ignoreB3 } = { _a3: 1, _b3: 1 }; +>_a3 : Symbol(_a3, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 86, 48)) +>_ignoreA3 : Symbol(_ignoreA3, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 86, 11)) +>_b3 : Symbol(_b3, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 86, 56)) +>_ignoreB3 : Symbol(_ignoreB3, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 86, 27)) +>_a3 : Symbol(_a3, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 86, 48)) +>_b3 : Symbol(_b3, Decl(unusedVariablesWithUnderscoreInBindingElement.ts, 86, 56)) +} + diff --git a/tests/baselines/reference/unusedVariablesWithUnderscoreInBindingElement.types b/tests/baselines/reference/unusedVariablesWithUnderscoreInBindingElement.types new file mode 100644 index 0000000000000..d5d65c91af935 --- /dev/null +++ b/tests/baselines/reference/unusedVariablesWithUnderscoreInBindingElement.types @@ -0,0 +1,378 @@ +=== tests/cases/compiler/unusedVariablesWithUnderscoreInBindingElement.ts === +function t1() { +>t1 : () => void + + const [_a1, b1] = [1, 2]; +>_a1 : number +>b1 : number +>[1, 2] : [number, number] +>1 : 1 +>2 : 2 + + console.log(b1); +>console.log(b1) : void +>console.log : (...data: any[]) => void +>console : Console +>log : (...data: any[]) => void +>b1 : number + + const [a2, _b2] = [1, 2]; +>a2 : number +>_b2 : number +>[1, 2] : [number, number] +>1 : 1 +>2 : 2 + + console.log(a2); +>console.log(a2) : void +>console.log : (...data: any[]) => void +>console : Console +>log : (...data: any[]) => void +>a2 : number + + const [_a3, _b3] = [1, 2]; +>_a3 : number +>_b3 : number +>[1, 2] : [number, number] +>1 : 1 +>2 : 2 +} + +function t2() { +>t2 : () => void + + const [_a1, b1] = [1, 2]; +>_a1 : number +>b1 : number +>[1, 2] : [number, number] +>1 : 1 +>2 : 2 + + const [a2, _b2] = [1, 2]; +>a2 : number +>_b2 : number +>[1, 2] : [number, number] +>1 : 1 +>2 : 2 + + const [a3, b3] = [1, 2]; +>a3 : number +>b3 : number +>[1, 2] : [number, number] +>1 : 1 +>2 : 2 +} + +function t3() { +>t3 : () => void + + const [_a1, [[_b1, c1]], d1, _e1] = [1, [[2, 3]], 4, 5]; +>_a1 : number +>_b1 : number +>c1 : number +>d1 : number +>_e1 : number +>[1, [[2, 3]], 4, 5] : [number, [[number, number]], number, number] +>1 : 1 +>[[2, 3]] : [[number, number]] +>[2, 3] : [number, number] +>2 : 2 +>3 : 3 +>4 : 4 +>5 : 5 + + console.log(c1, d1); +>console.log(c1, d1) : void +>console.log : (...data: any[]) => void +>console : Console +>log : (...data: any[]) => void +>c1 : number +>d1 : number + + const [_a2, [[_b2, _c2]], _d2, _e2] = [1, [[2, 3]], 4, 5]; +>_a2 : number +>_b2 : number +>_c2 : number +>_d2 : number +>_e2 : number +>[1, [[2, 3]], 4, 5] : [number, [[number, number]], number, number] +>1 : 1 +>[[2, 3]] : [[number, number]] +>[2, 3] : [number, number] +>2 : 2 +>3 : 3 +>4 : 4 +>5 : 5 + + const [a3, [[b3, c3]], d3, e3] = [1, [[2, 3]], 4, 5]; +>a3 : number +>b3 : number +>c3 : number +>d3 : number +>e3 : number +>[1, [[2, 3]], 4, 5] : [number, [[number, number]], number, number] +>1 : 1 +>[[2, 3]] : [[number, number]] +>[2, 3] : [number, number] +>2 : 2 +>3 : 3 +>4 : 4 +>5 : 5 +} + +function t4() { +>t4 : () => void + + const { a1: _a1, b1 } = { a1: 1, b1: 1 }; +>a1 : any +>_a1 : number +>b1 : number +>{ a1: 1, b1: 1 } : { a1: number; b1: number; } +>a1 : number +>1 : 1 +>b1 : number +>1 : 1 + + console.log(b1); +>console.log(b1) : void +>console.log : (...data: any[]) => void +>console : Console +>log : (...data: any[]) => void +>b1 : number + + const { a2, b2: _b2 } = { a2: 1, b2: 1 }; +>a2 : number +>b2 : any +>_b2 : number +>{ a2: 1, b2: 1 } : { a2: number; b2: number; } +>a2 : number +>1 : 1 +>b2 : number +>1 : 1 + + console.log(a2); +>console.log(a2) : void +>console.log : (...data: any[]) => void +>console : Console +>log : (...data: any[]) => void +>a2 : number + + const { a3: _a3, b3: _b3 } = { a3: 1, b3: 1 }; +>a3 : any +>_a3 : number +>b3 : any +>_b3 : number +>{ a3: 1, b3: 1 } : { a3: number; b3: number; } +>a3 : number +>1 : 1 +>b3 : number +>1 : 1 +} + +function t5() { +>t5 : () => void + + const { a1: _a1, b1 } = { a1: 1, b1: 1 }; +>a1 : any +>_a1 : number +>b1 : number +>{ a1: 1, b1: 1 } : { a1: number; b1: number; } +>a1 : number +>1 : 1 +>b1 : number +>1 : 1 + + const { a2, b2: _b2 } = { a2: 1, b2: 1 }; +>a2 : number +>b2 : any +>_b2 : number +>{ a2: 1, b2: 1 } : { a2: number; b2: number; } +>a2 : number +>1 : 1 +>b2 : number +>1 : 1 + + const { a3, b3 } = { a3: 1, b3: 1 }; +>a3 : number +>b3 : number +>{ a3: 1, b3: 1 } : { a3: number; b3: number; } +>a3 : number +>1 : 1 +>b3 : number +>1 : 1 +} + +function t6() { +>t6 : () => void + + const { + a1: _a1, +>a1 : any +>_a1 : number + + b1: { +>b1 : any + + b11: { +>b11 : any + + b111: _b111, +>b111 : any +>_b111 : number + + b112 +>b112 : number + } + }, + c1, +>c1 : number + + d1: _d1 +>d1 : any +>_d1 : number + + } = { a1: 1, b1: { b11: { b111: 1, b112: 1 } }, c1: 1, d1: 1 }; +>{ a1: 1, b1: { b11: { b111: 1, b112: 1 } }, c1: 1, d1: 1 } : { a1: number; b1: { b11: { b111: number; b112: number; }; }; c1: number; d1: number; } +>a1 : number +>1 : 1 +>b1 : { b11: { b111: number; b112: number; }; } +>{ b11: { b111: 1, b112: 1 } } : { b11: { b111: number; b112: number; }; } +>b11 : { b111: number; b112: number; } +>{ b111: 1, b112: 1 } : { b111: number; b112: number; } +>b111 : number +>1 : 1 +>b112 : number +>1 : 1 +>c1 : number +>1 : 1 +>d1 : number +>1 : 1 + + console.log(b112, c1); +>console.log(b112, c1) : void +>console.log : (...data: any[]) => void +>console : Console +>log : (...data: any[]) => void +>b112 : number +>c1 : number + + const { + a2: _a2, +>a2 : any +>_a2 : number + + b2: { +>b2 : any + + b21: { +>b21 : any + + b211: _b211, b212: _b212 +>b211 : any +>_b211 : number +>b212 : any +>_b212 : number + } + }, + c2: _c2, +>c2 : any +>_c2 : number + + d2: _d2 +>d2 : any +>_d2 : number + + } = { a2: 1, b2: { b21: { b211: 1, b212: 1 } }, c2: 1, d2: 1 }; +>{ a2: 1, b2: { b21: { b211: 1, b212: 1 } }, c2: 1, d2: 1 } : { a2: number; b2: { b21: { b211: number; b212: number; }; }; c2: number; d2: number; } +>a2 : number +>1 : 1 +>b2 : { b21: { b211: number; b212: number; }; } +>{ b21: { b211: 1, b212: 1 } } : { b21: { b211: number; b212: number; }; } +>b21 : { b211: number; b212: number; } +>{ b211: 1, b212: 1 } : { b211: number; b212: number; } +>b211 : number +>1 : 1 +>b212 : number +>1 : 1 +>c2 : number +>1 : 1 +>d2 : number +>1 : 1 + + const { + a3, +>a3 : number + + b3: { +>b3 : any + + b31: { +>b31 : any + + b311, b312 +>b311 : number +>b312 : number + } + }, + c3, +>c3 : number + + d3 +>d3 : number + + } = { a3: 1, b3: { b31: { b311: 1, b312: 1 } }, c3: 1, d3: 1 }; +>{ a3: 1, b3: { b31: { b311: 1, b312: 1 } }, c3: 1, d3: 1 } : { a3: number; b3: { b31: { b311: number; b312: number; }; }; c3: number; d3: number; } +>a3 : number +>1 : 1 +>b3 : { b31: { b311: number; b312: number; }; } +>{ b31: { b311: 1, b312: 1 } } : { b31: { b311: number; b312: number; }; } +>b31 : { b311: number; b312: number; } +>{ b311: 1, b312: 1 } : { b311: number; b312: number; } +>b311 : number +>1 : 1 +>b312 : number +>1 : 1 +>c3 : number +>1 : 1 +>d3 : number +>1 : 1 +} + +function t7() { +>t7 : () => void + + // error + const { _a1, _b1 } = { _a1: 1, _b1: 1 }; +>_a1 : number +>_b1 : number +>{ _a1: 1, _b1: 1 } : { _a1: number; _b1: number; } +>_a1 : number +>1 : 1 +>_b1 : number +>1 : 1 + + // ok + const { a2: _a2, b2: _b2 } = { a2: 1, b2: 1 }; +>a2 : any +>_a2 : number +>b2 : any +>_b2 : number +>{ a2: 1, b2: 1 } : { a2: number; b2: number; } +>a2 : number +>1 : 1 +>b2 : number +>1 : 1 + + // ok + const { _a3: _ignoreA3, _b3: _ignoreB3 } = { _a3: 1, _b3: 1 }; +>_a3 : any +>_ignoreA3 : number +>_b3 : any +>_ignoreB3 : number +>{ _a3: 1, _b3: 1 } : { _a3: number; _b3: number; } +>_a3 : number +>1 : 1 +>_b3 : number +>1 : 1 +} + diff --git a/tests/baselines/reference/unusedVariablesWithUnderscoreInForOfLoop.errors.txt b/tests/baselines/reference/unusedVariablesWithUnderscoreInForOfLoop.errors.txt new file mode 100644 index 0000000000000..38476fd6c796a --- /dev/null +++ b/tests/baselines/reference/unusedVariablesWithUnderscoreInForOfLoop.errors.txt @@ -0,0 +1,56 @@ +tests/cases/compiler/unusedVariablesWithUnderscoreInForOfLoop.ts(15,21): error TS6133: 'b' is declared but its value is never read. +tests/cases/compiler/unusedVariablesWithUnderscoreInForOfLoop.ts(17,17): error TS6133: 'a' is declared but its value is never read. +tests/cases/compiler/unusedVariablesWithUnderscoreInForOfLoop.ts(19,17): error TS6133: 'a' is declared but its value is never read. +tests/cases/compiler/unusedVariablesWithUnderscoreInForOfLoop.ts(19,20): error TS6133: 'b' is declared but its value is never read. +tests/cases/compiler/unusedVariablesWithUnderscoreInForOfLoop.ts(23,23): error TS6133: 'b' is declared but its value is never read. +tests/cases/compiler/unusedVariablesWithUnderscoreInForOfLoop.ts(25,19): error TS6133: 'a' is declared but its value is never read. +tests/cases/compiler/unusedVariablesWithUnderscoreInForOfLoop.ts(27,19): error TS6133: 'a' is declared but its value is never read. +tests/cases/compiler/unusedVariablesWithUnderscoreInForOfLoop.ts(27,22): error TS6133: 'b' is declared but its value is never read. + + +==== tests/cases/compiler/unusedVariablesWithUnderscoreInForOfLoop.ts (8 errors) ==== + function t1() { + for (const [_a, b] of [['key', 1]]) { + console.log(b); + } + + for (const [a, _b] of [['key', 1]]) { + console.log(a); + } + + for (const [_a, _b] of [['key', 1]]) {} + } + + + function t2() { + for (const [_a, b] of [['key', 1]]) {} + ~ +!!! error TS6133: 'b' is declared but its value is never read. + + for (const [a, _b] of [['key', 1]]) {} + ~ +!!! error TS6133: 'a' is declared but its value is never read. + + for (const [a, b] of [['key', 1]]) {} + ~ +!!! error TS6133: 'a' is declared but its value is never read. + ~ +!!! error TS6133: 'b' is declared but its value is never read. + } + + function t3() { + for (const [[[_a, b]]] of [[[['key', 1]]]]) {} + ~ +!!! error TS6133: 'b' is declared but its value is never read. + + for (const [[[a, _b]]] of [[[['key', 1]]]]) {} + ~ +!!! error TS6133: 'a' is declared but its value is never read. + + for (const [[[a, b]]] of [[[['key', 1]]]]) {} + ~ +!!! error TS6133: 'a' is declared but its value is never read. + ~ +!!! error TS6133: 'b' is declared but its value is never read. + } + \ No newline at end of file diff --git a/tests/baselines/reference/unusedVariablesWithUnderscoreInForOfLoop.js b/tests/baselines/reference/unusedVariablesWithUnderscoreInForOfLoop.js index 0c08ba841931f..3418db8795e79 100644 --- a/tests/baselines/reference/unusedVariablesWithUnderscoreInForOfLoop.js +++ b/tests/baselines/reference/unusedVariablesWithUnderscoreInForOfLoop.js @@ -1,5 +1,5 @@ //// [unusedVariablesWithUnderscoreInForOfLoop.ts] -function f() { +function t1() { for (const [_a, b] of [['key', 1]]) { console.log(b); } @@ -10,10 +10,27 @@ function f() { for (const [_a, _b] of [['key', 1]]) {} } + + +function t2() { + for (const [_a, b] of [['key', 1]]) {} + + for (const [a, _b] of [['key', 1]]) {} + + for (const [a, b] of [['key', 1]]) {} +} + +function t3() { + for (const [[[_a, b]]] of [[[['key', 1]]]]) {} + + for (const [[[a, _b]]] of [[[['key', 1]]]]) {} + + for (const [[[a, b]]] of [[[['key', 1]]]]) {} +} //// [unusedVariablesWithUnderscoreInForOfLoop.js] -function f() { +function t1() { for (var _i = 0, _c = [['key', 1]]; _i < _c.length; _i++) { var _d = _c[_i], _a = _d[0], b = _d[1]; console.log(b); @@ -26,3 +43,25 @@ function f() { var _k = _j[_h], _a = _k[0], _b = _k[1]; } } +function t2() { + for (var _i = 0, _c = [['key', 1]]; _i < _c.length; _i++) { + var _d = _c[_i], _a = _d[0], b = _d[1]; + } + for (var _e = 0, _f = [['key', 1]]; _e < _f.length; _e++) { + var _g = _f[_e], a = _g[0], _b = _g[1]; + } + for (var _h = 0, _j = [['key', 1]]; _h < _j.length; _h++) { + var _k = _j[_h], a = _k[0], b = _k[1]; + } +} +function t3() { + for (var _i = 0, _c = [[[['key', 1]]]]; _i < _c.length; _i++) { + var _d = _c[_i][0][0], _a = _d[0], b = _d[1]; + } + for (var _e = 0, _f = [[[['key', 1]]]]; _e < _f.length; _e++) { + var _g = _f[_e][0][0], a = _g[0], _b = _g[1]; + } + for (var _h = 0, _j = [[[['key', 1]]]]; _h < _j.length; _h++) { + var _k = _j[_h][0][0], a = _k[0], b = _k[1]; + } +} diff --git a/tests/baselines/reference/unusedVariablesWithUnderscoreInForOfLoop.symbols b/tests/baselines/reference/unusedVariablesWithUnderscoreInForOfLoop.symbols index d6c97536d3b4f..2bc45a8911a2f 100644 --- a/tests/baselines/reference/unusedVariablesWithUnderscoreInForOfLoop.symbols +++ b/tests/baselines/reference/unusedVariablesWithUnderscoreInForOfLoop.symbols @@ -1,6 +1,6 @@ === tests/cases/compiler/unusedVariablesWithUnderscoreInForOfLoop.ts === -function f() { ->f : Symbol(f, Decl(unusedVariablesWithUnderscoreInForOfLoop.ts, 0, 0)) +function t1() { +>t1 : Symbol(t1, Decl(unusedVariablesWithUnderscoreInForOfLoop.ts, 0, 0)) for (const [_a, b] of [['key', 1]]) { >_a : Symbol(_a, Decl(unusedVariablesWithUnderscoreInForOfLoop.ts, 1, 16)) @@ -29,3 +29,36 @@ function f() { >_b : Symbol(_b, Decl(unusedVariablesWithUnderscoreInForOfLoop.ts, 9, 19)) } + +function t2() { +>t2 : Symbol(t2, Decl(unusedVariablesWithUnderscoreInForOfLoop.ts, 10, 1)) + + for (const [_a, b] of [['key', 1]]) {} +>_a : Symbol(_a, Decl(unusedVariablesWithUnderscoreInForOfLoop.ts, 14, 16)) +>b : Symbol(b, Decl(unusedVariablesWithUnderscoreInForOfLoop.ts, 14, 19)) + + for (const [a, _b] of [['key', 1]]) {} +>a : Symbol(a, Decl(unusedVariablesWithUnderscoreInForOfLoop.ts, 16, 16)) +>_b : Symbol(_b, Decl(unusedVariablesWithUnderscoreInForOfLoop.ts, 16, 18)) + + for (const [a, b] of [['key', 1]]) {} +>a : Symbol(a, Decl(unusedVariablesWithUnderscoreInForOfLoop.ts, 18, 16)) +>b : Symbol(b, Decl(unusedVariablesWithUnderscoreInForOfLoop.ts, 18, 18)) +} + +function t3() { +>t3 : Symbol(t3, Decl(unusedVariablesWithUnderscoreInForOfLoop.ts, 19, 1)) + + for (const [[[_a, b]]] of [[[['key', 1]]]]) {} +>_a : Symbol(_a, Decl(unusedVariablesWithUnderscoreInForOfLoop.ts, 22, 18)) +>b : Symbol(b, Decl(unusedVariablesWithUnderscoreInForOfLoop.ts, 22, 21)) + + for (const [[[a, _b]]] of [[[['key', 1]]]]) {} +>a : Symbol(a, Decl(unusedVariablesWithUnderscoreInForOfLoop.ts, 24, 18)) +>_b : Symbol(_b, Decl(unusedVariablesWithUnderscoreInForOfLoop.ts, 24, 20)) + + for (const [[[a, b]]] of [[[['key', 1]]]]) {} +>a : Symbol(a, Decl(unusedVariablesWithUnderscoreInForOfLoop.ts, 26, 18)) +>b : Symbol(b, Decl(unusedVariablesWithUnderscoreInForOfLoop.ts, 26, 20)) +} + diff --git a/tests/baselines/reference/unusedVariablesWithUnderscoreInForOfLoop.types b/tests/baselines/reference/unusedVariablesWithUnderscoreInForOfLoop.types index eb1ce0b0bbeae..b86d820a46b91 100644 --- a/tests/baselines/reference/unusedVariablesWithUnderscoreInForOfLoop.types +++ b/tests/baselines/reference/unusedVariablesWithUnderscoreInForOfLoop.types @@ -1,6 +1,6 @@ === tests/cases/compiler/unusedVariablesWithUnderscoreInForOfLoop.ts === -function f() { ->f : () => void +function t1() { +>t1 : () => void for (const [_a, b] of [['key', 1]]) { >_a : string | number @@ -43,3 +43,66 @@ function f() { >1 : 1 } + +function t2() { +>t2 : () => void + + for (const [_a, b] of [['key', 1]]) {} +>_a : string | number +>b : string | number +>[['key', 1]] : (string | number)[][] +>['key', 1] : (string | number)[] +>'key' : "key" +>1 : 1 + + for (const [a, _b] of [['key', 1]]) {} +>a : string | number +>_b : string | number +>[['key', 1]] : (string | number)[][] +>['key', 1] : (string | number)[] +>'key' : "key" +>1 : 1 + + for (const [a, b] of [['key', 1]]) {} +>a : string | number +>b : string | number +>[['key', 1]] : (string | number)[][] +>['key', 1] : (string | number)[] +>'key' : "key" +>1 : 1 +} + +function t3() { +>t3 : () => void + + for (const [[[_a, b]]] of [[[['key', 1]]]]) {} +>_a : string | number +>b : string | number +>[[[['key', 1]]]] : (string | number)[][][][] +>[[['key', 1]]] : (string | number)[][][] +>[['key', 1]] : (string | number)[][] +>['key', 1] : (string | number)[] +>'key' : "key" +>1 : 1 + + for (const [[[a, _b]]] of [[[['key', 1]]]]) {} +>a : string | number +>_b : string | number +>[[[['key', 1]]]] : (string | number)[][][][] +>[[['key', 1]]] : (string | number)[][][] +>[['key', 1]] : (string | number)[][] +>['key', 1] : (string | number)[] +>'key' : "key" +>1 : 1 + + for (const [[[a, b]]] of [[[['key', 1]]]]) {} +>a : string | number +>b : string | number +>[[[['key', 1]]]] : (string | number)[][][][] +>[[['key', 1]]] : (string | number)[][][] +>[['key', 1]] : (string | number)[][] +>['key', 1] : (string | number)[] +>'key' : "key" +>1 : 1 +} + diff --git a/tests/baselines/reference/unusedVariablesWithUnderscoreInForOfLoop1.errors.txt b/tests/baselines/reference/unusedVariablesWithUnderscoreInForOfLoop1.errors.txt deleted file mode 100644 index fa8b7d9d55caf..0000000000000 --- a/tests/baselines/reference/unusedVariablesWithUnderscoreInForOfLoop1.errors.txt +++ /dev/null @@ -1,23 +0,0 @@ -tests/cases/compiler/unusedVariablesWithUnderscoreInForOfLoop1.ts(2,21): error TS6133: 'b' is declared but its value is never read. -tests/cases/compiler/unusedVariablesWithUnderscoreInForOfLoop1.ts(4,17): error TS6133: 'a' is declared but its value is never read. -tests/cases/compiler/unusedVariablesWithUnderscoreInForOfLoop1.ts(6,17): error TS6133: 'a' is declared but its value is never read. -tests/cases/compiler/unusedVariablesWithUnderscoreInForOfLoop1.ts(6,20): error TS6133: 'b' is declared but its value is never read. - - -==== tests/cases/compiler/unusedVariablesWithUnderscoreInForOfLoop1.ts (4 errors) ==== - function f() { - for (const [_a, b] of [['key', 1]]) {} - ~ -!!! error TS6133: 'b' is declared but its value is never read. - - for (const [a, _b] of [['key', 1]]) {} - ~ -!!! error TS6133: 'a' is declared but its value is never read. - - for (const [a, b] of [['key', 1]]) {} - ~ -!!! error TS6133: 'a' is declared but its value is never read. - ~ -!!! error TS6133: 'b' is declared but its value is never read. - } - \ No newline at end of file diff --git a/tests/baselines/reference/unusedVariablesWithUnderscoreInForOfLoop1.js b/tests/baselines/reference/unusedVariablesWithUnderscoreInForOfLoop1.js deleted file mode 100644 index bb5ecbfe974c2..0000000000000 --- a/tests/baselines/reference/unusedVariablesWithUnderscoreInForOfLoop1.js +++ /dev/null @@ -1,22 +0,0 @@ -//// [unusedVariablesWithUnderscoreInForOfLoop1.ts] -function f() { - for (const [_a, b] of [['key', 1]]) {} - - for (const [a, _b] of [['key', 1]]) {} - - for (const [a, b] of [['key', 1]]) {} -} - - -//// [unusedVariablesWithUnderscoreInForOfLoop1.js] -function f() { - for (var _i = 0, _c = [['key', 1]]; _i < _c.length; _i++) { - var _d = _c[_i], _a = _d[0], b = _d[1]; - } - for (var _e = 0, _f = [['key', 1]]; _e < _f.length; _e++) { - var _g = _f[_e], a = _g[0], _b = _g[1]; - } - for (var _h = 0, _j = [['key', 1]]; _h < _j.length; _h++) { - var _k = _j[_h], a = _k[0], b = _k[1]; - } -} diff --git a/tests/baselines/reference/unusedVariablesWithUnderscoreInForOfLoop1.symbols b/tests/baselines/reference/unusedVariablesWithUnderscoreInForOfLoop1.symbols deleted file mode 100644 index b98293944afd4..0000000000000 --- a/tests/baselines/reference/unusedVariablesWithUnderscoreInForOfLoop1.symbols +++ /dev/null @@ -1,17 +0,0 @@ -=== tests/cases/compiler/unusedVariablesWithUnderscoreInForOfLoop1.ts === -function f() { ->f : Symbol(f, Decl(unusedVariablesWithUnderscoreInForOfLoop1.ts, 0, 0)) - - for (const [_a, b] of [['key', 1]]) {} ->_a : Symbol(_a, Decl(unusedVariablesWithUnderscoreInForOfLoop1.ts, 1, 16)) ->b : Symbol(b, Decl(unusedVariablesWithUnderscoreInForOfLoop1.ts, 1, 19)) - - for (const [a, _b] of [['key', 1]]) {} ->a : Symbol(a, Decl(unusedVariablesWithUnderscoreInForOfLoop1.ts, 3, 16)) ->_b : Symbol(_b, Decl(unusedVariablesWithUnderscoreInForOfLoop1.ts, 3, 18)) - - for (const [a, b] of [['key', 1]]) {} ->a : Symbol(a, Decl(unusedVariablesWithUnderscoreInForOfLoop1.ts, 5, 16)) ->b : Symbol(b, Decl(unusedVariablesWithUnderscoreInForOfLoop1.ts, 5, 18)) -} - diff --git a/tests/baselines/reference/unusedVariablesWithUnderscoreInForOfLoop1.types b/tests/baselines/reference/unusedVariablesWithUnderscoreInForOfLoop1.types deleted file mode 100644 index 100e87191482f..0000000000000 --- a/tests/baselines/reference/unusedVariablesWithUnderscoreInForOfLoop1.types +++ /dev/null @@ -1,29 +0,0 @@ -=== tests/cases/compiler/unusedVariablesWithUnderscoreInForOfLoop1.ts === -function f() { ->f : () => void - - for (const [_a, b] of [['key', 1]]) {} ->_a : string | number ->b : string | number ->[['key', 1]] : (string | number)[][] ->['key', 1] : (string | number)[] ->'key' : "key" ->1 : 1 - - for (const [a, _b] of [['key', 1]]) {} ->a : string | number ->_b : string | number ->[['key', 1]] : (string | number)[][] ->['key', 1] : (string | number)[] ->'key' : "key" ->1 : 1 - - for (const [a, b] of [['key', 1]]) {} ->a : string | number ->b : string | number ->[['key', 1]] : (string | number)[][] ->['key', 1] : (string | number)[] ->'key' : "key" ->1 : 1 -} - diff --git a/tests/baselines/reference/user/TypeScript-Node-Starter.log b/tests/baselines/reference/user/TypeScript-Node-Starter.log index 3402e302067f7..6adb391fc36a3 100644 --- a/tests/baselines/reference/user/TypeScript-Node-Starter.log +++ b/tests/baselines/reference/user/TypeScript-Node-Starter.log @@ -3,14 +3,48 @@ Standard output: node_modules/connect-mongo/src/types.d.ts(113,66): error TS2694: Namespace 'Express' has no exported member 'SessionData'. node_modules/connect-mongo/src/types.d.ts(114,45): error TS2694: Namespace 'Express' has no exported member 'SessionData'. node_modules/connect-mongo/src/types.d.ts(118,47): error TS2694: Namespace 'Express' has no exported member 'SessionData'. -src/app.ts(72,21): error TS2339: Property 'returnTo' does not exist on type 'Session | InitializedSession'. - Property 'returnTo' does not exist on type 'Session'. -src/app.ts(75,21): error TS2339: Property 'returnTo' does not exist on type 'Session | InitializedSession'. - Property 'returnTo' does not exist on type 'Session'. -src/app.ts(116,30): error TS2339: Property 'returnTo' does not exist on type 'Session | InitializedSession'. - Property 'returnTo' does not exist on type 'Session'. -src/controllers/user.ts(51,38): error TS2339: Property 'returnTo' does not exist on type 'Session | InitializedSession'. - Property 'returnTo' does not exist on type 'Session'. +src/app.ts(72,21): error TS2339: Property 'returnTo' does not exist on type 'Session & Partial'. +src/app.ts(75,21): error TS2339: Property 'returnTo' does not exist on type 'Session & Partial'. +src/app.ts(116,30): error TS2339: Property 'returnTo' does not exist on type 'Session & Partial'. +src/config/passport.ts(14,5): error TS2349: This expression is not callable. + Type 'User' has no call signatures. +src/config/passport.ts(18,24): error TS7006: Parameter 'err' implicitly has an 'any' type. +src/config/passport.ts(18,29): error TS7006: Parameter 'user' implicitly has an 'any' type. +src/config/passport.ts(28,51): error TS7006: Parameter 'err' implicitly has an 'any' type. +src/config/passport.ts(71,49): error TS7006: Parameter 'err' implicitly has an 'any' type. +src/config/passport.ts(71,54): error TS7006: Parameter 'existingUser' implicitly has an 'any' type. +src/config/passport.ts(77,45): error TS7006: Parameter 'err' implicitly has an 'any' type. +src/config/passport.ts(92,49): error TS7006: Parameter 'err' implicitly has an 'any' type. +src/config/passport.ts(92,54): error TS7006: Parameter 'existingUser' implicitly has an 'any' type. +src/config/passport.ts(97,59): error TS7006: Parameter 'err' implicitly has an 'any' type. +src/config/passport.ts(97,64): error TS7006: Parameter 'existingEmailUser' implicitly has an 'any' type. +src/controllers/user.ts(51,38): error TS2339: Property 'returnTo' does not exist on type 'Session & Partial'. +src/controllers/user.ts(101,46): error TS7006: Parameter 'err' implicitly has an 'any' type. +src/controllers/user.ts(101,51): error TS7006: Parameter 'existingUser' implicitly has an 'any' type. +src/controllers/user.ts(146,29): error TS7006: Parameter 'err' implicitly has an 'any' type. +src/controllers/user.ts(153,19): error TS2769: No overload matches this call. + Overload 1 of 3, '(options?: SaveOptions): Promise', gave the following error. + Type '(err: WriteError) => void' has no properties in common with type 'SaveOptions'. + Overload 2 of 3, '(options?: SaveOptions, fn?: (err: NativeError, doc: UserDocument) => void): void', gave the following error. + Type '(err: WriteError) => void' has no properties in common with type 'SaveOptions'. + Overload 3 of 3, '(fn?: (err: NativeError, doc: UserDocument) => void): void', gave the following error. + Argument of type '(err: WriteError) => void' is not assignable to parameter of type '(err: NativeError, doc: UserDocument) => void'. + Types of parameters 'err' and 'err' are incompatible. + Type 'NativeError' is missing the following properties from type 'WriteError': code, index, errmsg +src/controllers/user.ts(183,29): error TS7006: Parameter 'err' implicitly has an 'any' type. +src/controllers/user.ts(186,19): error TS2769: No overload matches this call. + Overload 1 of 3, '(options?: SaveOptions): Promise', gave the following error. + Type '(err: WriteError) => void' has no properties in common with type 'SaveOptions'. + Overload 2 of 3, '(options?: SaveOptions, fn?: (err: NativeError, doc: UserDocument) => void): void', gave the following error. + Type '(err: WriteError) => void' has no properties in common with type 'SaveOptions'. + Overload 3 of 3, '(fn?: (err: NativeError, doc: UserDocument) => void): void', gave the following error. + Argument of type '(err: WriteError) => void' is not assignable to parameter of type '(err: NativeError, doc: UserDocument) => void'. + Types of parameters 'err' and 'err' are incompatible. + Type 'NativeError' is not assignable to type 'WriteError'. +src/controllers/user.ts(215,29): error TS7006: Parameter 'err' implicitly has an 'any' type. +src/controllers/user.ts(349,54): error TS7006: Parameter 'err' implicitly has an 'any' type. +src/models/User.ts(81,15): error TS2339: Property 'email' does not exist on type 'Document'. +src/models/User.ts(84,54): error TS2339: Property 'email' does not exist on type 'Document'. diff --git a/tests/baselines/reference/user/TypeScript-WeChat-Starter.log b/tests/baselines/reference/user/TypeScript-WeChat-Starter.log index ffbea15477bbf..04c1a1db03d35 100644 --- a/tests/baselines/reference/user/TypeScript-WeChat-Starter.log +++ b/tests/baselines/reference/user/TypeScript-WeChat-Starter.log @@ -1,11 +1,6 @@ Exit Code: 2 Standard output: -node_modules/@types/connect/index.d.ts(21,42): error TS2689: Cannot extend an interface 'http.IncomingMessage'. Did you mean 'implements'? -node_modules/@types/serve-static/index.d.ts(18,45): error TS2694: Namespace '"http"' has no exported member 'OutgoingMessage'. -node_modules/@types/serve-static/index.d.ts(25,49): error TS2694: Namespace '"http"' has no exported member 'OutgoingMessage'. -node_modules/@types/serve-static/index.d.ts(25,72): error TS2694: Namespace '"http"' has no exported member 'OutgoingMessage'. -node_modules/@types/serve-static/index.d.ts(98,45): error TS2694: Namespace '"http"' has no exported member 'OutgoingMessage'. -node_modules/@types/serve-static/index.d.ts(102,56): error TS2694: Namespace '"http"' has no exported member 'OutgoingMessage'. +node_modules/@types/connect/index.d.ts(20,42): error TS2689: Cannot extend an interface 'http.IncomingMessage'. Did you mean 'implements'? diff --git a/tests/baselines/reference/user/acorn.log b/tests/baselines/reference/user/acorn.log index 368f26b5eef66..2fa0b829304cd 100644 --- a/tests/baselines/reference/user/acorn.log +++ b/tests/baselines/reference/user/acorn.log @@ -479,32 +479,26 @@ node_modules/acorn/acorn/dist/bin.js(54,30): error TS2769: No overload matches t Argument of type '2 | null' is not assignable to parameter of type 'string | number | undefined'. Type 'null' is not assignable to type 'string | number | undefined'. node_modules/acorn/acorn/dist/bin.js(58,23): error TS2769: No overload matches this call. - Overload 1 of 3, '(path: string | number | Buffer | URL, options?: { encoding?: null | undefined; flag?: string | undefined; } | null | undefined): Buffer', gave the following error. - Argument of type 'string | undefined' is not assignable to parameter of type 'string | number | Buffer | URL'. - Type 'undefined' is not assignable to type 'string | number | Buffer | URL'. - Overload 2 of 3, '(path: string | number | Buffer | URL, options: { encoding: BufferEncoding; flag?: string | undefined; } | "ascii" | "utf8" | "utf-8" | "utf16le" | "ucs2" | ... 4 more ... | "hex"): string', gave the following error. - Argument of type 'string | undefined' is not assignable to parameter of type 'string | number | Buffer | URL'. - Type 'undefined' is not assignable to type 'string | number | Buffer | URL'. - Overload 3 of 3, '(path: string | number | Buffer | URL, options?: "ascii" | "utf8" | "utf-8" | "utf16le" | "ucs2" | "ucs-2" | "base64" | "latin1" | "binary" | "hex" | (BaseEncodingOptions & { ...; }) | null | undefined): string | Buffer', gave the following error. - Argument of type 'string | undefined' is not assignable to parameter of type 'string | number | Buffer | URL'. - Type 'undefined' is not assignable to type 'string | number | Buffer | URL'. + Overload 1 of 3, '(path: number | PathLike, options?: { encoding?: null | undefined; flag?: string | undefined; } | null | undefined): Buffer', gave the following error. + Argument of type 'string | undefined' is not assignable to parameter of type 'number | PathLike'. + Type 'undefined' is not assignable to type 'number | PathLike'. + Overload 2 of 3, '(path: number | PathLike, options: { encoding: BufferEncoding; flag?: string | undefined; } | BufferEncoding): string', gave the following error. + Argument of type 'string | undefined' is not assignable to parameter of type 'number | PathLike'. + Overload 3 of 3, '(path: number | PathLike, options?: BufferEncoding | (BaseEncodingOptions & { flag?: string | undefined; }) | null | undefined): string | Buffer', gave the following error. + Argument of type 'string | undefined' is not assignable to parameter of type 'number | PathLike'. node_modules/acorn/bin/_acorn.js(51,30): error TS2339: Property 'getToken' does not exist on type 'Parser'. node_modules/acorn/bin/_acorn.js(59,30): error TS2769: No overload matches this call. Overload 1 of 2, '(value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string', gave the following error. Argument of type 'null' is not assignable to parameter of type '((this: any, key: string, value: any) => any) | undefined'. Overload 2 of 2, '(value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string', gave the following error. Argument of type '2 | null' is not assignable to parameter of type 'string | number | undefined'. - Type 'null' is not assignable to type 'string | number | undefined'. node_modules/acorn/bin/_acorn.js(63,23): error TS2769: No overload matches this call. - Overload 1 of 3, '(path: string | number | Buffer | URL, options?: { encoding?: null | undefined; flag?: string | undefined; } | null | undefined): Buffer', gave the following error. - Argument of type 'string | undefined' is not assignable to parameter of type 'string | number | Buffer | URL'. - Type 'undefined' is not assignable to type 'string | number | Buffer | URL'. - Overload 2 of 3, '(path: string | number | Buffer | URL, options: { encoding: BufferEncoding; flag?: string | undefined; } | "ascii" | "utf8" | "utf-8" | "utf16le" | "ucs2" | ... 4 more ... | "hex"): string', gave the following error. - Argument of type 'string | undefined' is not assignable to parameter of type 'string | number | Buffer | URL'. - Type 'undefined' is not assignable to type 'string | number | Buffer | URL'. - Overload 3 of 3, '(path: string | number | Buffer | URL, options?: "ascii" | "utf8" | "utf-8" | "utf16le" | "ucs2" | "ucs-2" | "base64" | "latin1" | "binary" | "hex" | (BaseEncodingOptions & { ...; }) | null | undefined): string | Buffer', gave the following error. - Argument of type 'string | undefined' is not assignable to parameter of type 'string | number | Buffer | URL'. - Type 'undefined' is not assignable to type 'string | number | Buffer | URL'. + Overload 1 of 3, '(path: number | PathLike, options?: { encoding?: null | undefined; flag?: string | undefined; } | null | undefined): Buffer', gave the following error. + Argument of type 'string | undefined' is not assignable to parameter of type 'number | PathLike'. + Overload 2 of 3, '(path: number | PathLike, options: { encoding: BufferEncoding; flag?: string | undefined; } | BufferEncoding): string', gave the following error. + Argument of type 'string | undefined' is not assignable to parameter of type 'number | PathLike'. + Overload 3 of 3, '(path: number | PathLike, options?: BufferEncoding | (BaseEncodingOptions & { flag?: string | undefined; }) | null | undefined): string | Buffer', gave the following error. + Argument of type 'string | undefined' is not assignable to parameter of type 'number | PathLike'. node_modules/acorn/bin/run_test262.js(3,21): error TS2307: Cannot find module 'test262-parser-runner' or its corresponding type declarations. node_modules/acorn/dist/acorn.es.js(36,1): error TS2322: Type 'null' is not assignable to type 'string'. node_modules/acorn/dist/acorn.es.js(36,32): error TS2322: Type 'null' is not assignable to type 'string'. diff --git a/tests/baselines/reference/user/adonis-framework.log b/tests/baselines/reference/user/adonis-framework.log index 29ca20938d17a..ecd5417f154a1 100644 --- a/tests/baselines/reference/user/adonis-framework.log +++ b/tests/baselines/reference/user/adonis-framework.log @@ -35,19 +35,19 @@ node_modules/adonis-framework/src/Config/index.js(39,15): error TS2304: Cannot f node_modules/adonis-framework/src/Config/index.js(58,15): error TS2304: Cannot find name 'Mixed'. node_modules/adonis-framework/src/Encryption/index.js(53,15): error TS2304: Cannot find name 'Mixed'. node_modules/adonis-framework/src/Encryption/index.js(71,34): error TS2769: No overload matches this call. - Overload 1 of 4, '(data: ArrayBufferView, input_encoding: undefined, output_encoding: HexBase64BinaryEncoding): string', gave the following error. + Overload 1 of 4, '(data: ArrayBufferView, input_encoding: undefined, output_encoding: BinaryToTextEncoding): string', gave the following error. Argument of type 'string' is not assignable to parameter of type 'undefined'. - Overload 2 of 4, '(data: string, input_encoding: "utf8" | "ascii" | "binary" | undefined, output_encoding: HexBase64BinaryEncoding): string', gave the following error. - Argument of type 'string' is not assignable to parameter of type '"utf8" | "ascii" | "binary" | undefined'. + Overload 2 of 4, '(data: string, input_encoding: Encoding | undefined, output_encoding: BinaryToTextEncoding): string', gave the following error. + Argument of type 'string' is not assignable to parameter of type 'Encoding | undefined'. node_modules/adonis-framework/src/Encryption/index.js(77,27): error TS2322: Type 'string' is not assignable to type 'Buffer'. node_modules/adonis-framework/src/Encryption/index.js(77,50): error TS2345: Argument of type 'Buffer' is not assignable to parameter of type 'string'. node_modules/adonis-framework/src/Encryption/index.js(85,23): error TS8024: JSDoc '@param' tag has name 'value', but there is no parameter with that name. node_modules/adonis-framework/src/Encryption/index.js(87,15): error TS2304: Cannot find name 'Mixed'. -node_modules/adonis-framework/src/Encryption/index.js(101,62): error TS2769: No overload matches this call. - Overload 1 of 4, '(data: ArrayBufferView, input_encoding: "base64" | "binary" | "hex" | undefined, output_encoding: Utf8AsciiBinaryEncoding): string', gave the following error. - Argument of type 'string' is not assignable to parameter of type 'Utf8AsciiBinaryEncoding'. - Overload 2 of 4, '(data: string, input_encoding: "base64" | "binary" | "hex" | undefined, output_encoding: Utf8AsciiBinaryEncoding): string', gave the following error. - Argument of type 'string' is not assignable to parameter of type 'Utf8AsciiBinaryEncoding'. +node_modules/adonis-framework/src/Encryption/index.js(101,21): error TS2769: No overload matches this call. + Overload 1 of 4, '(data: ArrayBufferView, input_encoding: undefined, output_encoding: Encoding): string', gave the following error. + Argument of type '"base64"' is not assignable to parameter of type 'undefined'. + Overload 2 of 4, '(data: string, input_encoding: BinaryToTextEncoding | undefined, output_encoding: Encoding): string', gave the following error. + Argument of type 'string' is not assignable to parameter of type 'Encoding'. node_modules/adonis-framework/src/Encryption/index.js(102,5): error TS2322: Type 'string' is not assignable to type 'Buffer & string'. Type 'string' is not assignable to type 'Buffer'. node_modules/adonis-framework/src/Encryption/index.js(102,33): error TS2345: Argument of type 'string' is not assignable to parameter of type 'BufferEncoding'. @@ -72,8 +72,8 @@ node_modules/adonis-framework/src/Event/index.js(207,24): error TS2304: Cannot f node_modules/adonis-framework/src/Event/index.js(256,52): error TS2345: Argument of type 'Function' is not assignable to parameter of type 'Listener'. Type 'Function' provides no match for the signature '(...values: any[]): void'. node_modules/adonis-framework/src/Event/index.js(264,28): error TS2345: Argument of type 'Function' is not assignable to parameter of type 'Listener'. -node_modules/adonis-framework/src/Event/index.js(271,25): error TS2345: Argument of type 'IArguments' is not assignable to parameter of type '[event: string, name: any, handler: TimerHandler]'. -node_modules/adonis-framework/src/Event/index.js(278,25): error TS2345: Argument of type 'IArguments' is not assignable to parameter of type '[event: string, name: any, handler: TimerHandler]'. +node_modules/adonis-framework/src/Event/index.js(271,25): error TS2345: Argument of type 'IArguments' is not assignable to parameter of type '[event: string, name: any, handler: string | Function]'. +node_modules/adonis-framework/src/Event/index.js(278,25): error TS2345: Argument of type 'IArguments' is not assignable to parameter of type '[event: string, name: any, handler: string | Function]'. node_modules/adonis-framework/src/Event/index.js(294,30): error TS2345: Argument of type 'Function' is not assignable to parameter of type 'Listener'. node_modules/adonis-framework/src/Exceptions/index.js(13,14): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. node_modules/adonis-framework/src/Exceptions/index.js(27,21): error TS2554: Expected 0 arguments, but got 3. @@ -125,7 +125,7 @@ node_modules/adonis-framework/src/Request/index.js(466,15): error TS2304: Cannot node_modules/adonis-framework/src/Request/index.js(468,15): error TS2304: Cannot find name 'Mixed'. node_modules/adonis-framework/src/Request/index.js(480,14): error TS2304: Cannot find name 'Mixed'. node_modules/adonis-framework/src/Request/index.js(482,15): error TS2304: Cannot find name 'Mixed'. -node_modules/adonis-framework/src/Request/index.js(499,17): error TS2551: Property '_params' does not exist on type 'Request'. Did you mean 'param'? +node_modules/adonis-framework/src/Request/index.js(499,17): error TS2551: Property '_params' does not exist on type 'Request'. Did you mean 'params'? node_modules/adonis-framework/src/Request/index.js(523,15): error TS2304: Cannot find name 'Objecr'. node_modules/adonis-framework/src/Request/index.js(572,23): error TS8029: JSDoc '@param' tag has name 'pattern', but there is no parameter with that name. It would match 'arguments' if it had an array type. node_modules/adonis-framework/src/Request/index.js(600,17): error TS2554: Expected 2 arguments, but got 1. diff --git a/tests/baselines/reference/user/axios-src.log b/tests/baselines/reference/user/axios-src.log index 6c9b9a57adf2d..83b628fd48844 100644 --- a/tests/baselines/reference/user/axios-src.log +++ b/tests/baselines/reference/user/axios-src.log @@ -1,17 +1,20 @@ Exit Code: 2 Standard output: lib/adapters/http.js(13,19): error TS2732: Cannot find module './../../package.json'. Consider using '--resolveJsonModule' to import module with '.json' extension. -lib/adapters/http.js(84,22): error TS2345: Argument of type 'string | null' is not assignable to parameter of type 'string'. +lib/adapters/http.js(22,12): error TS2304: Cannot find name 'AxiosProxyConfig'. +lib/adapters/http.js(34,5): error TS2532: Object is possibly 'undefined'. +lib/adapters/http.js(38,11): error TS2339: Property 'beforeRedirect' does not exist on type 'ClientRequestArgs'. +lib/adapters/http.js(109,22): error TS2345: Argument of type 'string | null' is not assignable to parameter of type 'string'. Type 'null' is not assignable to type 'string'. -lib/adapters/http.js(121,17): error TS2531: Object is possibly 'null'. -lib/adapters/http.js(121,40): error TS2531: Object is possibly 'null'. -lib/adapters/http.js(225,23): error TS2345: Argument of type 'null' is not assignable to parameter of type 'string | undefined'. -lib/adapters/http.js(231,44): error TS2345: Argument of type 'null' is not assignable to parameter of type 'string | undefined'. -lib/adapters/http.js(237,13): error TS2322: Type 'string' is not assignable to type 'Buffer'. -lib/adapters/http.js(239,15): error TS2322: Type 'string' is not assignable to type 'Buffer'. -lib/adapters/http.js(239,45): error TS2345: Argument of type 'Buffer' is not assignable to parameter of type 'string'. -lib/adapters/http.js(252,40): error TS2345: Argument of type 'null' is not assignable to parameter of type 'string | undefined'. -lib/adapters/http.js(281,42): error TS2345: Argument of type 'null' is not assignable to parameter of type 'string | undefined'. +lib/adapters/http.js(146,17): error TS2531: Object is possibly 'null'. +lib/adapters/http.js(146,40): error TS2531: Object is possibly 'null'. +lib/adapters/http.js(241,23): error TS2345: Argument of type 'null' is not assignable to parameter of type 'string | undefined'. +lib/adapters/http.js(247,44): error TS2345: Argument of type 'null' is not assignable to parameter of type 'string | undefined'. +lib/adapters/http.js(253,13): error TS2322: Type 'string' is not assignable to type 'Buffer'. +lib/adapters/http.js(255,15): error TS2322: Type 'string' is not assignable to type 'Buffer'. +lib/adapters/http.js(255,45): error TS2345: Argument of type 'Buffer' is not assignable to parameter of type 'string'. +lib/adapters/http.js(268,40): error TS2345: Argument of type 'null' is not assignable to parameter of type 'string | undefined'. +lib/adapters/http.js(297,42): error TS2345: Argument of type 'null' is not assignable to parameter of type 'string | undefined'. lib/adapters/xhr.js(65,7): error TS2322: Type 'null' is not assignable to type 'XMLHttpRequest'. lib/adapters/xhr.js(77,7): error TS2322: Type 'null' is not assignable to type 'XMLHttpRequest'. lib/adapters/xhr.js(84,51): error TS2345: Argument of type 'null' is not assignable to parameter of type 'string | undefined'. @@ -49,7 +52,7 @@ lib/core/enhanceError.js(38,18): error TS2339: Property 'code' does not exist on lib/core/settle.js(20,7): error TS2345: Argument of type 'null' is not assignable to parameter of type 'string | undefined'. lib/helpers/buildURL.js(22,49): error TS1016: A required parameter cannot follow an optional parameter. lib/helpers/cookies.js(16,56): error TS2551: Property 'toGMTString' does not exist on type 'Date'. Did you mean 'toUTCString'? -lib/utils.js(273,20): error TS8029: JSDoc '@param' tag has name 'obj1', but there is no parameter with that name. It would match 'arguments' if it had an array type. +lib/utils.js(271,20): error TS8029: JSDoc '@param' tag has name 'obj1', but there is no parameter with that name. It would match 'arguments' if it had an array type. diff --git a/tests/baselines/reference/user/bcryptjs.log b/tests/baselines/reference/user/bcryptjs.log index 11e3f3638be44..9f9c929d985c2 100644 --- a/tests/baselines/reference/user/bcryptjs.log +++ b/tests/baselines/reference/user/bcryptjs.log @@ -28,7 +28,7 @@ node_modules/bcryptjs/src/bcrypt/util.js(20,5): error TS2304: Cannot find name ' node_modules/bcryptjs/src/wrap.js(37,26): error TS2304: Cannot find name 'define'. node_modules/bcryptjs/src/wrap.js(37,51): error TS2304: Cannot find name 'define'. node_modules/bcryptjs/src/wrap.js(38,9): error TS2304: Cannot find name 'define'. -node_modules/bcryptjs/src/wrap.js(49,12): error TS2552: Cannot find name 'bcrypt'. Did you mean 'Crypto'? +node_modules/bcryptjs/src/wrap.js(49,12): error TS2552: Cannot find name 'bcrypt'. Did you mean 'crypto'? node_modules/bcryptjs/tests/suite.js(3,23): error TS2307: Cannot find module 'bcrypt' or its corresponding type declarations. diff --git a/tests/baselines/reference/user/chrome-devtools-frontend.log b/tests/baselines/reference/user/chrome-devtools-frontend.log index 615af100290c1..e371b230d8fd5 100644 --- a/tests/baselines/reference/user/chrome-devtools-frontend.log +++ b/tests/baselines/reference/user/chrome-devtools-frontend.log @@ -1,6 +1,6 @@ Exit Code: 2 Standard output: -../../../../built/local/lib.es5.d.ts(1451,11): error TS2300: Duplicate identifier 'ArrayLike'. +../../../../built/local/lib.es5.d.ts(1463,11): error TS2300: Duplicate identifier 'ArrayLike'. node_modules/chrome-devtools-frontend/front_end/Runtime.js(43,8): error TS2339: Property '_importScriptPathPrefix' does not exist on type 'Window & typeof globalThis'. node_modules/chrome-devtools-frontend/front_end/Runtime.js(77,16): error TS7014: Function type, which lacks return-type annotation, implicitly has an 'any' return type. node_modules/chrome-devtools-frontend/front_end/Runtime.js(78,16): error TS7014: Function type, which lacks return-type annotation, implicitly has an 'any' return type. @@ -11,7 +11,7 @@ node_modules/chrome-devtools-frontend/front_end/Runtime.js(270,9): error TS2322: node_modules/chrome-devtools-frontend/front_end/Runtime.js(280,5): error TS2322: Type 'Promise' is not assignable to type 'Promise'. node_modules/chrome-devtools-frontend/front_end/Runtime.js(283,12): error TS2554: Expected 2-3 arguments, but got 1. node_modules/chrome-devtools-frontend/front_end/Runtime.js(525,9): error TS2322: Type 'Window' is not assignable to type 'Window & typeof globalThis'. - Type 'Window' is missing the following properties from type 'typeof globalThis': globalThis, eval, parseInt, parseFloat, and 839 more. + Type 'Window' is missing the following properties from type 'typeof globalThis': globalThis, eval, parseInt, parseFloat, and 838 more. node_modules/chrome-devtools-frontend/front_end/Runtime.js(527,49): error TS2352: Conversion of type 'Window & typeof globalThis' to type 'new () => any' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. Type 'Window & typeof globalThis' provides no match for the signature 'new (): any'. node_modules/chrome-devtools-frontend/front_end/Runtime.js(539,24): error TS2351: This expression is not constructable. @@ -22,7 +22,7 @@ node_modules/chrome-devtools-frontend/front_end/Runtime.js(705,5): error TS2322: node_modules/chrome-devtools-frontend/front_end/Runtime.js(715,7): error TS2322: Type 'Promise' is not assignable to type 'Promise'. node_modules/chrome-devtools-frontend/front_end/Runtime.js(729,7): error TS2322: Type 'Promise' is not assignable to type 'Promise'. node_modules/chrome-devtools-frontend/front_end/Runtime.js(746,5): error TS2322: Type 'Window | {}' is not assignable to type 'Window'. - Type '{}' is missing the following properties from type 'Window': applicationCache, clientInformation, closed, customElements, and 224 more. + Type '{}' is missing the following properties from type 'Window': applicationCache, clientInformation, closed, customElements, and 226 more. node_modules/chrome-devtools-frontend/front_end/Runtime.js(1083,15): error TS2355: A function whose declared type is neither 'void' nor 'any' must return a value. node_modules/chrome-devtools-frontend/front_end/Runtime.js(1088,15): error TS2355: A function whose declared type is neither 'void' nor 'any' must return a value. node_modules/chrome-devtools-frontend/front_end/Tests.js(203,14): error TS7014: Function type, which lacks return-type annotation, implicitly has an 'any' return type. @@ -593,6 +593,10 @@ node_modules/chrome-devtools-frontend/front_end/audits2/lighthouse/renderer/repo node_modules/chrome-devtools-frontend/front_end/audits2/lighthouse/renderer/report-renderer.js(110,47): error TS2304: Cannot find name 'Util'. node_modules/chrome-devtools-frontend/front_end/audits2/lighthouse/renderer/report-renderer.js(172,8): error TS2339: Property 'ReportRenderer' does not exist on type 'Window & typeof globalThis'. node_modules/chrome-devtools-frontend/front_end/audits2/lighthouse/renderer/report-renderer.js(193,21): error TS2503: Cannot find namespace 'DetailsRenderer'. +node_modules/chrome-devtools-frontend/front_end/audits2/lighthouse/renderer/util.js(75,54): error TS2345: Argument of type '{ month: string; day: string; year: string; hour: string; minute: string; timeZoneName: string; }' is not assignable to parameter of type 'DateTimeFormatOptions'. + Types of property 'year' are incompatible. + Type 'string' is not assignable to type '"numeric" | "2-digit"'. +node_modules/chrome-devtools-frontend/front_end/audits2/lighthouse/renderer/util.js(82,52): error TS2345: Argument of type '{ month: string; day: string; year: string; hour: string; minute: string; timeZoneName: string; }' is not assignable to parameter of type 'DateTimeFormatOptions'. node_modules/chrome-devtools-frontend/front_end/audits2/lighthouse/renderer/util.js(124,5): error TS2739: Type '{}' is missing the following properties from type '{ numPathParts: number; preserveQuery: boolean; preserveHost: boolean; }': numPathParts, preserveQuery, preserveHost node_modules/chrome-devtools-frontend/front_end/audits2_test_runner/Audits2TestRunner.js(53,12): error TS7014: Function type, which lacks return-type annotation, implicitly has an 'any' return type. node_modules/chrome-devtools-frontend/front_end/audits2_test_runner/Audits2TestRunner.js(76,33): error TS2339: Property 'textElement' does not exist on type 'Element'. @@ -1017,6 +1021,10 @@ node_modules/chrome-devtools-frontend/front_end/audits2_worker/lighthouse/lighth node_modules/chrome-devtools-frontend/front_end/audits2_worker/lighthouse/lighthouse-background.js(18584,28): error TS2792: Cannot find module '../web-inspector'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option? node_modules/chrome-devtools-frontend/front_end/audits2_worker/lighthouse/lighthouse-background.js(18840,20): error TS2792: Cannot find module '../report/v2/renderer/util.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option? node_modules/chrome-devtools-frontend/front_end/audits2_worker/lighthouse/lighthouse-background.js(19198,56): error TS2339: Property '_onRequestStarted' does not exist on type 'NetworkLog'. +node_modules/chrome-devtools-frontend/front_end/audits2_worker/lighthouse/lighthouse-background.js(19364,47): error TS2345: Argument of type '{ month: string; day: string; year: string; hour: string; minute: string; timeZoneName: string; }' is not assignable to parameter of type 'DateTimeFormatOptions'. + Types of property 'year' are incompatible. + Type 'string' is not assignable to type '"numeric" | "2-digit"'. +node_modules/chrome-devtools-frontend/front_end/audits2_worker/lighthouse/lighthouse-background.js(19371,43): error TS2345: Argument of type '{ month: string; day: string; year: string; hour: string; minute: string; timeZoneName: string; }' is not assignable to parameter of type 'DateTimeFormatOptions'. node_modules/chrome-devtools-frontend/front_end/audits2_worker/lighthouse/lighthouse-background.js(19499,6): error TS2339: Property 'Util' does not exist on type 'Window & typeof globalThis'. node_modules/chrome-devtools-frontend/front_end/audits2_worker/lighthouse/lighthouse-background.js(19512,22): error TS2792: Cannot find module './gather/driver.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option? node_modules/chrome-devtools-frontend/front_end/audits2_worker/lighthouse/lighthouse-background.js(19513,28): error TS2792: Cannot find module './gather/gather-runner'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option? @@ -5244,20 +5252,20 @@ node_modules/chrome-devtools-frontend/front_end/dom_extension/DOMExtension.js(27 node_modules/chrome-devtools-frontend/front_end/dom_extension/DOMExtension.js(289,16): error TS2339: Property 'window' does not exist on type 'Node'. node_modules/chrome-devtools-frontend/front_end/dom_extension/DOMExtension.js(293,19): error TS2339: Property 'removeChildren' does not exist on type 'Element'. node_modules/chrome-devtools-frontend/front_end/dom_extension/DOMExtension.js(305,10): error TS2769: No overload matches this call. - Overload 1 of 3, '(tagName: "object" | "link" | "small" | "sub" | "sup" | "track" | "progress" | "a" | "abbr" | "address" | "applet" | "area" | "article" | "aside" | "audio" | "b" | "base" | "basefont" | "bdi" | ... 99 more ... | "wbr", options?: ElementCreationOptions): HTMLElement | ... 70 more ... | HTMLUListElement', gave the following error. - Argument of type 'string' is not assignable to parameter of type '"object" | "link" | "small" | "sub" | "sup" | "track" | "progress" | "a" | "abbr" | "address" | "applet" | "area" | "article" | "aside" | "audio" | "b" | "base" | "basefont" | "bdi" | ... 99 more ... | "wbr"'. - Overload 2 of 3, '(tagName: "listing" | "xmp", options?: ElementCreationOptions): HTMLPreElement', gave the following error. - Argument of type 'string' is not assignable to parameter of type '"listing" | "xmp"'. + Overload 1 of 3, '(tagName: keyof HTMLElementTagNameMap, options?: ElementCreationOptions): HTMLElement | HTMLCanvasElement | ... 69 more ... | HTMLUListElement', gave the following error. + Argument of type 'string' is not assignable to parameter of type 'keyof HTMLElementTagNameMap'. + Overload 2 of 3, '(tagName: keyof HTMLElementDeprecatedTagNameMap, options?: ElementCreationOptions): HTMLPreElement', gave the following error. + Argument of type 'string' is not assignable to parameter of type 'keyof HTMLElementDeprecatedTagNameMap'. Overload 3 of 3, '(tagName: string, options?: ElementCreationOptions): HTMLElement', gave the following error. Type 'string' has no properties in common with type 'ElementCreationOptions'. node_modules/chrome-devtools-frontend/front_end/dom_extension/DOMExtension.js(314,34): error TS2345: Argument of type 'string | number' is not assignable to parameter of type 'string'. Type 'number' is not assignable to type 'string'. node_modules/chrome-devtools-frontend/front_end/dom_extension/DOMExtension.js(323,20): error TS2339: Property 'createElementWithClass' does not exist on type 'Document'. node_modules/chrome-devtools-frontend/front_end/dom_extension/DOMExtension.js(324,17): error TS2769: No overload matches this call. - Overload 1 of 3, '(tagName: "object" | "link" | "small" | "sub" | "sup" | "track" | "progress" | "a" | "abbr" | "address" | "applet" | "area" | "article" | "aside" | "audio" | "b" | "base" | "basefont" | "bdi" | ... 99 more ... | "wbr", options?: ElementCreationOptions): HTMLElement | ... 70 more ... | HTMLUListElement', gave the following error. - Argument of type 'string' is not assignable to parameter of type '"object" | "link" | "small" | "sub" | "sup" | "track" | "progress" | "a" | "abbr" | "address" | "applet" | "area" | "article" | "aside" | "audio" | "b" | "base" | "basefont" | "bdi" | ... 99 more ... | "wbr"'. - Overload 2 of 3, '(tagName: "listing" | "xmp", options?: ElementCreationOptions): HTMLPreElement', gave the following error. - Argument of type 'string' is not assignable to parameter of type '"listing" | "xmp"'. + Overload 1 of 3, '(tagName: keyof HTMLElementTagNameMap, options?: ElementCreationOptions): HTMLElement | HTMLCanvasElement | ... 69 more ... | HTMLUListElement', gave the following error. + Argument of type 'string' is not assignable to parameter of type 'keyof HTMLElementTagNameMap'. + Overload 2 of 3, '(tagName: keyof HTMLElementDeprecatedTagNameMap, options?: ElementCreationOptions): HTMLPreElement', gave the following error. + Argument of type 'string' is not assignable to parameter of type 'keyof HTMLElementDeprecatedTagNameMap'. Overload 3 of 3, '(tagName: string, options?: ElementCreationOptions): HTMLElement', gave the following error. Type 'string' has no properties in common with type 'ElementCreationOptions'. node_modules/chrome-devtools-frontend/front_end/dom_extension/DOMExtension.js(338,19): error TS2339: Property 'createElementWithClass' does not exist on type 'Document'. @@ -5619,7 +5627,7 @@ node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeOutline.js( node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeOutline.js(755,33): error TS2339: Property 'enclosingNodeOrSelfWithClass' does not exist on type 'EventTarget'. node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeOutline.js(758,36): error TS2339: Property 'enclosingNodeOrSelfWithClass' does not exist on type 'EventTarget'. node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeOutline.js(813,22): error TS2339: Property 'index' does not exist on type 'DOMNode'. -node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeOutline.js(920,9): error TS2740: Type 'Node & ParentNode' is missing the following properties from type 'Element': assignedSlot, attributes, classList, className, and 64 more. +node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeOutline.js(920,9): error TS2740: Type 'Node & ParentNode' is missing the following properties from type 'Element': attributes, classList, className, clientHeight, and 64 more. node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeOutline.js(930,13): error TS2339: Property 'type' does not exist on type 'Element'. node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeOutline.js(1106,44): error TS2339: Property 'keysArray' does not exist on type 'Map'. node_modules/chrome-devtools-frontend/front_end/elements/ElementsTreeOutline.js(1110,89): error TS2339: Property 'scrollTop' does not exist on type 'Node & ParentNode'. @@ -5774,7 +5782,7 @@ node_modules/chrome-devtools-frontend/front_end/elements/StylesSidebarPane.js(10 node_modules/chrome-devtools-frontend/front_end/elements/StylesSidebarPane.js(1056,29): error TS2339: Property '_section' does not exist on type 'ChildNode'. node_modules/chrome-devtools-frontend/front_end/elements/StylesSidebarPane.js(1073,24): error TS2339: Property '_section' does not exist on type 'ChildNode'. node_modules/chrome-devtools-frontend/front_end/elements/StylesSidebarPane.js(1074,29): error TS2339: Property '_section' does not exist on type 'ChildNode'. -node_modules/chrome-devtools-frontend/front_end/elements/StylesSidebarPane.js(1087,7): error TS2740: Type 'ChildNode' is missing the following properties from type 'Element': assignedSlot, attributes, classList, className, and 68 more. +node_modules/chrome-devtools-frontend/front_end/elements/StylesSidebarPane.js(1087,7): error TS2740: Type 'ChildNode' is missing the following properties from type 'Element': attributes, classList, className, clientHeight, and 68 more. node_modules/chrome-devtools-frontend/front_end/elements/StylesSidebarPane.js(1088,38): error TS2339: Property '_section' does not exist on type 'Element'. node_modules/chrome-devtools-frontend/front_end/elements/StylesSidebarPane.js(1090,36): error TS2339: Property '_section' does not exist on type 'Element'. node_modules/chrome-devtools-frontend/front_end/elements/StylesSidebarPane.js(1099,7): error TS2322: Type 'ChildNode' is not assignable to type 'Element'. @@ -6084,8 +6092,6 @@ node_modules/chrome-devtools-frontend/front_end/event_listeners/EventListenersUt node_modules/chrome-devtools-frontend/front_end/event_listeners/EventListenersUtils.js(295,16): error TS2339: Property 'devtoolsFrameworkEventListeners' does not exist on type 'Window & typeof globalThis'. node_modules/chrome-devtools-frontend/front_end/event_listeners/EventListenersUtils.js(295,68): error TS2339: Property 'devtoolsFrameworkEventListeners' does not exist on type 'Window & typeof globalThis'. node_modules/chrome-devtools-frontend/front_end/event_listeners/EventListenersUtils.js(296,41): error TS2339: Property 'devtoolsFrameworkEventListeners' does not exist on type 'Window & typeof globalThis'. -node_modules/chrome-devtools-frontend/front_end/event_listeners/EventListenersUtils.js(306,66): error TS2349: This expression is not callable. - Each member of the union type '((callbackfn: (value: any, index: number, array: any[]) => U, thisArg?: any) => U[]) | ((callbackfn: (value: { handler: any; useCapture: boolean; passive: boolean; once: boolean; type: string; }, index: number, array: { ...; }[]) => U, thisArg?: any) => U[])' has signatures, but none of those signatures are compatible with each other. node_modules/chrome-devtools-frontend/front_end/event_listeners/EventListenersUtils.js(324,5): error TS2741: Property 'internalHandlers' is missing in type '{ eventListeners: any[]; }' but required in type '{ eventListeners: EventListenerObjectInInspectedPage[]; internalHandlers: (() => any)[]; }'. node_modules/chrome-devtools-frontend/front_end/event_listeners/EventListenersUtils.js(371,103): error TS2322: Type '{ type: any; useCapture: any; passive: any; once: any; handler: any; remove: any; }' is not assignable to type 'EventListenerObjectInInspectedPage'. Object literal may only specify known properties, and 'remove' does not exist in type 'EventListenerObjectInInspectedPage'. @@ -6240,6 +6246,7 @@ node_modules/chrome-devtools-frontend/front_end/externs.js(803,13): error TS2355 node_modules/chrome-devtools-frontend/front_end/externs.js(805,9): error TS2339: Property 'prototype' does not exist on type 'typeof Console'. node_modules/chrome-devtools-frontend/front_end/externs.js(811,13): error TS2355: A function whose declared type is neither 'void' nor 'any' must return a value. node_modules/chrome-devtools-frontend/front_end/externs.js(817,12): error TS7014: Function type, which lacks return-type annotation, implicitly has an 'any' return type. +node_modules/chrome-devtools-frontend/front_end/externs.js(819,5): error TS2403: Subsequent variable declarations must have the same type. Variable 'ResizeObserver' must be of type '{ new (callback: ResizeObserverCallback): ResizeObserver; prototype: ResizeObserver; }', but here has type 'typeof ResizeObserver'. node_modules/chrome-devtools-frontend/front_end/formatter/FormatterWorkerPool.js(28,40): error TS2339: Property 'keysArray' does not exist on type 'Map'. node_modules/chrome-devtools-frontend/front_end/formatter/FormatterWorkerPool.js(74,14): error TS7014: Function type, which lacks return-type annotation, implicitly has an 'any' return type. node_modules/chrome-devtools-frontend/front_end/formatter/FormatterWorkerPool.js(162,14): error TS7014: Function type, which lacks return-type annotation, implicitly has an 'any' return type. @@ -11233,7 +11240,7 @@ node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1595 node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1609,18): error TS2339: Property 'preciseMillisToString' does not exist on type 'NumberConstructor'. node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1652,69): error TS2339: Property 'millisToString' does not exist on type 'NumberConstructor'. node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1657,64): error TS2345: Argument of type 'new (width?: number, height?: number) => HTMLImageElement' is not assignable to parameter of type 'Node'. -node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1675,5): error TS2740: Type 'DocumentFragment' is missing the following properties from type 'Element': assignedSlot, attributes, classList, className, and 64 more. +node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1675,5): error TS2740: Type 'DocumentFragment' is missing the following properties from type 'Element': attributes, classList, className, clientHeight, and 64 more. node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1684,30): error TS2339: Property 'millisToString' does not exist on type 'NumberConstructor'. node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1685,16): error TS2339: Property 'millisToString' does not exist on type 'NumberConstructor'. node_modules/chrome-devtools-frontend/front_end/timeline/TimelineUIUtils.js(1687,13): error TS2339: Property 'createTextChild' does not exist on type 'Element'. @@ -12242,6 +12249,9 @@ node_modules/chrome-devtools-frontend/front_end/ui/XWidget.js(26,17): error TS70 node_modules/chrome-devtools-frontend/front_end/ui/XWidget.js(28,17): error TS7014: Function type, which lacks return-type annotation, implicitly has an 'any' return type. node_modules/chrome-devtools-frontend/front_end/ui/XWidget.js(31,21): error TS2339: Property '_observer' does not exist on type 'typeof XWidget'. node_modules/chrome-devtools-frontend/front_end/ui/XWidget.js(32,18): error TS2339: Property '_observer' does not exist on type 'typeof XWidget'. +node_modules/chrome-devtools-frontend/front_end/ui/XWidget.js(34,28): error TS2339: Property '_visible' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/ui/XWidget.js(34,53): error TS2339: Property '_onResizedCallback' does not exist on type 'Element'. +node_modules/chrome-devtools-frontend/front_end/ui/XWidget.js(35,26): error TS2339: Property '_onResizedCallback' does not exist on type 'Element'. node_modules/chrome-devtools-frontend/front_end/ui/XWidget.js(39,16): error TS2339: Property '_observer' does not exist on type 'typeof XWidget'. node_modules/chrome-devtools-frontend/front_end/ui/XWidget.js(48,25): error TS2339: Property 'parentNodeOrShadowHost' does not exist on type 'Node'. node_modules/chrome-devtools-frontend/front_end/ui/XWidget.js(56,19): error TS2339: Property 'parentNodeOrShadowHost' does not exist on type 'Node'. @@ -12249,8 +12259,8 @@ node_modules/chrome-devtools-frontend/front_end/ui/XWidget.js(75,15): error TS70 node_modules/chrome-devtools-frontend/front_end/ui/XWidget.js(82,15): error TS7014: Function type, which lacks return-type annotation, implicitly has an 'any' return type. node_modules/chrome-devtools-frontend/front_end/ui/XWidget.js(89,15): error TS7014: Function type, which lacks return-type annotation, implicitly has an 'any' return type. node_modules/chrome-devtools-frontend/front_end/ui/XWidget.js(100,7): error TS2769: No overload matches this call. - Overload 1 of 2, '(type: "fullscreenchange" | "fullscreenerror", listener: (this: Element, ev: Event) => any, options?: boolean | EventListenerOptions): void', gave the following error. - Argument of type '"scroll"' is not assignable to parameter of type '"fullscreenchange" | "fullscreenerror"'. + Overload 1 of 2, '(type: keyof ElementEventMap, listener: (this: Element, ev: Event) => any, options?: boolean | EventListenerOptions): void', gave the following error. + Argument of type '"scroll"' is not assignable to parameter of type 'keyof ElementEventMap'. Overload 2 of 2, '(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void', gave the following error. Argument of type '{ passive: boolean; capture: false; }' is not assignable to parameter of type 'boolean | EventListenerOptions'. Object literal may only specify known properties, and 'passive' does not exist in type 'EventListenerOptions'. diff --git a/tests/baselines/reference/user/debug.log b/tests/baselines/reference/user/debug.log index c219a41f1acd3..c6383f455c42a 100644 --- a/tests/baselines/reference/user/debug.log +++ b/tests/baselines/reference/user/debug.log @@ -1,48 +1,5 @@ Exit Code: 2 Standard output: -node_modules/debug/dist/debug.js(3,100): error TS2539: Cannot assign to '_typeof' because it is not a variable. -node_modules/debug/dist/debug.js(3,165): error TS2539: Cannot assign to '_typeof' because it is not a variable. -node_modules/debug/dist/debug.js(8,21): error TS2304: Cannot find name 'define'. -node_modules/debug/dist/debug.js(8,46): error TS2304: Cannot find name 'define'. -node_modules/debug/dist/debug.js(9,5): error TS2304: Cannot find name 'define'. -node_modules/debug/dist/debug.js(33,38): error TS2554: Expected 1 arguments, but got 2. -node_modules/debug/dist/debug.js(34,32): error TS2554: Expected 1 arguments, but got 2. -node_modules/debug/dist/debug.js(36,21): error TS2339: Property 'code' does not exist on type 'Error'. -node_modules/debug/dist/debug.js(89,38): error TS2339: Property 'length' does not exist on type 'string | number'. - Property 'length' does not exist on type 'number'. -node_modules/debug/dist/debug.js(90,24): error TS2345: Argument of type 'string | number' is not assignable to parameter of type 'string'. - Type 'number' is not assignable to type 'string'. -node_modules/debug/dist/debug.js(91,47): error TS2345: Argument of type 'string | number' is not assignable to parameter of type 'number'. - Type 'string' is not assignable to type 'number'. -node_modules/debug/dist/debug.js(92,41): error TS2345: Argument of type 'string | number' is not assignable to parameter of type 'number'. - Type 'string' is not assignable to type 'number'. -node_modules/debug/dist/debug.js(92,57): error TS2345: Argument of type 'string | number' is not assignable to parameter of type 'number'. - Type 'string' is not assignable to type 'number'. -node_modules/debug/dist/debug.js(110,11): error TS2322: Type 'undefined' is not assignable to type 'number'. -node_modules/debug/dist/debug.js(116,11): error TS2322: Type 'undefined' is not assignable to type 'number'. -node_modules/debug/dist/debug.js(169,13): error TS2322: Type 'undefined' is not assignable to type 'number'. -node_modules/debug/dist/debug.js(501,30): error TS2339: Property 'colors' does not exist on type '{ (namespace: string): Function; debug: ...; default: ...; coerce: (val: any) => any; disable: () => void; enable: (namespaces: string) => void; enabled: (name: string) => boolean; humanize: any; ... 4 more ...; selectColor: (namespace: string) => string | number; }'. -node_modules/debug/dist/debug.js(501,66): error TS2339: Property 'colors' does not exist on type '{ (namespace: string): Function; debug: ...; default: ...; coerce: (val: any) => any; disable: () => void; enable: (namespaces: string) => void; enabled: (name: string) => boolean; humanize: any; ... 4 more ...; selectColor: (namespace: string) => string | number; }'. -node_modules/debug/dist/debug.js(530,18): error TS2339: Property 'diff' does not exist on type '{ (...args: any[]): void; namespace: string; enabled: boolean; useColors: any; color: string | number; destroy: () => boolean; extend: (namespace: any, delimiter: any) => Function; }'. -node_modules/debug/dist/debug.js(531,18): error TS2339: Property 'prev' does not exist on type '{ (...args: any[]): void; namespace: string; enabled: boolean; useColors: any; color: string | number; destroy: () => boolean; extend: (namespace: any, delimiter: any) => Function; }'. -node_modules/debug/dist/debug.js(532,18): error TS2339: Property 'curr' does not exist on type '{ (...args: any[]): void; namespace: string; enabled: boolean; useColors: any; color: string | number; destroy: () => boolean; extend: (namespace: any, delimiter: any) => Function; }'. -node_modules/debug/dist/debug.js(563,25): error TS2551: Property 'formatArgs' does not exist on type '{ (namespace: string): Function; debug: ...; default: ...; coerce: (val: any) => any; disable: () => void; enable: (namespaces: string) => void; enabled: (name: string) => boolean; humanize: any; ... 4 more ...; selectColor: (namespace: string) => string | number; }'. Did you mean 'formatters'? -node_modules/debug/dist/debug.js(564,30): error TS2339: Property 'log' does not exist on type '{ (...args: any[]): void; namespace: string; enabled: boolean; useColors: any; color: string | number; destroy: () => boolean; extend: (namespace: any, delimiter: any) => Function; }'. -node_modules/debug/dist/debug.js(564,49): error TS2339: Property 'log' does not exist on type '{ (namespace: string): Function; debug: ...; default: ...; coerce: (val: any) => any; disable: () => void; enable: (namespaces: string) => void; enabled: (name: string) => boolean; humanize: any; ... 4 more ...; selectColor: (namespace: string) => string | number; }'. -node_modules/debug/dist/debug.js(570,41): error TS2339: Property 'useColors' does not exist on type '{ (namespace: string): Function; debug: ...; default: ...; coerce: (val: any) => any; disable: () => void; enable: (namespaces: string) => void; enabled: (name: string) => boolean; humanize: any; ... 4 more ...; selectColor: (namespace: string) => string | number; }'. -node_modules/debug/dist/debug.js(577,34): error TS2339: Property 'init' does not exist on type '{ (namespace: string): Function; debug: ...; default: ...; coerce: (val: any) => any; disable: () => void; enable: (namespaces: string) => void; enabled: (name: string) => boolean; humanize: any; ... 4 more ...; selectColor: (namespace: string) => string | number; }'. -node_modules/debug/dist/debug.js(578,25): error TS2339: Property 'init' does not exist on type '{ (namespace: string): Function; debug: ...; default: ...; coerce: (val: any) => any; disable: () => void; enable: (namespaces: string) => void; enabled: (name: string) => boolean; humanize: any; ... 4 more ...; selectColor: (namespace: string) => string | number; }'. -node_modules/debug/dist/debug.js(609,23): error TS2339: Property 'save' does not exist on type '{ (namespace: string): Function; debug: ...; default: ...; coerce: (val: any) => any; disable: () => void; enable: (namespaces: string) => void; enabled: (name: string) => boolean; humanize: any; ... 4 more ...; selectColor: (namespace: string) => string | number; }'. -node_modules/debug/dist/debug.js(680,19): error TS2304: Cannot find name 'Mixed'. -node_modules/debug/dist/debug.js(681,20): error TS2304: Cannot find name 'Mixed'. -node_modules/debug/dist/debug.js(694,40): error TS2339: Property 'load' does not exist on type '{ (namespace: string): Function; debug: ...; default: ...; coerce: (val: any) => any; disable: () => void; enable: (namespaces: string) => void; enabled: (name: string) => boolean; humanize: any; ... 4 more ...; selectColor: (namespace: string) => string | number; }'. -node_modules/debug/dist/debug.js(733,82): error TS2339: Property 'type' does not exist on type 'Process'. -node_modules/debug/dist/debug.js(733,120): error TS2339: Property '__nwjs' does not exist on type 'Process'. -node_modules/debug/dist/debug.js(744,146): error TS2551: Property 'WebkitAppearance' does not exist on type 'CSSStyleDeclaration'. Did you mean 'webkitAppearance'? -node_modules/debug/dist/debug.js(745,78): error TS2339: Property 'firebug' does not exist on type 'Console'. -node_modules/debug/dist/debug.js(745,89): error TS2774: This condition will always return true since the function is always defined. Did you mean to call it instead? -node_modules/debug/dist/debug.js(799,156): error TS2345: Argument of type 'IArguments' is not assignable to parameter of type '[message?: any, ...optionalParams: any[]]'. -node_modules/debug/dist/debug.js(851,21): error TS2304: Cannot find name 'LocalStorage'. node_modules/debug/src/browser.js(3,100): error TS2539: Cannot assign to '_typeof' because it is not a variable. node_modules/debug/src/browser.js(3,165): error TS2539: Cannot assign to '_typeof' because it is not a variable. node_modules/debug/src/browser.js(34,74): error TS2339: Property 'type' does not exist on type 'Process'. @@ -80,7 +37,7 @@ node_modules/debug/src/node.js(55,48): error TS2345: Argument of type 'string | node_modules/debug/src/node.js(56,5): error TS2322: Type 'false' is not assignable to type 'string | undefined'. node_modules/debug/src/node.js(58,5): error TS2322: Type 'null' is not assignable to type 'string | undefined'. node_modules/debug/src/node.js(60,5): error TS2322: Type 'number' is not assignable to type 'string | undefined'. -node_modules/debug/src/node.js(108,55): error TS2345: Argument of type 'IArguments' is not assignable to parameter of type '[format: any, ...param: any[]]'. +node_modules/debug/src/node.js(108,55): error TS2345: Argument of type 'IArguments' is not assignable to parameter of type '[format?: any, ...param: any[]]'. node_modules/debug/src/node.js(136,3): error TS2322: Type 'string | undefined' is not assignable to type 'string'. Type 'undefined' is not assignable to type 'string'. diff --git a/tests/baselines/reference/user/discord.js.log b/tests/baselines/reference/user/discord.js.log index 0189878cdff4e..53e46907c28d5 100644 --- a/tests/baselines/reference/user/discord.js.log +++ b/tests/baselines/reference/user/discord.js.log @@ -11,12 +11,12 @@ node_modules/discord.js/typings/index.d.ts(133,43): error TS2694: Namespace 'Nod node_modules/discord.js/typings/index.d.ts(135,93): error TS2694: Namespace 'NodeJS' has no exported member 'Timeout'. node_modules/discord.js/typings/index.d.ts(136,92): error TS2694: Namespace 'NodeJS' has no exported member 'Timeout'. node_modules/discord.js/typings/index.d.ts(137,79): error TS2694: Namespace 'NodeJS' has no exported member 'Immediate'. -node_modules/discord.js/typings/index.d.ts(282,30): error TS2694: Namespace 'NodeJS' has no exported member 'Timeout'. -node_modules/discord.js/typings/index.d.ts(283,34): error TS2694: Namespace 'NodeJS' has no exported member 'Timeout'. -node_modules/discord.js/typings/index.d.ts(1819,103): error TS2694: Namespace 'NodeJS' has no exported member 'Timeout'. -node_modules/discord.js/typings/index.d.ts(1821,34): error TS2694: Namespace 'NodeJS' has no exported member 'Timeout'. -node_modules/discord.js/typings/index.d.ts(1824,34): error TS2694: Namespace 'NodeJS' has no exported member 'Timeout'. -node_modules/discord.js/typings/index.d.ts(3145,21): error TS2694: Namespace 'NodeJS' has no exported member 'Timeout'. +node_modules/discord.js/typings/index.d.ts(283,30): error TS2694: Namespace 'NodeJS' has no exported member 'Timeout'. +node_modules/discord.js/typings/index.d.ts(284,34): error TS2694: Namespace 'NodeJS' has no exported member 'Timeout'. +node_modules/discord.js/typings/index.d.ts(1805,103): error TS2694: Namespace 'NodeJS' has no exported member 'Timeout'. +node_modules/discord.js/typings/index.d.ts(1807,34): error TS2694: Namespace 'NodeJS' has no exported member 'Timeout'. +node_modules/discord.js/typings/index.d.ts(1810,34): error TS2694: Namespace 'NodeJS' has no exported member 'Timeout'. +node_modules/discord.js/typings/index.d.ts(3155,21): error TS2694: Namespace 'NodeJS' has no exported member 'Timeout'. diff --git a/tests/baselines/reference/user/enhanced-resolve.log b/tests/baselines/reference/user/enhanced-resolve.log index 780485538801a..b75f62638f53e 100644 --- a/tests/baselines/reference/user/enhanced-resolve.log +++ b/tests/baselines/reference/user/enhanced-resolve.log @@ -18,14 +18,12 @@ node_modules/enhanced-resolve/lib/CachedInputFileSystem.js(143,18): error TS2769 Type 'null' is not assignable to type 'Timeout'. Overload 2 of 2, '(handle?: number | undefined): void', gave the following error. Argument of type 'Timeout | null' is not assignable to parameter of type 'number | undefined'. - Type 'null' is not assignable to type 'number | undefined'. node_modules/enhanced-resolve/lib/CachedInputFileSystem.js(162,18): error TS2769: No overload matches this call. Overload 1 of 2, '(intervalId: Timeout): void', gave the following error. Argument of type 'Timeout | null' is not assignable to parameter of type 'Timeout'. Type 'null' is not assignable to type 'Timeout'. Overload 2 of 2, '(handle?: number | undefined): void', gave the following error. Argument of type 'Timeout | null' is not assignable to parameter of type 'number | undefined'. - Type 'null' is not assignable to type 'number | undefined'. node_modules/enhanced-resolve/lib/CachedInputFileSystem.js(192,20): error TS2322: Type 'null' is not assignable to type '(path: any, callback: any) => void'. node_modules/enhanced-resolve/lib/CachedInputFileSystem.js(197,24): error TS2322: Type 'null' is not assignable to type '(path: any) => any'. node_modules/enhanced-resolve/lib/CachedInputFileSystem.js(202,23): error TS2322: Type 'null' is not assignable to type '(path: any, callback: any) => void'. diff --git a/tests/baselines/reference/user/follow-redirects.log b/tests/baselines/reference/user/follow-redirects.log index 27e1be3cf166b..8f7b8f82e0909 100644 --- a/tests/baselines/reference/user/follow-redirects.log +++ b/tests/baselines/reference/user/follow-redirects.log @@ -20,7 +20,7 @@ node_modules/follow-redirects/index.js(360,14): error TS2339: Property 'emit' do node_modules/follow-redirects/index.js(372,13): error TS2339: Property 'cause' does not exist on type 'CustomError'. node_modules/follow-redirects/index.js(373,12): error TS2339: Property 'emit' does not exist on type 'RedirectableRequest'. node_modules/follow-redirects/index.js(380,10): error TS2339: Property 'emit' does not exist on type 'RedirectableRequest'. -node_modules/follow-redirects/index.js(492,25): error TS2339: Property 'code' does not exist on type 'Error'. +node_modules/follow-redirects/index.js(498,25): error TS2339: Property 'code' does not exist on type 'Error'. diff --git a/tests/baselines/reference/user/formik.log b/tests/baselines/reference/user/formik.log deleted file mode 100644 index 3025734fc91d2..0000000000000 --- a/tests/baselines/reference/user/formik.log +++ /dev/null @@ -1,13 +0,0 @@ -Exit Code: 2 -Standard output: -node_modules/formik/dist/Formik.d.ts(1,22): error TS6053: File '../../../tests/cases/user/formik/node_modules/formik/dist/types/index.d.ts' not found. -node_modules/formik/dist/Formik.d.ts(23,96): error TS7016: Could not find a declaration file for module 'scheduler'. '../../../tests/cases/user/formik/node_modules/scheduler/index.js' implicitly has an 'any' type. - Try `npm i --save-dev @types/scheduler` if it exists or add a new declaration (.d.ts) file containing `declare module 'scheduler';` -node_modules/formik/dist/Formik.d.ts(27,98): error TS7016: Could not find a declaration file for module 'scheduler'. '../../../tests/cases/user/formik/node_modules/scheduler/index.js' implicitly has an 'any' type. - Try `npm i --save-dev @types/scheduler` if it exists or add a new declaration (.d.ts) file containing `declare module 'scheduler';` -node_modules/formik/dist/Formik.d.ts(28,103): error TS7016: Could not find a declaration file for module 'scheduler'. '../../../tests/cases/user/formik/node_modules/scheduler/index.js' implicitly has an 'any' type. - Try `npm i --save-dev @types/scheduler` if it exists or add a new declaration (.d.ts) file containing `declare module 'scheduler';` - - - -Standard error: diff --git a/tests/baselines/reference/user/fp-ts.log b/tests/baselines/reference/user/fp-ts.log new file mode 100644 index 0000000000000..2da48077db7b6 --- /dev/null +++ b/tests/baselines/reference/user/fp-ts.log @@ -0,0 +1,10 @@ +Exit Code: 2 +Standard output: +test/Either.ts(244,33): error TS2345: Argument of type 'Either' is not assignable to parameter of type 'Either<`invalid color ${string}`, string>'. + Type 'Left' is not assignable to type 'Either<`invalid color ${string}`, string>'. + Type 'Left' is not assignable to type 'Left<`invalid color ${string}`>'. + Type 'string' is not assignable to type '`invalid color ${string}`'. + + + +Standard error: diff --git a/tests/baselines/reference/user/graceful-fs.log b/tests/baselines/reference/user/graceful-fs.log index a6c9696259878..68089e941289f 100644 --- a/tests/baselines/reference/user/graceful-fs.log +++ b/tests/baselines/reference/user/graceful-fs.log @@ -5,7 +5,7 @@ node_modules/graceful-fs/clone.js(15,38): error TS2345: Argument of type 'Proper Type 'undefined' is not assignable to type 'PropertyDescriptor & ThisType'. Type 'undefined' is not assignable to type 'PropertyDescriptor'. node_modules/graceful-fs/graceful-fs.js(34,3): error TS2322: Type '(msg: string, ...param: any[]) => void' is not assignable to type '() => void'. -node_modules/graceful-fs/graceful-fs.js(37,37): error TS2345: Argument of type 'IArguments' is not assignable to parameter of type '[format: any, ...param: any[]]'. +node_modules/graceful-fs/graceful-fs.js(37,37): error TS2345: Argument of type 'IArguments' is not assignable to parameter of type '[format?: any, ...param: any[]]'. node_modules/graceful-fs/graceful-fs.js(52,3): error TS2741: Property '__promisify__' is missing in type '(fd: any, cb: any) => void' but required in type 'typeof close'. node_modules/graceful-fs/graceful-fs.js(74,30): error TS2345: Argument of type 'IArguments' is not assignable to parameter of type '[fd: number]'. node_modules/graceful-fs/graceful-fs.js(86,13): error TS2554: Expected 0 arguments, but got 1. diff --git a/tests/baselines/reference/user/lodash.log b/tests/baselines/reference/user/lodash.log index aa74e2a00fa29..6dbbada2d9ae2 100644 --- a/tests/baselines/reference/user/lodash.log +++ b/tests/baselines/reference/user/lodash.log @@ -53,8 +53,8 @@ node_modules/lodash/_baseFlatten.js(24,22): error TS2349: This expression is not node_modules/lodash/_baseFlatten.js(24,22): error TS2532: Object is possibly 'undefined'. node_modules/lodash/_baseFlatten.js(24,22): error TS2722: Cannot invoke an object which is possibly 'undefined'. node_modules/lodash/_baseHas.js(15,26): error TS1016: A required parameter cannot follow an optional parameter. -node_modules/lodash/_baseHas.js(16,56): error TS2345: Argument of type 'string | any[]' is not assignable to parameter of type 'string | number | symbol'. - Type 'any[]' is not assignable to type 'string | number | symbol'. +node_modules/lodash/_baseHas.js(16,56): error TS2345: Argument of type 'string | any[]' is not assignable to parameter of type 'PropertyKey'. + Type 'any[]' is not assignable to type 'PropertyKey'. Type 'any[]' is not assignable to type 'string'. node_modules/lodash/_baseHasIn.js(9,28): error TS1016: A required parameter cannot follow an optional parameter. node_modules/lodash/_baseHasIn.js(10,28): error TS2360: The left-hand side of an 'in' expression must be of type 'any', 'string', 'number', or 'symbol'. @@ -125,7 +125,7 @@ node_modules/lodash/_createFlow.js(56,13): error TS2454: Variable 'wrapper' is u node_modules/lodash/_createFlow.js(57,13): error TS2454: Variable 'wrapper' is used before being assigned. node_modules/lodash/_createFlow.js(57,21): error TS2339: Property 'thru' does not exist on type 'LodashWrapper'. node_modules/lodash/_createFlow.js(65,24): error TS2339: Property 'plant' does not exist on type 'LodashWrapper'. -node_modules/lodash/_createHybrid.js(44,49): error TS2345: Argument of type 'TimerHandler' is not assignable to parameter of type 'Function'. +node_modules/lodash/_createHybrid.js(44,49): error TS2345: Argument of type 'string | Function' is not assignable to parameter of type 'Function'. Type 'string' is not assignable to type 'Function'. node_modules/lodash/_createHybrid.js(59,42): error TS2345: Argument of type 'any[] | undefined' is not assignable to parameter of type 'any[]'. Type 'undefined' is not assignable to type 'any[]'. @@ -133,7 +133,7 @@ node_modules/lodash/_createHybrid.js(62,52): error TS2345: Argument of type 'any Type 'undefined' is not assignable to type 'any[]'. node_modules/lodash/_createHybrid.js(64,15): error TS2454: Variable 'holdersCount' is used before being assigned. node_modules/lodash/_createHybrid.js(65,31): error TS2532: Object is possibly 'undefined'. -node_modules/lodash/_createHybrid.js(68,9): error TS2345: Argument of type 'TimerHandler' is not assignable to parameter of type 'Function'. +node_modules/lodash/_createHybrid.js(68,9): error TS2345: Argument of type 'string | Function' is not assignable to parameter of type 'Function'. Type 'string' is not assignable to type 'Function'. node_modules/lodash/_createHybrid.js(68,46): error TS2339: Property 'placeholder' does not exist on type '(...args: any[]) => any'. node_modules/lodash/_createHybrid.js(69,40): error TS2532: Object is possibly 'undefined'. @@ -141,16 +141,16 @@ node_modules/lodash/_createHybrid.js(73,38): error TS2538: Type 'Function' canno node_modules/lodash/_createHybrid.js(81,18): error TS2532: Object is possibly 'undefined'. node_modules/lodash/_createHybrid.js(82,7): error TS2322: Type 'number | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'. -node_modules/lodash/_createWrap.js(94,29): error TS2345: Argument of type 'TimerHandler' is not assignable to parameter of type 'Function'. +node_modules/lodash/_createWrap.js(94,29): error TS2345: Argument of type 'string | Function' is not assignable to parameter of type 'Function'. Type 'string' is not assignable to type 'Function'. -node_modules/lodash/_createWrap.js(96,26): error TS2345: Argument of type 'TimerHandler' is not assignable to parameter of type 'Function'. +node_modules/lodash/_createWrap.js(96,26): error TS2345: Argument of type 'string | Function' is not assignable to parameter of type 'Function'. Type 'string' is not assignable to type 'Function'. node_modules/lodash/_createWrap.js(97,100): error TS2532: Object is possibly 'undefined'. -node_modules/lodash/_createWrap.js(98,28): error TS2345: Argument of type 'TimerHandler' is not assignable to parameter of type 'Function'. +node_modules/lodash/_createWrap.js(98,28): error TS2345: Argument of type 'string | Function' is not assignable to parameter of type 'Function'. Type 'string' is not assignable to type 'Function'. -node_modules/lodash/_createWrap.js(100,44): error TS2345: Argument of type 'any[]' is not assignable to parameter of type '[func: TimerHandler, bitmask: number, thisArg?: any, partials?: any[] | undefined, holders?: any[] | undefined, partialsRight?: any[] | undefined, holdersRight?: any[] | undefined, argPos?: any[] | undefined, ary?: number | undefined, arity?: number | undefined]'. +node_modules/lodash/_createWrap.js(100,44): error TS2345: Argument of type 'any[]' is not assignable to parameter of type '[func: string | Function, bitmask: number, thisArg?: any, partials?: any[] | undefined, holders?: any[] | undefined, partialsRight?: any[] | undefined, holdersRight?: any[] | undefined, argPos?: any[] | undefined, ary?: number | undefined, arity?: number | undefined]'. Target requires 2 element(s) but source may have fewer. -node_modules/lodash/_createWrap.js(103,51): error TS2345: Argument of type 'TimerHandler' is not assignable to parameter of type 'Function'. +node_modules/lodash/_createWrap.js(103,51): error TS2345: Argument of type 'string | Function' is not assignable to parameter of type 'Function'. Type 'string' is not assignable to type 'Function'. node_modules/lodash/_customDefaultsMerge.js(22,35): error TS2345: Argument of type 'undefined' is not assignable to parameter of type 'number'. node_modules/lodash/_customOmitClone.js(9,20): error TS8024: JSDoc '@param' tag has name 'key', but there is no parameter with that name. @@ -253,9 +253,7 @@ node_modules/lodash/core.js(2199,41): error TS8024: JSDoc '@param' tag has name node_modules/lodash/core.js(2489,21): error TS1345: An expression of type 'void' cannot be tested for truthiness. node_modules/lodash/core.js(2489,37): error TS2554: Expected 0 arguments, but got 1. node_modules/lodash/core.js(2660,12): error TS2554: Expected 3-5 arguments, but got 2. -node_modules/lodash/core.js(3261,58): error TS2345: Argument of type 'string | any[]' is not assignable to parameter of type 'string | number | symbol'. - Type 'any[]' is not assignable to type 'string | number | symbol'. - Type 'any[]' is not assignable to type 'string'. +node_modules/lodash/core.js(3261,58): error TS2345: Argument of type 'string | any[]' is not assignable to parameter of type 'PropertyKey'. node_modules/lodash/core.js(3370,53): error TS2538: Type 'any[]' cannot be used as an index type. node_modules/lodash/core.js(3440,41): error TS2769: No overload matches this call. The last overload gave the following error. diff --git a/tests/baselines/reference/user/npm.log b/tests/baselines/reference/user/npm.log index 707e9e05391cc..3ecc41015c968 100644 --- a/tests/baselines/reference/user/npm.log +++ b/tests/baselines/reference/user/npm.log @@ -107,7 +107,7 @@ node_modules/npm/lib/config.js(84,19): error TS2339: Property 'config' does not node_modules/npm/lib/config.js(85,15): error TS2339: Property 'config' does not exist on type 'EventEmitter'. node_modules/npm/lib/config.js(87,7): error TS2339: Property 'config' does not exist on type 'EventEmitter'. node_modules/npm/lib/config.js(93,25): error TS2339: Property 'config' does not exist on type 'EventEmitter'. -node_modules/npm/lib/config.js(118,31): error TS2345: Argument of type '(er: any) => any' is not assignable to parameter of type 'string | number | Options | undefined'. +node_modules/npm/lib/config.js(118,31): error TS2345: Argument of type '(er: any) => any' is not assignable to parameter of type 'Mode | Options'. Value of type '(er: any) => any' has no properties in common with type 'Options'. Did you mean to call it? node_modules/npm/lib/config.js(135,19): error TS2339: Property 'config' does not exist on type 'EventEmitter'. node_modules/npm/lib/config.js(136,7): error TS2339: Property 'config' does not exist on type 'EventEmitter'. @@ -170,7 +170,7 @@ node_modules/npm/lib/config/core.js(208,24): error TS2339: Property 'list' does node_modules/npm/lib/config/core.js(237,21): error TS2339: Property 'sources' does not exist on type 'Conf'. node_modules/npm/lib/config/core.js(245,17): error TS2339: Property 'emit' does not exist on type 'Conf'. node_modules/npm/lib/config/core.js(279,8): error TS2339: Property '_saving' does not exist on type 'Conf'. -node_modules/npm/lib/config/core.js(288,39): error TS2345: Argument of type '(er: any) => any' is not assignable to parameter of type 'string | number | Options | undefined'. +node_modules/npm/lib/config/core.js(288,39): error TS2345: Argument of type '(er: any) => any' is not assignable to parameter of type 'Mode | Options'. Value of type '(er: any) => any' has no properties in common with type 'Options'. Did you mean to call it? node_modules/npm/lib/config/core.js(307,8): error TS2339: Property 'sources' does not exist on type 'Conf'. node_modules/npm/lib/config/core.js(308,8): error TS2339: Property 'push' does not exist on type 'Conf'. @@ -181,8 +181,6 @@ node_modules/npm/lib/config/core.js(409,29): error TS2769: No overload matches t Argument of type '(orig: string, esc: any, name: any) => string | undefined' is not assignable to parameter of type '(substring: string, ...args: any[]) => string'. Type 'string | undefined' is not assignable to type 'string'. Type 'undefined' is not assignable to type 'string'. -node_modules/npm/lib/config/defaults.js(20,52): error TS2345: Argument of type 'never[]' is not assignable to parameter of type '[format: any, ...param: any[]]'. - Property '0' is optional in type 'never[]' but required in type '[format: any, ...param: any[]]'. node_modules/npm/lib/config/defaults.js(234,24): error TS2774: This condition will always return true since the function is always defined. Did you mean to call it instead? node_modules/npm/lib/config/defaults.js(234,42): error TS2774: This condition will always return true since the function is always defined. Did you mean to call it instead? node_modules/npm/lib/config/defaults.js(235,24): error TS2774: This condition will always return true since the function is always defined. Did you mean to call it instead? @@ -250,7 +248,7 @@ node_modules/npm/lib/config/pacote.js(84,31): error TS2339: Property 'config' do node_modules/npm/lib/config/pacote.js(89,19): error TS2339: Property 'config' does not exist on type 'EventEmitter'. node_modules/npm/lib/config/pacote.js(90,38): error TS2339: Property 'config' does not exist on type 'EventEmitter'. node_modules/npm/lib/config/pacote.js(110,60): error TS2339: Property 'config' does not exist on type 'EventEmitter'. -node_modules/npm/lib/config/set-user.js(22,18): error TS2345: Argument of type '(er: any) => any' is not assignable to parameter of type 'string | number | Options | undefined'. +node_modules/npm/lib/config/set-user.js(22,18): error TS2345: Argument of type '(er: any) => any' is not assignable to parameter of type 'Mode | Options'. Value of type '(er: any) => any' has no properties in common with type 'Options'. Did you mean to call it? node_modules/npm/lib/dedupe.js(35,32): error TS2339: Property 'dir' does not exist on type 'EventEmitter'. node_modules/npm/lib/dedupe.js(37,11): error TS2339: Property 'command' does not exist on type 'EventEmitter'. @@ -414,7 +412,7 @@ node_modules/npm/lib/install/action/global-link.js(7,7): error TS2339: Property node_modules/npm/lib/install/action/refresh-package-json.js(31,43): error TS2339: Property 'config' does not exist on type 'EventEmitter'. node_modules/npm/lib/install/action/remove.js(25,37): error TS2339: Property 'prefix' does not exist on type 'EventEmitter'. node_modules/npm/lib/install/action/remove.js(25,51): error TS2339: Property 'prefix' does not exist on type 'EventEmitter'. -node_modules/npm/lib/install/action/remove.js(55,49): error TS2345: Argument of type '(mkdirEr: any) => void' is not assignable to parameter of type 'string | number | Options | undefined'. +node_modules/npm/lib/install/action/remove.js(55,49): error TS2345: Argument of type '(mkdirEr: any) => void' is not assignable to parameter of type 'Mode | Options'. Type '(mkdirEr: any) => void' has no properties in common with type 'Options'. node_modules/npm/lib/install/actions.js(126,24): error TS2339: Property 'limit' does not exist on type 'EventEmitter'. node_modules/npm/lib/install/actions.js(168,16): error TS2769: No overload matches this call. @@ -571,8 +569,6 @@ node_modules/npm/lib/npm.js(347,52): error TS2345: Argument of type 'PropertyDes Type 'undefined' is not assignable to type 'PropertyDescriptor & ThisType'. Type 'undefined' is not assignable to type 'PropertyDescriptor'. node_modules/npm/lib/npm.js(350,51): error TS2345: Argument of type 'PropertyDescriptor | undefined' is not assignable to parameter of type 'PropertyDescriptor & ThisType'. - Type 'undefined' is not assignable to type 'PropertyDescriptor & ThisType'. - Type 'undefined' is not assignable to type 'PropertyDescriptor'. node_modules/npm/lib/npm.js(377,20): error TS2339: Property 'config' does not exist on type 'EventEmitter'. node_modules/npm/lib/npm.js(377,47): error TS2339: Property 'globalPrefix' does not exist on type 'EventEmitter'. node_modules/npm/lib/npm.js(377,66): error TS2339: Property 'localPrefix' does not exist on type 'EventEmitter'. @@ -643,7 +639,8 @@ node_modules/npm/lib/pack.js(127,15): error TS2339: Property 'config' does not e node_modules/npm/lib/pack.js(147,36): error TS2339: Property 'tmp' does not exist on type 'EventEmitter'. node_modules/npm/lib/pack.js(177,25): error TS2339: Property 'config' does not exist on type 'EventEmitter'. node_modules/npm/lib/pack.js(299,17): error TS2339: Property 'config' does not exist on type 'EventEmitter'. -node_modules/npm/lib/pack.js(300,20): error TS2345: Argument of type 'string' is not assignable to parameter of type 'never'. +node_modules/npm/lib/pack.js(300,20): error TS2345: Argument of type '`--${string}=${any}`' is not assignable to parameter of type 'never'. + Type 'string' is not assignable to type 'never'. node_modules/npm/lib/pack.js(300,36): error TS2339: Property 'config' does not exist on type 'EventEmitter'. node_modules/npm/lib/pack.js(333,15): error TS2531: Object is possibly 'null'. node_modules/npm/lib/pack.js(335,17): error TS2339: Property 'code' does not exist on type 'Error'. @@ -728,7 +725,7 @@ node_modules/npm/lib/search/all-package-metadata.js(33,30): error TS2339: Proper node_modules/npm/lib/search/all-package-metadata.js(36,35): error TS2339: Property 'config' does not exist on type 'EventEmitter'. node_modules/npm/lib/search/all-package-metadata.js(146,7): error TS2339: Property 'registry' does not exist on type 'EventEmitter'. node_modules/npm/lib/search/all-package-metadata.js(239,20): error TS2339: Property 'cache' does not exist on type 'EventEmitter'. -node_modules/npm/lib/search/all-package-metadata.js(241,22): error TS2345: Argument of type '(er: any, made: any) => any' is not assignable to parameter of type 'string | number | Options | undefined'. +node_modules/npm/lib/search/all-package-metadata.js(241,22): error TS2345: Argument of type '(er: any, made: any) => any' is not assignable to parameter of type 'Mode | Options'. Value of type '(er: any, made: any) => any' has no properties in common with type 'Options'. Did you mean to call it? node_modules/npm/lib/search/esearch.js(15,36): error TS2339: Property 'config' does not exist on type 'EventEmitter'. node_modules/npm/lib/search/esearch.js(35,7): error TS2339: Property 'registry' does not exist on type 'EventEmitter'. @@ -797,7 +794,7 @@ node_modules/npm/lib/unpublish.js(97,70): error TS2339: Property 'registry' does node_modules/npm/lib/update.js(10,41): error TS2339: Property 'commands' does not exist on type 'EventEmitter'. node_modules/npm/lib/update.js(17,25): error TS2339: Property 'commands' does not exist on type 'EventEmitter'. node_modules/npm/lib/update.js(25,11): error TS2339: Property 'config' does not exist on type 'EventEmitter'. -node_modules/npm/lib/utils/completion/file-completion.js(11,15): error TS2345: Argument of type '(er: any) => any' is not assignable to parameter of type 'string | number | Options | undefined'. +node_modules/npm/lib/utils/completion/file-completion.js(11,15): error TS2345: Argument of type '(er: any) => any' is not assignable to parameter of type 'Mode | Options'. Value of type '(er: any) => any' has no properties in common with type 'Options'. Did you mean to call it? node_modules/npm/lib/utils/completion/installed-deep.js(9,19): error TS2339: Property 'config' does not exist on type 'EventEmitter'. node_modules/npm/lib/utils/completion/installed-deep.js(12,11): error TS2339: Property 'config' does not exist on type 'EventEmitter'. @@ -810,12 +807,11 @@ node_modules/npm/lib/utils/completion/installed-shallow.js(22,11): error TS2339: node_modules/npm/lib/utils/completion/installed-shallow.js(57,28): error TS2339: Property 'dir' does not exist on type 'EventEmitter'. node_modules/npm/lib/utils/completion/installed-shallow.js(66,23): error TS2339: Property 'globalDir' does not exist on type 'EventEmitter'. node_modules/npm/lib/utils/completion/installed-shallow.js(79,14): error TS2339: Property 'config' does not exist on type 'EventEmitter'. -node_modules/npm/lib/utils/correct-mkdir.js(74,25): error TS2345: Argument of type '(er: any) => any' is not assignable to parameter of type 'string | number | Options | undefined'. +node_modules/npm/lib/utils/correct-mkdir.js(74,25): error TS2345: Argument of type '(er: any) => any' is not assignable to parameter of type 'Mode | Options'. Value of type '(er: any) => any' has no properties in common with type 'Options'. Did you mean to call it? -node_modules/npm/lib/utils/correct-mkdir.js(89,18): error TS2345: Argument of type '(er: any, made: any) => any' is not assignable to parameter of type 'string | number | Options | undefined'. - Value of type '(er: any, made: any) => any' has no properties in common with type 'Options'. Did you mean to call it? -node_modules/npm/lib/utils/correct-mkdir.js(103,20): error TS2345: Argument of type '(er: any, made: any) => any' is not assignable to parameter of type 'string | number | Options | undefined'. +node_modules/npm/lib/utils/correct-mkdir.js(89,18): error TS2345: Argument of type '(er: any, made: any) => any' is not assignable to parameter of type 'Mode | Options'. Value of type '(er: any, made: any) => any' has no properties in common with type 'Options'. Did you mean to call it? +node_modules/npm/lib/utils/correct-mkdir.js(103,20): error TS2345: Argument of type '(er: any, made: any) => any' is not assignable to parameter of type 'Mode | Options'. node_modules/npm/lib/utils/error-handler.js(12,21): error TS2339: Property 'rollbacks' does not exist on type 'EventEmitter'. node_modules/npm/lib/utils/error-handler.js(23,36): error TS2339: Property 'config' does not exist on type 'EventEmitter'. node_modules/npm/lib/utils/error-handler.js(29,16): error TS2339: Property 'version' does not exist on type 'EventEmitter'. @@ -952,7 +948,7 @@ node_modules/npm/test/common-tap.js(10,36): error TS2322: Type '(...args: any[]) Type '(...args: any[]) => void' is not assignable to type '(callback: (...args: any[]) => void, ...args: any[]) => Immediate'. Type 'void' is not assignable to type 'Immediate'. node_modules/npm/test/common-tap.js(12,28): error TS2345: Argument of type 'any[]' is not assignable to parameter of type '[callback: (...args: any[]) => void, ms: number, ...args: any[]]'. - Property '0' is optional in type 'any[]' but required in type '[callback: (...args: any[]) => void, ms: number, ...args: any[]]'. + Source provides no match for required element at position 0 in target. node_modules/npm/test/common-tap.js(175,17): error TS2339: Property '_storage' does not exist on type 'Environment'. node_modules/npm/test/common-tap.js(181,31): error TS2339: Property '_storage' does not exist on type 'Environment'. node_modules/npm/test/common-tap.js(192,12): error TS2339: Property '_storage' does not exist on type 'Environment'. @@ -1072,7 +1068,7 @@ node_modules/npm/test/tap/404-private-registry.js(1,20): error TS2307: Cannot fi node_modules/npm/test/tap/404-private-registry.js(6,18): error TS2307: Cannot find module 'npm-registry-mock' or its corresponding type declarations. node_modules/npm/test/tap/access.js(5,18): error TS2307: Cannot find module 'npm-registry-mock' or its corresponding type declarations. node_modules/npm/test/tap/access.js(7,20): error TS2307: Cannot find module 'tap' or its corresponding type declarations. -node_modules/npm/test/tap/access.js(19,15): error TS2345: Argument of type '(er: any) => void' is not assignable to parameter of type 'string | number | Options | undefined'. +node_modules/npm/test/tap/access.js(19,15): error TS2345: Argument of type '(er: any) => void' is not assignable to parameter of type 'Mode | Options'. Type '(er: any) => void' has no properties in common with type 'Options'. node_modules/npm/test/tap/add-named-update-protocol-port.js(3,20): error TS2307: Cannot find module 'tap' or its corresponding type declarations. node_modules/npm/test/tap/add-named-update-protocol-port.js(5,18): error TS2307: Cannot find module 'npm-registry-mock' or its corresponding type declarations. @@ -1095,7 +1091,7 @@ node_modules/npm/test/tap/adduser-always-auth.js(4,18): error TS2307: Cannot fin node_modules/npm/test/tap/adduser-always-auth.js(6,20): error TS2307: Cannot find module 'tap' or its corresponding type declarations. node_modules/npm/test/tap/adduser-legacy-auth.js(5,18): error TS2307: Cannot find module 'npm-registry-mock' or its corresponding type declarations. node_modules/npm/test/tap/adduser-legacy-auth.js(7,20): error TS2307: Cannot find module 'tap' or its corresponding type declarations. -node_modules/npm/test/tap/adduser-legacy-auth.js(45,15): error TS2345: Argument of type '(er: any) => void' is not assignable to parameter of type 'string | number | Options | undefined'. +node_modules/npm/test/tap/adduser-legacy-auth.js(45,15): error TS2345: Argument of type '(er: any) => void' is not assignable to parameter of type 'Mode | Options'. Type '(er: any) => void' has no properties in common with type 'Options'. node_modules/npm/test/tap/adduser-oauth.js(5,18): error TS2307: Cannot find module 'npm-registry-mock' or its corresponding type declarations. node_modules/npm/test/tap/adduser-oauth.js(7,20): error TS2307: Cannot find module 'tap' or its corresponding type declarations. @@ -1224,7 +1220,7 @@ node_modules/npm/test/tap/deprecate.js(1,18): error TS2307: Cannot find module ' node_modules/npm/test/tap/deprecate.js(3,20): error TS2307: Cannot find module 'tap' or its corresponding type declarations. node_modules/npm/test/tap/dist-tag.js(5,18): error TS2307: Cannot find module 'npm-registry-mock' or its corresponding type declarations. node_modules/npm/test/tap/dist-tag.js(7,20): error TS2307: Cannot find module 'tap' or its corresponding type declarations. -node_modules/npm/test/tap/dist-tag.js(49,15): error TS2345: Argument of type '(er: any) => void' is not assignable to parameter of type 'string | number | Options | undefined'. +node_modules/npm/test/tap/dist-tag.js(49,15): error TS2345: Argument of type '(er: any) => void' is not assignable to parameter of type 'Mode | Options'. Type '(er: any) => void' has no properties in common with type 'Options'. node_modules/npm/test/tap/do-not-remove-other-bins.js(8,20): error TS2307: Cannot find module 'tap' or its corresponding type declarations. node_modules/npm/test/tap/doctor.js(5,20): error TS2307: Cannot find module 'npm-registry-mock' or its corresponding type declarations. @@ -1513,12 +1509,10 @@ node_modules/npm/test/tap/owner.js(2,20): error TS2307: Cannot find module 'tap' node_modules/npm/test/tap/pack-files-and-ignores.js(2,20): error TS2307: Cannot find module 'tap' or its corresponding type declarations. node_modules/npm/test/tap/pack-files-and-ignores.js(12,21): error TS2307: Cannot find module 'tacks' or its corresponding type declarations. node_modules/npm/test/tap/pack-scoped.js(2,20): error TS2307: Cannot find module 'tap' or its corresponding type declarations. -node_modules/npm/test/tap/pack-scoped.js(24,15): error TS2345: Argument of type '(er: any) => void' is not assignable to parameter of type 'string | number | Options | undefined'. - Type '(er: any) => void' has no properties in common with type 'Options'. -node_modules/npm/test/tap/pack-scoped.js(25,17): error TS2345: Argument of type '(er: any) => void' is not assignable to parameter of type 'string | number | Options | undefined'. - Type '(er: any) => void' has no properties in common with type 'Options'. -node_modules/npm/test/tap/pack-scoped.js(26,15): error TS2345: Argument of type '(er: any) => void' is not assignable to parameter of type 'string | number | Options | undefined'. +node_modules/npm/test/tap/pack-scoped.js(24,15): error TS2345: Argument of type '(er: any) => void' is not assignable to parameter of type 'Mode | Options'. Type '(er: any) => void' has no properties in common with type 'Options'. +node_modules/npm/test/tap/pack-scoped.js(25,17): error TS2345: Argument of type '(er: any) => void' is not assignable to parameter of type 'Mode | Options'. +node_modules/npm/test/tap/pack-scoped.js(26,15): error TS2345: Argument of type '(er: any) => void' is not assignable to parameter of type 'Mode | Options'. node_modules/npm/test/tap/pack.js(5,22): error TS2307: Cannot find module 'tap' or its corresponding type declarations. node_modules/npm/test/tap/peer-deps.js(5,18): error TS2307: Cannot find module 'npm-registry-mock' or its corresponding type declarations. node_modules/npm/test/tap/peer-deps.js(8,20): error TS2307: Cannot find module 'tap' or its corresponding type declarations. @@ -1542,22 +1536,18 @@ node_modules/npm/test/tap/pick-manifest-from-registry-metadata.js(137,11): error node_modules/npm/test/tap/ping.js(5,18): error TS2307: Cannot find module 'npm-registry-mock' or its corresponding type declarations. node_modules/npm/test/tap/ping.js(7,20): error TS2307: Cannot find module 'tap' or its corresponding type declarations. node_modules/npm/test/tap/prepare.js(3,20): error TS2307: Cannot find module 'tap' or its corresponding type declarations. -node_modules/npm/test/tap/prepare.js(16,15): error TS2345: Argument of type '(er: any) => void' is not assignable to parameter of type 'string | number | Options | undefined'. - Type '(er: any) => void' has no properties in common with type 'Options'. -node_modules/npm/test/tap/prepare.js(17,17): error TS2345: Argument of type '(er: any) => void' is not assignable to parameter of type 'string | number | Options | undefined'. - Type '(er: any) => void' has no properties in common with type 'Options'. -node_modules/npm/test/tap/prepare.js(18,15): error TS2345: Argument of type '(er: any) => void' is not assignable to parameter of type 'string | number | Options | undefined'. +node_modules/npm/test/tap/prepare.js(16,15): error TS2345: Argument of type '(er: any) => void' is not assignable to parameter of type 'Mode | Options'. Type '(er: any) => void' has no properties in common with type 'Options'. +node_modules/npm/test/tap/prepare.js(17,17): error TS2345: Argument of type '(er: any) => void' is not assignable to parameter of type 'Mode | Options'. +node_modules/npm/test/tap/prepare.js(18,15): error TS2345: Argument of type '(er: any) => void' is not assignable to parameter of type 'Mode | Options'. node_modules/npm/test/tap/prepublish-only.js(4,18): error TS2307: Cannot find module 'npm-registry-mock' or its corresponding type declarations. node_modules/npm/test/tap/prepublish-only.js(5,20): error TS2307: Cannot find module 'tap' or its corresponding type declarations. node_modules/npm/test/tap/prepublish-only.js(6,21): error TS2307: Cannot find module 'tacks' or its corresponding type declarations. node_modules/npm/test/tap/prepublish.js(3,20): error TS2307: Cannot find module 'tap' or its corresponding type declarations. -node_modules/npm/test/tap/prepublish.js(16,15): error TS2345: Argument of type '(er: any) => void' is not assignable to parameter of type 'string | number | Options | undefined'. - Type '(er: any) => void' has no properties in common with type 'Options'. -node_modules/npm/test/tap/prepublish.js(17,17): error TS2345: Argument of type '(er: any) => void' is not assignable to parameter of type 'string | number | Options | undefined'. - Type '(er: any) => void' has no properties in common with type 'Options'. -node_modules/npm/test/tap/prepublish.js(18,15): error TS2345: Argument of type '(er: any) => void' is not assignable to parameter of type 'string | number | Options | undefined'. +node_modules/npm/test/tap/prepublish.js(16,15): error TS2345: Argument of type '(er: any) => void' is not assignable to parameter of type 'Mode | Options'. Type '(er: any) => void' has no properties in common with type 'Options'. +node_modules/npm/test/tap/prepublish.js(17,17): error TS2345: Argument of type '(er: any) => void' is not assignable to parameter of type 'Mode | Options'. +node_modules/npm/test/tap/prepublish.js(18,15): error TS2345: Argument of type '(er: any) => void' is not assignable to parameter of type 'Mode | Options'. node_modules/npm/test/tap/process-logger.js(2,22): error TS2307: Cannot find module 'tap' or its corresponding type declarations. node_modules/npm/test/tap/process-logger.js(7,61): error TS2554: Expected 1-3 arguments, but got 4. node_modules/npm/test/tap/process-logger.js(8,37): error TS2769: No overload matches this call. @@ -1583,18 +1573,18 @@ node_modules/npm/test/tap/prune.js(5,18): error TS2307: Cannot find module 'npm- node_modules/npm/test/tap/prune.js(8,20): error TS2307: Cannot find module 'tap' or its corresponding type declarations. node_modules/npm/test/tap/publish-access-scoped.js(4,20): error TS2307: Cannot find module 'tap' or its corresponding type declarations. node_modules/npm/test/tap/publish-access-scoped.js(7,18): error TS2307: Cannot find module 'npm-registry-mock' or its corresponding type declarations. -node_modules/npm/test/tap/publish-access-scoped.js(31,35): error TS2345: Argument of type '() => void' is not assignable to parameter of type 'string | number | Options | undefined'. +node_modules/npm/test/tap/publish-access-scoped.js(31,35): error TS2345: Argument of type '() => void' is not assignable to parameter of type 'Mode | Options'. Type '() => void' has no properties in common with type 'Options'. node_modules/npm/test/tap/publish-access-unscoped-restricted-fails.js(4,20): error TS2307: Cannot find module 'tap' or its corresponding type declarations. node_modules/npm/test/tap/publish-access-unscoped.js(4,20): error TS2307: Cannot find module 'tap' or its corresponding type declarations. node_modules/npm/test/tap/publish-access-unscoped.js(7,18): error TS2307: Cannot find module 'npm-registry-mock' or its corresponding type declarations. -node_modules/npm/test/tap/publish-access-unscoped.js(31,35): error TS2345: Argument of type '() => void' is not assignable to parameter of type 'string | number | Options | undefined'. +node_modules/npm/test/tap/publish-access-unscoped.js(31,35): error TS2345: Argument of type '() => void' is not assignable to parameter of type 'Mode | Options'. Type '() => void' has no properties in common with type 'Options'. node_modules/npm/test/tap/publish-config.js(4,22): error TS2307: Cannot find module 'tap' or its corresponding type declarations. node_modules/npm/test/tap/publish-invalid-semver-tag.js(2,20): error TS2307: Cannot find module 'tap' or its corresponding type declarations. node_modules/npm/test/tap/publish-invalid-semver-tag.js(8,18): error TS2307: Cannot find module 'npm-registry-mock' or its corresponding type declarations. -node_modules/npm/test/tap/publish-invalid-semver-tag.js(26,59): error TS2345: Argument of type '{ name: string; version: string; }' is not assignable to parameter of type 'string | DataView | Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array'. - Type '{ name: string; version: string; }' is missing the following properties from type 'Float64Array': BYTES_PER_ELEMENT, buffer, byteLength, byteOffset, and 26 more. +node_modules/npm/test/tap/publish-invalid-semver-tag.js(26,59): error TS2345: Argument of type '{ name: string; version: string; }' is not assignable to parameter of type 'string | ArrayBufferView'. + Type '{ name: string; version: string; }' is missing the following properties from type 'BigUint64Array': BYTES_PER_ELEMENT, buffer, byteLength, byteOffset, and 26 more. node_modules/npm/test/tap/publish-invalid-semver-tag.js(37,9): error TS2339: Property 'load' does not exist on type 'EventEmitter'. node_modules/npm/test/tap/publish-invalid-semver-tag.js(53,7): error TS2339: Property 'config' does not exist on type 'EventEmitter'. node_modules/npm/test/tap/publish-invalid-semver-tag.js(54,7): error TS2339: Property 'commands' does not exist on type 'EventEmitter'. @@ -1626,17 +1616,14 @@ node_modules/npm/test/tap/run-script.js(213,18): error TS2769: No overload match Type 'undefined' is not assignable to type 'string | RegExp'. Overload 2 of 3, '(pattern: string | RegExp): RegExp', gave the following error. Argument of type 'string | undefined' is not assignable to parameter of type 'string | RegExp'. - Type 'undefined' is not assignable to type 'string | RegExp'. Overload 3 of 3, '(pattern: string, flags?: string | undefined): RegExp', gave the following error. Argument of type 'string | undefined' is not assignable to parameter of type 'string'. Type 'undefined' is not assignable to type 'string'. node_modules/npm/test/tap/run-script.js(256,18): error TS2769: No overload matches this call. Overload 1 of 3, '(pattern: string | RegExp, flags?: string | undefined): RegExp', gave the following error. Argument of type 'string | undefined' is not assignable to parameter of type 'string | RegExp'. - Type 'undefined' is not assignable to type 'string | RegExp'. Overload 2 of 3, '(pattern: string | RegExp): RegExp', gave the following error. Argument of type 'string | undefined' is not assignable to parameter of type 'string | RegExp'. - Type 'undefined' is not assignable to type 'string | RegExp'. Overload 3 of 3, '(pattern: string, flags?: string | undefined): RegExp', gave the following error. Argument of type 'string | undefined' is not assignable to parameter of type 'string'. Type 'undefined' is not assignable to type 'string'. diff --git a/tests/baselines/reference/user/npmlog.log b/tests/baselines/reference/user/npmlog.log index 9dd48ebe40255..9277dee1127d0 100644 --- a/tests/baselines/reference/user/npmlog.log +++ b/tests/baselines/reference/user/npmlog.log @@ -13,8 +13,6 @@ node_modules/npmlog/log.js(162,12): error TS2339: Property 'progressEnabled' doe node_modules/npmlog/log.js(162,34): error TS2339: Property 'gauge' does not exist on type 'resume'. node_modules/npmlog/log.js(171,16): error TS2339: Property 'levels' does not exist on type '(Anonymous function)'. node_modules/npmlog/log.js(173,17): error TS2339: Property 'emit' does not exist on type '(Anonymous function)'. -node_modules/npmlog/log.js(194,37): error TS2345: Argument of type 'any[]' is not assignable to parameter of type '[format: any, ...param: any[]]'. - Property '0' is optional in type 'any[]' but required in type '[format: any, ...param: any[]]'. node_modules/npmlog/log.js(202,8): error TS2339: Property 'emit' does not exist on type '(Anonymous function)'. node_modules/npmlog/log.js(203,8): error TS2339: Property 'emit' does not exist on type '(Anonymous function)'. node_modules/npmlog/log.js(204,22): error TS2339: Property 'emit' does not exist on type '(Anonymous function)'. @@ -28,9 +26,8 @@ node_modules/npmlog/log.js(271,16): error TS2769: No overload matches this call. Overload 1 of 2, '(buffer: string | Uint8Array, cb?: ((err?: Error | undefined) => void) | undefined): boolean', gave the following error. Argument of type 'string | undefined' is not assignable to parameter of type 'string | Uint8Array'. Type 'undefined' is not assignable to type 'string | Uint8Array'. - Overload 2 of 2, '(str: string | Uint8Array, encoding?: "ascii" | "utf8" | "utf-8" | "utf16le" | "ucs2" | "ucs-2" | "base64" | "latin1" | "binary" | "hex" | undefined, cb?: ((err?: Error | undefined) => void) | undefined): boolean', gave the following error. + Overload 2 of 2, '(str: string | Uint8Array, encoding?: BufferEncoding | undefined, cb?: ((err?: Error | undefined) => void) | undefined): boolean', gave the following error. Argument of type 'string | undefined' is not assignable to parameter of type 'string | Uint8Array'. - Type 'undefined' is not assignable to type 'string | Uint8Array'. diff --git a/tests/baselines/reference/user/ts-toolbelt.log b/tests/baselines/reference/user/ts-toolbelt.log new file mode 100644 index 0000000000000..207b5f6fbb76a --- /dev/null +++ b/tests/baselines/reference/user/ts-toolbelt.log @@ -0,0 +1,7 @@ +Exit Code: 2 +Standard output: +index.ts(8,83): error TS2344: Type 'string' does not satisfy the constraint 'number'. + + + +Standard error: diff --git a/tests/baselines/reference/user/uglify-js.log b/tests/baselines/reference/user/uglify-js.log index 3aa7803c19b1a..2a56bc7a65a20 100644 --- a/tests/baselines/reference/user/uglify-js.log +++ b/tests/baselines/reference/user/uglify-js.log @@ -1,198 +1,233 @@ Exit Code: 2 Standard output: node_modules/uglify-js/lib/ast.js(125,34): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/ast.js(318,38): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/ast.js(625,69): error TS2552: Cannot find name 'error'. Did you mean 'Error'? -node_modules/uglify-js/lib/ast.js(1216,5): error TS2322: Type '{ visit: (node: any, descend: any) => void; parent: (n: any) => any; push: typeof push; pop: typeof pop; self: () => any; find_parent: (type: any) => any; has_directive: (type: any) => any; loopcontrol_target: (node: any) => any; in_boolean_context: () => boolean | undefined; }' is not assignable to type 'TreeWalker'. +node_modules/uglify-js/lib/ast.js(331,38): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/ast.js(524,33): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/ast.js(775,58): error TS2552: Cannot find name 'error'. Did you mean 'Error'? +node_modules/uglify-js/lib/ast.js(1520,5): error TS2322: Type '{ visit: (node: any, descend: any) => void; parent: (n: any) => any; push: typeof push; pop: typeof pop; self: () => any; find_parent: (type: any) => any; has_directive: (type: any) => any; loopcontrol_target: (node: any) => any; in_boolean_context: () => boolean | undefined; }' is not assignable to type 'TreeWalker'. Object literal may only specify known properties, and 'visit' does not exist in type 'TreeWalker'. -node_modules/uglify-js/lib/ast.js(1217,14): error TS2339: Property 'push' does not exist on type 'TreeWalker'. -node_modules/uglify-js/lib/ast.js(1220,14): error TS2339: Property 'pop' does not exist on type 'TreeWalker'. -node_modules/uglify-js/lib/ast.js(1274,25): error TS2339: Property 'self' does not exist on type 'TreeWalker'. -node_modules/uglify-js/lib/ast.js(1275,37): error TS2339: Property 'parent' does not exist on type 'TreeWalker'. -node_modules/uglify-js/lib/ast.js(1293,31): error TS2339: Property 'parent' does not exist on type 'TreeWalker'. -node_modules/uglify-js/lib/ast.js(1297,29): error TS2339: Property 'parent' does not exist on type 'TreeWalker'. -node_modules/uglify-js/lib/compress.js(192,42): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/compress.js(712,27): error TS2339: Property 'name' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/compress.js(783,21): error TS2339: Property 'name' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/compress.js(786,20): error TS2339: Property 'walk' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/compress.js(786,40): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/compress.js(796,20): error TS2339: Property 'argnames' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/compress.js(798,55): error TS2339: Property 'uses_arguments' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/compress.js(803,40): error TS2339: Property 'argnames' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/compress.js(871,26): error TS2339: Property 'definition' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/compress.js(880,56): error TS2339: Property 'scope' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/compress.js(884,34): error TS2339: Property 'fixed_value' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/compress.js(894,49): error TS2339: Property 'scope' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/compress.js(909,42): error TS2339: Property 'scope' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/compress.js(1023,33): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/compress.js(1028,12): error TS2339: Property 'defun_ids' does not exist on type 'TreeWalker'. -node_modules/uglify-js/lib/compress.js(1029,12): error TS2339: Property 'defun_visited' does not exist on type 'TreeWalker'. -node_modules/uglify-js/lib/compress.js(1031,12): error TS2339: Property 'in_loop' does not exist on type 'TreeWalker'. -node_modules/uglify-js/lib/compress.js(1032,12): error TS2339: Property 'loop_ids' does not exist on type 'TreeWalker'. -node_modules/uglify-js/lib/compress.js(1037,12): error TS2339: Property 'safe_ids' does not exist on type 'TreeWalker'. -node_modules/uglify-js/lib/compress.js(1314,38): error TS2339: Property 'parent' does not exist on type 'TreeTransformer'. -node_modules/uglify-js/lib/compress.js(1329,51): error TS2349: This expression is not callable. +node_modules/uglify-js/lib/ast.js(1521,14): error TS2339: Property 'push' does not exist on type 'TreeWalker'. +node_modules/uglify-js/lib/ast.js(1524,14): error TS2339: Property 'pop' does not exist on type 'TreeWalker'. +node_modules/uglify-js/lib/ast.js(1578,25): error TS2339: Property 'self' does not exist on type 'TreeWalker'. +node_modules/uglify-js/lib/ast.js(1579,37): error TS2339: Property 'parent' does not exist on type 'TreeWalker'. +node_modules/uglify-js/lib/ast.js(1595,52): error TS2339: Property 'parent' does not exist on type 'TreeWalker'. +node_modules/uglify-js/lib/compress.js(196,42): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(615,42): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(705,27): error TS2339: Property 'name' does not exist on type 'reduce_defun'. +node_modules/uglify-js/lib/compress.js(724,16): error TS2339: Property 'walk' does not exist on type 'reduce_iife'. +node_modules/uglify-js/lib/compress.js(724,36): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(734,28): error TS2339: Property 'uses_arguments' does not exist on type 'reduce_iife'. +node_modules/uglify-js/lib/compress.js(735,16): error TS2339: Property 'argnames' does not exist on type 'reduce_iife'. +node_modules/uglify-js/lib/compress.js(738,32): error TS2339: Property 'argnames' does not exist on type 'reduce_iife'. +node_modules/uglify-js/lib/compress.js(742,20): error TS2339: Property 'rest' does not exist on type 'reduce_iife'. +node_modules/uglify-js/lib/compress.js(742,62): error TS2339: Property 'rest' does not exist on type 'reduce_iife'. +node_modules/uglify-js/lib/compress.js(744,50): error TS2339: Property 'argnames' does not exist on type 'reduce_iife'. +node_modules/uglify-js/lib/compress.js(1006,20): error TS2339: Property 'name' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/compress.js(1006,46): error TS2339: Property 'name' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/compress.js(1006,72): error TS2339: Property 'name' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/compress.js(1038,26): error TS2339: Property 'definition' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/compress.js(1047,56): error TS2339: Property 'scope' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/compress.js(1051,26): error TS2339: Property 'in_arg' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/compress.js(1052,34): error TS2339: Property 'fixed_value' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/compress.js(1062,49): error TS2339: Property 'scope' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/compress.js(1077,42): error TS2339: Property 'scope' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/compress.js(1202,33): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(1207,12): error TS2339: Property 'defun_ids' does not exist on type 'TreeWalker'. +node_modules/uglify-js/lib/compress.js(1208,12): error TS2339: Property 'defun_visited' does not exist on type 'TreeWalker'. +node_modules/uglify-js/lib/compress.js(1210,12): error TS2339: Property 'in_loop' does not exist on type 'TreeWalker'. +node_modules/uglify-js/lib/compress.js(1211,12): error TS2339: Property 'loop_ids' does not exist on type 'TreeWalker'. +node_modules/uglify-js/lib/compress.js(1216,12): error TS2339: Property 'safe_ids' does not exist on type 'TreeWalker'. +node_modules/uglify-js/lib/compress.js(1264,37): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(1292,33): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(1562,38): error TS2339: Property 'parent' does not exist on type 'TreeTransformer'. +node_modules/uglify-js/lib/compress.js(1577,51): error TS2349: This expression is not callable. Not all constituents of type 'true | ((node: any, tw: any) => any)' are callable. Type 'true' has no call signatures. -node_modules/uglify-js/lib/compress.js(1404,53): error TS2339: Property 'parent' does not exist on type 'TreeTransformer'. -node_modules/uglify-js/lib/compress.js(1425,53): error TS2339: Property 'parent' does not exist on type 'TreeTransformer'. -node_modules/uglify-js/lib/compress.js(1472,112): error TS2454: Variable 'args' is used before being assigned. -node_modules/uglify-js/lib/compress.js(1473,29): error TS2532: Object is possibly 'undefined'. -node_modules/uglify-js/lib/compress.js(1498,33): error TS2322: Type 'boolean' is not assignable to type 'number'. -node_modules/uglify-js/lib/compress.js(1500,29): error TS2322: Type 'boolean' is not assignable to type 'never'. -node_modules/uglify-js/lib/compress.js(1672,53): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/compress.js(1790,38): error TS2339: Property 'parent' does not exist on type 'TreeTransformer'. -node_modules/uglify-js/lib/compress.js(1814,38): error TS2339: Property 'parent' does not exist on type 'TreeTransformer'. -node_modules/uglify-js/lib/compress.js(1829,46): error TS2339: Property 'parent' does not exist on type 'TreeTransformer'. -node_modules/uglify-js/lib/compress.js(1860,39): error TS2339: Property 'parent' does not exist on type 'TreeTransformer'. -node_modules/uglify-js/lib/compress.js(1892,38): error TS2339: Property 'parent' does not exist on type 'TreeTransformer'. -node_modules/uglify-js/lib/compress.js(1908,39): error TS2339: Property 'parent' does not exist on type 'TreeTransformer'. -node_modules/uglify-js/lib/compress.js(1990,45): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/compress.js(2010,42): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/compress.js(2049,41): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/compress.js(2199,53): error TS2345: Argument of type 'number[]' is not assignable to parameter of type '[start: number, deleteCount: number, ...items: never[]]'. - Property '0' is optional in type 'number[]' but required in type '[start: number, deleteCount: number, ...items: never[]]'. -node_modules/uglify-js/lib/compress.js(2556,59): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/compress.js(2594,53): error TS2345: Argument of type 'any[]' is not assignable to parameter of type '[start: number, deleteCount: number, ...items: never[]]'. - Property '0' is optional in type 'any[]' but required in type '[start: number, deleteCount: number, ...items: never[]]'. -node_modules/uglify-js/lib/compress.js(2629,26): error TS2403: Subsequent variable declarations must have the same type. Variable 'i' must be of type 'number', but here has type 'any'. -node_modules/uglify-js/lib/compress.js(2817,34): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/compress.js(2834,27): error TS2339: Property 'required' does not exist on type 'any[]'. -node_modules/uglify-js/lib/compress.js(2839,43): error TS2345: Argument of type 'any[]' is not assignable to parameter of type 'never[]'. +node_modules/uglify-js/lib/compress.js(1631,61): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(1674,53): error TS2339: Property 'parent' does not exist on type 'TreeTransformer'. +node_modules/uglify-js/lib/compress.js(1695,53): error TS2339: Property 'parent' does not exist on type 'TreeTransformer'. +node_modules/uglify-js/lib/compress.js(1750,77): error TS2454: Variable 'args' is used before being assigned. +node_modules/uglify-js/lib/compress.js(1751,33): error TS2532: Object is possibly 'undefined'. +node_modules/uglify-js/lib/compress.js(1751,42): error TS2532: Object is possibly 'undefined'. +node_modules/uglify-js/lib/compress.js(1776,33): error TS2322: Type 'boolean' is not assignable to type 'number'. +node_modules/uglify-js/lib/compress.js(1778,29): error TS2322: Type 'boolean' is not assignable to type 'never'. +node_modules/uglify-js/lib/compress.js(2003,65): error TS2339: Property 'find_parent' does not exist on type 'TreeWalker'. +node_modules/uglify-js/lib/compress.js(2005,45): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(2018,75): error TS2339: Property 'find_parent' does not exist on type 'TreeWalker'. +node_modules/uglify-js/lib/compress.js(2173,38): error TS2339: Property 'parent' does not exist on type 'TreeTransformer'. +node_modules/uglify-js/lib/compress.js(2199,38): error TS2339: Property 'parent' does not exist on type 'TreeTransformer'. +node_modules/uglify-js/lib/compress.js(2201,68): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(2208,46): error TS2339: Property 'parent' does not exist on type 'TreeTransformer'. +node_modules/uglify-js/lib/compress.js(2239,39): error TS2339: Property 'parent' does not exist on type 'TreeTransformer'. +node_modules/uglify-js/lib/compress.js(2269,38): error TS2339: Property 'parent' does not exist on type 'TreeTransformer'. +node_modules/uglify-js/lib/compress.js(2284,39): error TS2339: Property 'parent' does not exist on type 'TreeTransformer'. +node_modules/uglify-js/lib/compress.js(2308,35): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(2314,45): error TS2339: Property 'stack' does not exist on type 'TreeTransformer'. +node_modules/uglify-js/lib/compress.js(2315,33): error TS2339: Property 'stack' does not exist on type 'TreeTransformer'. +node_modules/uglify-js/lib/compress.js(2317,33): error TS2339: Property 'stack' does not exist on type 'TreeTransformer'. +node_modules/uglify-js/lib/compress.js(2401,45): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(2422,42): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(2462,41): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(2620,53): error TS2345: Argument of type 'number[]' is not assignable to parameter of type '[start: number, deleteCount: number, ...items: never[]]'. + Source provides no match for required element at position 0 in target. +node_modules/uglify-js/lib/compress.js(2985,59): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(3023,53): error TS2345: Argument of type 'any[]' is not assignable to parameter of type '[start: number, deleteCount: number, ...items: never[]]'. + Source provides no match for required element at position 0 in target. +node_modules/uglify-js/lib/compress.js(3058,26): error TS2403: Subsequent variable declarations must have the same type. Variable 'i' must be of type 'number', but here has type 'any'. +node_modules/uglify-js/lib/compress.js(3254,34): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(3275,27): error TS2339: Property 'required' does not exist on type 'any[]'. +node_modules/uglify-js/lib/compress.js(3280,43): error TS2345: Argument of type 'any[]' is not assignable to parameter of type 'never[]'. Type 'any' is not assignable to type 'never'. -node_modules/uglify-js/lib/compress.js(2878,30): error TS2339: Property 'fixed_value' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/compress.js(2882,20): error TS2790: The operand of a 'delete' operator must be optional. -node_modules/uglify-js/lib/compress.js(2928,30): error TS2339: Property 'fixed_value' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/compress.js(2932,20): error TS2790: The operand of a 'delete' operator must be optional. -node_modules/uglify-js/lib/compress.js(2997,22): error TS2339: Property 'is_undefined' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/compress.js(2999,49): error TS2339: Property 'is_declared' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/compress.js(3000,22): error TS2339: Property 'is_immutable' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/compress.js(3001,35): error TS2339: Property 'definition' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/compress.js(3002,30): error TS2339: Property 'fixed_value' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/compress.js(3050,22): error TS2551: Property 'is_undefined' does not exist on type '(Anonymous function)'. Did you mean 'is_defined'? -node_modules/uglify-js/lib/compress.js(3051,49): error TS2339: Property 'is_declared' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/compress.js(3052,22): error TS2339: Property 'is_immutable' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/compress.js(3053,30): error TS2339: Property 'fixed_value' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/compress.js(3057,20): error TS2790: The operand of a 'delete' operator must be optional. -node_modules/uglify-js/lib/compress.js(3099,30): error TS2339: Property 'fixed_value' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/compress.js(3103,20): error TS2790: The operand of a 'delete' operator must be optional. -node_modules/uglify-js/lib/compress.js(3189,30): error TS2339: Property 'fixed_value' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/compress.js(3193,20): error TS2790: The operand of a 'delete' operator must be optional. -node_modules/uglify-js/lib/compress.js(3241,30): error TS2339: Property 'fixed_value' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/compress.js(3245,20): error TS2790: The operand of a 'delete' operator must be optional. -node_modules/uglify-js/lib/compress.js(3494,44): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/compress.js(3716,55): error TS2345: Argument of type 'number' is not assignable to parameter of type 'string'. -node_modules/uglify-js/lib/compress.js(3717,25): error TS2531: Object is possibly 'null'. -node_modules/uglify-js/lib/compress.js(3717,55): error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type. -node_modules/uglify-js/lib/compress.js(3717,56): error TS2531: Object is possibly 'null'. -node_modules/uglify-js/lib/compress.js(3734,48): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/compress.js(3745,30): error TS2339: Property 'fixed_value' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/compress.js(3753,24): error TS2790: The operand of a 'delete' operator must be optional. -node_modules/uglify-js/lib/compress.js(3835,48): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/compress.js(3853,33): error TS2532: Object is possibly 'undefined'. -node_modules/uglify-js/lib/compress.js(4284,38): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/compress.js(4304,29): error TS2322: Type 'string' is not assignable to type 'boolean'. -node_modules/uglify-js/lib/compress.js(4455,33): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/compress.js(4473,33): error TS2339: Property 'loopcontrol_target' does not exist on type 'TreeWalker'. -node_modules/uglify-js/lib/compress.js(4495,33): error TS2339: Property 'loopcontrol_target' does not exist on type 'TreeWalker'. -node_modules/uglify-js/lib/compress.js(4565,52): error TS2339: Property 'has_directive' does not exist on type 'TreeWalker'. -node_modules/uglify-js/lib/compress.js(4758,56): error TS2532: Object is possibly 'undefined'. -node_modules/uglify-js/lib/compress.js(4759,54): error TS2532: Object is possibly 'undefined'. -node_modules/uglify-js/lib/compress.js(4817,33): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/compress.js(4818,74): error TS2339: Property 'has_directive' does not exist on type 'TreeWalker'. -node_modules/uglify-js/lib/compress.js(4875,29): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/compress.js(4922,29): error TS2339: Property 'parent' does not exist on type 'TreeTransformer'. -node_modules/uglify-js/lib/compress.js(5119,56): error TS2345: Argument of type 'any[]' is not assignable to parameter of type 'never[]'. -node_modules/uglify-js/lib/compress.js(5243,12): error TS2339: Property 'push' does not exist on type 'TreeTransformer'. -node_modules/uglify-js/lib/compress.js(5406,18): error TS2339: Property 'walk' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/compress.js(5406,38): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/compress.js(5427,24): error TS2339: Property 'parent' does not exist on type 'TreeTransformer'. -node_modules/uglify-js/lib/compress.js(5437,28): error TS2339: Property 'parent' does not exist on type 'TreeTransformer'. -node_modules/uglify-js/lib/compress.js(5451,14): error TS2339: Property 'transform' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/compress.js(5457,34): error TS2339: Property 'argnames' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/compress.js(5522,32): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/compress.js(5615,18): error TS2339: Property 'enclosed' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/compress.js(5618,18): error TS2339: Property 'variables' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/compress.js(5777,17): error TS2447: The '|=' operator is not allowed for boolean types. Consider using '||' instead. -node_modules/uglify-js/lib/compress.js(5793,29): error TS2339: Property 'left' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/compress.js(5804,29): error TS2339: Property 'right' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/compress.js(5921,23): error TS2454: Variable 'exprs' is used before being assigned. -node_modules/uglify-js/lib/compress.js(5922,20): error TS2454: Variable 'exprs' is used before being assigned. -node_modules/uglify-js/lib/compress.js(5976,28): error TS2339: Property 'expression' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/compress.js(5977,41): error TS2339: Property 'operator' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/compress.js(5981,22): error TS2339: Property 'operator' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/compress.js(5984,42): error TS2339: Property 'operator' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/compress.js(6015,33): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/compress.js(6017,44): error TS2339: Property 'loopcontrol_target' does not exist on type 'TreeWalker'. -node_modules/uglify-js/lib/compress.js(6021,56): error TS2339: Property 'push' does not exist on type 'TreeWalker'. -node_modules/uglify-js/lib/compress.js(6022,12): error TS2339: Property 'push' does not exist on type 'TreeWalker'. -node_modules/uglify-js/lib/compress.js(6090,38): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/compress.js(6146,21): error TS2403: Subsequent variable declarations must have the same type. Variable 'body' must be of type 'any[]', but here has type 'any'. -node_modules/uglify-js/lib/compress.js(6161,21): error TS2403: Subsequent variable declarations must have the same type. Variable 'body' must be of type 'any[]', but here has type 'any'. -node_modules/uglify-js/lib/compress.js(6271,33): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/compress.js(6273,33): error TS2339: Property 'parent' does not exist on type 'TreeWalker'. -node_modules/uglify-js/lib/compress.js(6440,17): error TS2403: Subsequent variable declarations must have the same type. Variable 'body' must be of type 'any[]', but here has type 'any'. -node_modules/uglify-js/lib/compress.js(6641,37): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/compress.js(6647,16): error TS2339: Property 'push' does not exist on type 'TreeWalker'. -node_modules/uglify-js/lib/compress.js(6687,21): error TS2403: Subsequent variable declarations must have the same type. Variable 'body' must be of type 'any[]', but here has type 'any'. -node_modules/uglify-js/lib/compress.js(6923,57): error TS2345: Argument of type 'any[]' is not assignable to parameter of type '[pattern: string | RegExp, flags?: string | undefined]'. +node_modules/uglify-js/lib/compress.js(3319,30): error TS2339: Property 'fixed_value' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/compress.js(3323,20): error TS2790: The operand of a 'delete' operator must be optional. +node_modules/uglify-js/lib/compress.js(3369,30): error TS2339: Property 'fixed_value' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/compress.js(3373,20): error TS2790: The operand of a 'delete' operator must be optional. +node_modules/uglify-js/lib/compress.js(3437,22): error TS2339: Property 'is_undefined' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/compress.js(3439,49): error TS2339: Property 'is_declared' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/compress.js(3440,22): error TS2339: Property 'is_immutable' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/compress.js(3441,28): error TS2339: Property 'definition' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/compress.js(3445,30): error TS2339: Property 'fixed_value' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/compress.js(3494,22): error TS2551: Property 'is_undefined' does not exist on type '(Anonymous function)'. Did you mean 'is_defined'? +node_modules/uglify-js/lib/compress.js(3495,49): error TS2339: Property 'is_declared' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/compress.js(3496,22): error TS2339: Property 'is_immutable' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/compress.js(3497,30): error TS2339: Property 'fixed_value' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/compress.js(3501,20): error TS2790: The operand of a 'delete' operator must be optional. +node_modules/uglify-js/lib/compress.js(3543,30): error TS2339: Property 'fixed_value' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/compress.js(3547,20): error TS2790: The operand of a 'delete' operator must be optional. +node_modules/uglify-js/lib/compress.js(3633,30): error TS2339: Property 'fixed_value' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/compress.js(3637,20): error TS2790: The operand of a 'delete' operator must be optional. +node_modules/uglify-js/lib/compress.js(3685,30): error TS2339: Property 'fixed_value' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/compress.js(3689,20): error TS2790: The operand of a 'delete' operator must be optional. +node_modules/uglify-js/lib/compress.js(3960,44): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(4195,55): error TS2345: Argument of type 'number' is not assignable to parameter of type 'string'. +node_modules/uglify-js/lib/compress.js(4196,25): error TS2531: Object is possibly 'null'. +node_modules/uglify-js/lib/compress.js(4196,55): error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type. +node_modules/uglify-js/lib/compress.js(4196,56): error TS2531: Object is possibly 'null'. +node_modules/uglify-js/lib/compress.js(4213,48): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(4224,30): error TS2339: Property 'fixed_value' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/compress.js(4232,24): error TS2790: The operand of a 'delete' operator must be optional. +node_modules/uglify-js/lib/compress.js(4326,54): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(4347,33): error TS2532: Object is possibly 'undefined'. +node_modules/uglify-js/lib/compress.js(4818,38): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(4838,29): error TS2322: Type 'string' is not assignable to type 'boolean'. +node_modules/uglify-js/lib/compress.js(5032,33): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(5037,49): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(5081,33): error TS2339: Property 'loopcontrol_target' does not exist on type 'TreeWalker'. +node_modules/uglify-js/lib/compress.js(5109,33): error TS2339: Property 'loopcontrol_target' does not exist on type 'TreeWalker'. +node_modules/uglify-js/lib/compress.js(5172,25): error TS2403: Subsequent variable declarations must have the same type. Variable 'marker' must be of type 'TreeWalker', but here has type '(node: any) => void'. +node_modules/uglify-js/lib/compress.js(5172,61): error TS2339: Property 'has_directive' does not exist on type 'TreeWalker'. +node_modules/uglify-js/lib/compress.js(5177,50): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(5400,56): error TS2532: Object is possibly 'undefined'. +node_modules/uglify-js/lib/compress.js(5401,54): error TS2532: Object is possibly 'undefined'. +node_modules/uglify-js/lib/compress.js(5496,33): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(5497,74): error TS2339: Property 'has_directive' does not exist on type 'TreeWalker'. +node_modules/uglify-js/lib/compress.js(5559,29): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(5660,29): error TS2339: Property 'parent' does not exist on type 'TreeTransformer'. +node_modules/uglify-js/lib/compress.js(5723,58): error TS2339: Property 'has_directive' does not exist on type 'TreeTransformer'. +node_modules/uglify-js/lib/compress.js(5917,56): error TS2345: Argument of type 'any[]' is not assignable to parameter of type 'never[]'. +node_modules/uglify-js/lib/compress.js(6039,12): error TS2339: Property 'push' does not exist on type 'TreeTransformer'. +node_modules/uglify-js/lib/compress.js(6373,18): error TS2339: Property 'walk' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/compress.js(6373,38): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(6395,24): error TS2339: Property 'parent' does not exist on type 'TreeTransformer'. +node_modules/uglify-js/lib/compress.js(6404,33): error TS2339: Property 'find_variable' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/compress.js(6411,28): error TS2339: Property 'parent' does not exist on type 'TreeTransformer'. +node_modules/uglify-js/lib/compress.js(6429,14): error TS2339: Property 'transform' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/compress.js(6435,34): error TS2339: Property 'argnames' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/compress.js(6503,32): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(6597,18): error TS2339: Property 'enclosed' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/compress.js(6600,18): error TS2339: Property 'variables' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/compress.js(6807,29): error TS2339: Property 'left' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/compress.js(6818,29): error TS2339: Property 'right' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/compress.js(6946,23): error TS2454: Variable 'exprs' is used before being assigned. +node_modules/uglify-js/lib/compress.js(6947,20): error TS2454: Variable 'exprs' is used before being assigned. +node_modules/uglify-js/lib/compress.js(7020,28): error TS2339: Property 'expression' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/compress.js(7021,41): error TS2339: Property 'operator' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/compress.js(7025,22): error TS2339: Property 'operator' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/compress.js(7028,42): error TS2339: Property 'operator' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/compress.js(7059,33): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(7061,44): error TS2339: Property 'loopcontrol_target' does not exist on type 'TreeWalker'. +node_modules/uglify-js/lib/compress.js(7065,56): error TS2339: Property 'push' does not exist on type 'TreeWalker'. +node_modules/uglify-js/lib/compress.js(7066,12): error TS2339: Property 'push' does not exist on type 'TreeWalker'. +node_modules/uglify-js/lib/compress.js(7134,38): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(7190,21): error TS2403: Subsequent variable declarations must have the same type. Variable 'body' must be of type 'any[]', but here has type 'any'. +node_modules/uglify-js/lib/compress.js(7205,21): error TS2403: Subsequent variable declarations must have the same type. Variable 'body' must be of type 'any[]', but here has type 'any'. +node_modules/uglify-js/lib/compress.js(7328,33): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(7330,33): error TS2339: Property 'parent' does not exist on type 'TreeWalker'. +node_modules/uglify-js/lib/compress.js(7497,17): error TS2403: Subsequent variable declarations must have the same type. Variable 'body' must be of type 'any[]', but here has type 'any'. +node_modules/uglify-js/lib/compress.js(7696,37): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(7702,16): error TS2339: Property 'push' does not exist on type 'TreeWalker'. +node_modules/uglify-js/lib/compress.js(7745,21): error TS2403: Subsequent variable declarations must have the same type. Variable 'body' must be of type 'any[]', but here has type 'any'. +node_modules/uglify-js/lib/compress.js(8033,53): error TS2345: Argument of type 'any[]' is not assignable to parameter of type '[pattern: string | RegExp, flags?: string | undefined]'. Target requires 1 element(s) but source may have fewer. -node_modules/uglify-js/lib/compress.js(7087,45): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/compress.js(7094,25): error TS2403: Subsequent variable declarations must have the same type. Variable 'code' must be of type 'string', but here has type '{ get: () => string; toString: () => string; indent: (half: any) => void; should_break: () => void; has_parens: () => boolean; newline: () => void; print: (str: any) => void; space: () => void; comma: () => void; colon: () => void; ... 20 more ...; parent: (n: any) => any; }'. -node_modules/uglify-js/lib/compress.js(7098,36): error TS2532: Object is possibly 'undefined'. -node_modules/uglify-js/lib/compress.js(7103,41): error TS2339: Property 'get' does not exist on type 'string'. -node_modules/uglify-js/lib/compress.js(7255,39): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/compress.js(7259,21): error TS2322: Type 'null' is not assignable to type 'any[]'. -node_modules/uglify-js/lib/compress.js(7266,25): error TS2322: Type 'null' is not assignable to type 'any[]'. -node_modules/uglify-js/lib/compress.js(7275,25): error TS2322: Type 'null' is not assignable to type 'any[]'. -node_modules/uglify-js/lib/compress.js(7291,32): error TS2532: Object is possibly 'undefined'. -node_modules/uglify-js/lib/compress.js(7295,27): error TS2532: Object is possibly 'undefined'. -node_modules/uglify-js/lib/compress.js(7524,38): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/compress.js(7808,18): error TS2454: Variable 'is_strict_comparison' is used before being assigned. -node_modules/uglify-js/lib/compress.js(8454,47): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/compress.js(8544,39): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/compress.js(8615,39): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/compress.js(8621,41): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/compress.js(8624,41): error TS2339: Property 'parent' does not exist on type 'TreeWalker'. -node_modules/uglify-js/lib/compress.js(9205,22): error TS2358: The left-hand side of an 'instanceof' expression must be of type 'any', an object type or a type parameter. -node_modules/uglify-js/lib/compress.js(9205,63): error TS2532: Object is possibly 'undefined'. -node_modules/uglify-js/lib/compress.js(9241,43): error TS2454: Variable 'property' is used before being assigned. -node_modules/uglify-js/lib/compress.js(9257,25): error TS2403: Subsequent variable declarations must have the same type. Variable 'value' must be of type 'number', but here has type 'any'. -node_modules/uglify-js/lib/compress.js(9260,46): error TS2339: Property 'has_side_effects' does not exist on type 'number'. -node_modules/uglify-js/lib/compress.js(9265,25): error TS2403: Subsequent variable declarations must have the same type. Variable 'value' must be of type 'number', but here has type 'any'. -node_modules/uglify-js/lib/compress.js(9304,34): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/minify.js(191,57): error TS2339: Property 'compress' does not exist on type 'Compressor'. -node_modules/uglify-js/lib/mozilla-ast.js(576,33): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/output.js(457,37): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/output.js(458,33): error TS2339: Property 'parent' does not exist on type 'TreeWalker'. -node_modules/uglify-js/lib/output.js(473,16): error TS2339: Property 'push' does not exist on type 'TreeWalker'. -node_modules/uglify-js/lib/output.js(1137,44): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/output.js(1435,58): error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type. -node_modules/uglify-js/lib/parse.js(249,9): error TS2322: Type 'string | boolean' is not assignable to type 'boolean'. +node_modules/uglify-js/lib/compress.js(8204,45): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(8211,25): error TS2403: Subsequent variable declarations must have the same type. Variable 'code' must be of type 'string', but here has type '{ get: () => string; toString: () => string; indent: (half: any) => void; should_break: () => void; has_parens: () => boolean; newline: () => void; print: (str: any) => void; space: () => void; comma: () => void; colon: () => void; ... 20 more ...; parent: (n: any) => any; }'. +node_modules/uglify-js/lib/compress.js(8215,36): error TS2532: Object is possibly 'undefined'. +node_modules/uglify-js/lib/compress.js(8220,41): error TS2339: Property 'get' does not exist on type 'string'. +node_modules/uglify-js/lib/compress.js(8347,38): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(8432,37): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(8506,39): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(8510,21): error TS2322: Type 'null' is not assignable to type 'any[]'. +node_modules/uglify-js/lib/compress.js(8521,25): error TS2322: Type 'null' is not assignable to type 'any[]'. +node_modules/uglify-js/lib/compress.js(8530,25): error TS2322: Type 'null' is not assignable to type 'any[]'. +node_modules/uglify-js/lib/compress.js(8546,32): error TS2532: Object is possibly 'undefined'. +node_modules/uglify-js/lib/compress.js(8550,27): error TS2532: Object is possibly 'undefined'. +node_modules/uglify-js/lib/compress.js(8834,38): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(9137,18): error TS2454: Variable 'is_strict_comparison' is used before being assigned. +node_modules/uglify-js/lib/compress.js(9638,38): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(9804,47): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(9894,39): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(9963,39): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(9969,41): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/compress.js(9972,41): error TS2339: Property 'parent' does not exist on type 'TreeWalker'. +node_modules/uglify-js/lib/compress.js(10587,26): error TS2358: The left-hand side of an 'instanceof' expression must be of type 'any', an object type or a type parameter. +node_modules/uglify-js/lib/compress.js(10587,67): error TS2532: Object is possibly 'undefined'. +node_modules/uglify-js/lib/compress.js(10622,43): error TS2454: Variable 'property' is used before being assigned. +node_modules/uglify-js/lib/compress.js(10643,25): error TS2403: Subsequent variable declarations must have the same type. Variable 'value' must be of type 'number', but here has type 'any'. +node_modules/uglify-js/lib/compress.js(10646,46): error TS2339: Property 'has_side_effects' does not exist on type 'number'. +node_modules/uglify-js/lib/compress.js(10651,25): error TS2403: Subsequent variable declarations must have the same type. Variable 'value' must be of type 'number', but here has type 'any'. +node_modules/uglify-js/lib/compress.js(10693,34): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/minify.js(197,57): error TS2339: Property 'compress' does not exist on type 'Compressor'. +node_modules/uglify-js/lib/mozilla-ast.js(573,33): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/output.js(459,37): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/output.js(460,33): error TS2339: Property 'parent' does not exist on type 'TreeWalker'. +node_modules/uglify-js/lib/output.js(475,16): error TS2339: Property 'push' does not exist on type 'TreeWalker'. +node_modules/uglify-js/lib/output.js(1222,44): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/output.js(1591,58): error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type. +node_modules/uglify-js/lib/parse.js(250,9): error TS2322: Type 'string | boolean' is not assignable to type 'boolean'. Type 'string' is not assignable to type 'boolean'. -node_modules/uglify-js/lib/parse.js(318,20): error TS2345: Argument of type 'number | undefined' is not assignable to parameter of type 'number'. +node_modules/uglify-js/lib/parse.js(316,19): error TS2345: Argument of type 'number | undefined' is not assignable to parameter of type 'number'. Type 'undefined' is not assignable to type 'number'. -node_modules/uglify-js/lib/parse.js(407,32): error TS2345: Argument of type 'any' is not assignable to parameter of type 'never'. -node_modules/uglify-js/lib/parse.js(418,32): error TS2345: Argument of type 'any' is not assignable to parameter of type 'never'. -node_modules/uglify-js/lib/parse.js(468,20): error TS2339: Property 'raw_source' does not exist on type 'RegExp'. -node_modules/uglify-js/lib/parse.js(576,57): error TS2339: Property 'push' does not exist on type 'never'. -node_modules/uglify-js/lib/parse.js(582,32): error TS2345: Argument of type 'never[]' is not assignable to parameter of type 'never'. -node_modules/uglify-js/lib/parse.js(675,13): error TS2531: Object is possibly 'null'. -node_modules/uglify-js/lib/parse.js(708,69): error TS2531: Object is possibly 'null'. -node_modules/uglify-js/lib/parse.js(708,83): error TS2531: Object is possibly 'null'. -node_modules/uglify-js/lib/parse.js(752,31): error TS2531: Object is possibly 'null'. -node_modules/uglify-js/lib/parse.js(758,17): error TS2531: Object is possibly 'null'. -node_modules/uglify-js/lib/parse.js(785,21): error TS2531: Object is possibly 'null'. -node_modules/uglify-js/lib/parse.js(804,21): error TS2531: Object is possibly 'null'. -node_modules/uglify-js/lib/parse.js(931,23): error TS2345: Argument of type 'any' is not assignable to parameter of type 'never'. -node_modules/uglify-js/lib/parse.js(1049,9): error TS2322: Type 'any[]' is not assignable to type 'never[]'. -node_modules/uglify-js/lib/parse.js(1108,17): error TS2454: Variable 'cur' is used before being assigned. -node_modules/uglify-js/lib/parse.js(1306,32): error TS2531: Object is possibly 'null'. -node_modules/uglify-js/lib/parse.js(1406,20): error TS2531: Object is possibly 'null'. -node_modules/uglify-js/lib/parse.js(1412,20): error TS2531: Object is possibly 'null'. -node_modules/uglify-js/lib/parse.js(1498,48): error TS2531: Object is possibly 'null'. -node_modules/uglify-js/lib/parse.js(1524,35): error TS2531: Object is possibly 'null'. -node_modules/uglify-js/lib/parse.js(1569,52): error TS2531: Object is possibly 'null'. +node_modules/uglify-js/lib/parse.js(406,32): error TS2345: Argument of type 'any' is not assignable to parameter of type 'never'. +node_modules/uglify-js/lib/parse.js(417,32): error TS2345: Argument of type 'any' is not assignable to parameter of type 'never'. +node_modules/uglify-js/lib/parse.js(467,20): error TS2339: Property 'raw_source' does not exist on type 'RegExp'. +node_modules/uglify-js/lib/parse.js(585,57): error TS2339: Property 'push' does not exist on type 'never'. +node_modules/uglify-js/lib/parse.js(591,32): error TS2345: Argument of type 'never[]' is not assignable to parameter of type 'never'. +node_modules/uglify-js/lib/parse.js(687,13): error TS2531: Object is possibly 'null'. +node_modules/uglify-js/lib/parse.js(720,69): error TS2531: Object is possibly 'null'. +node_modules/uglify-js/lib/parse.js(720,83): error TS2531: Object is possibly 'null'. +node_modules/uglify-js/lib/parse.js(764,31): error TS2531: Object is possibly 'null'. +node_modules/uglify-js/lib/parse.js(770,17): error TS2531: Object is possibly 'null'. +node_modules/uglify-js/lib/parse.js(793,21): error TS2531: Object is possibly 'null'. +node_modules/uglify-js/lib/parse.js(810,21): error TS2531: Object is possibly 'null'. +node_modules/uglify-js/lib/parse.js(829,21): error TS2531: Object is possibly 'null'. +node_modules/uglify-js/lib/parse.js(953,23): error TS2345: Argument of type 'any' is not assignable to parameter of type 'never'. +node_modules/uglify-js/lib/parse.js(1135,9): error TS2322: Type 'any[]' is not assignable to type 'never[]'. +node_modules/uglify-js/lib/parse.js(1180,26): error TS2339: Property 'rest' does not exist on type 'any[]'. +node_modules/uglify-js/lib/parse.js(1180,62): error TS2339: Property 'rest' does not exist on type 'any[]'. +node_modules/uglify-js/lib/parse.js(1185,9): error TS2322: Type 'any[]' is not assignable to type 'never[]'. +node_modules/uglify-js/lib/parse.js(1190,28): error TS2339: Property 'rest' does not exist on type 'any[]'. +node_modules/uglify-js/lib/parse.js(1246,17): error TS2454: Variable 'cur' is used before being assigned. +node_modules/uglify-js/lib/parse.js(1478,32): error TS2531: Object is possibly 'null'. +node_modules/uglify-js/lib/parse.js(1502,19): error TS2339: Property 'rest' does not exist on type 'any[]'. +node_modules/uglify-js/lib/parse.js(1503,23): error TS2339: Property 'rest' does not exist on type 'any[]'. +node_modules/uglify-js/lib/parse.js(1503,71): error TS2339: Property 'rest' does not exist on type 'any[]'. +node_modules/uglify-js/lib/parse.js(1649,20): error TS2531: Object is possibly 'null'. +node_modules/uglify-js/lib/parse.js(1692,32): error TS2339: Property 'rest' does not exist on type 'any[]'. +node_modules/uglify-js/lib/parse.js(1821,48): error TS2531: Object is possibly 'null'. +node_modules/uglify-js/lib/parse.js(1860,35): error TS2531: Object is possibly 'null'. +node_modules/uglify-js/lib/parse.js(1963,52): error TS2531: Object is possibly 'null'. +node_modules/uglify-js/lib/parse.js(1986,23): error TS2339: Property 'rest' does not exist on type 'any[]'. +node_modules/uglify-js/lib/parse.js(1994,44): error TS2339: Property 'rest' does not exist on type 'any[]'. node_modules/uglify-js/lib/propmangle.js(70,18): error TS2339: Property 'prototype' does not exist on type 'ObjectConstructor | FunctionConstructor | StringConstructor | BooleanConstructor | NumberConstructor | ... 4 more ... | ArrayConstructor'. Property 'prototype' does not exist on type 'Math'. node_modules/uglify-js/lib/propmangle.js(71,44): error TS2351: This expression is not constructable. @@ -202,34 +237,34 @@ node_modules/uglify-js/lib/propmangle.js(72,45): error TS2339: Property 'prototy Property 'prototype' does not exist on type 'Math'. node_modules/uglify-js/lib/propmangle.js(83,29): error TS2554: Expected 0 arguments, but got 1. node_modules/uglify-js/lib/propmangle.js(146,29): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/propmangle.js(179,29): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/scope.js(83,26): error TS2339: Property 'defun' does not exist on type 'SymbolDef'. -node_modules/uglify-js/lib/scope.js(114,29): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/scope.js(164,41): error TS2339: Property 'parent' does not exist on type 'TreeWalker'. -node_modules/uglify-js/lib/scope.js(203,10): error TS2339: Property 'walk' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/scope.js(207,29): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/scope.js(216,28): error TS2339: Property 'def_global' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/scope.js(221,33): error TS2339: Property 'parent' does not exist on type 'TreeWalker'. -node_modules/uglify-js/lib/scope.js(230,26): error TS2339: Property 'uses_eval' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/scope.js(253,10): error TS2339: Property 'walk' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/scope.js(256,27): error TS2339: Property 'walk' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/scope.js(256,47): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/scope.js(302,38): error TS2339: Property 'variables' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/scope.js(342,10): error TS2339: Property 'def_variable' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/scope.js(344,21): error TS2339: Property 'start' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/scope.js(345,19): error TS2339: Property 'end' does not exist on type '(Anonymous function)'. -node_modules/uglify-js/lib/scope.js(489,29): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/scope.js(506,49): error TS2339: Property 'has_directive' does not exist on type 'TreeWalker'. -node_modules/uglify-js/lib/scope.js(550,31): error TS2345: Argument of type 'string' is not assignable to parameter of type 'object | null'. -node_modules/uglify-js/lib/scope.js(553,30): error TS2554: Expected 0 arguments, but got 1. -node_modules/uglify-js/lib/scope.js(577,30): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/propmangle.js(176,29): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/scope.js(82,26): error TS2339: Property 'defun' does not exist on type 'SymbolDef'. +node_modules/uglify-js/lib/scope.js(115,29): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/scope.js(166,41): error TS2339: Property 'parent' does not exist on type 'TreeWalker'. +node_modules/uglify-js/lib/scope.js(205,10): error TS2339: Property 'walk' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/scope.js(210,29): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/scope.js(247,62): error TS2339: Property 'parent' does not exist on type 'TreeWalker'. +node_modules/uglify-js/lib/scope.js(269,28): error TS2339: Property 'def_global' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/scope.js(271,33): error TS2339: Property 'parent' does not exist on type 'TreeWalker'. +node_modules/uglify-js/lib/scope.js(283,33): error TS2339: Property 'parent' does not exist on type 'TreeWalker'. +node_modules/uglify-js/lib/scope.js(292,26): error TS2339: Property 'uses_eval' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/scope.js(300,10): error TS2339: Property 'walk' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/scope.js(303,27): error TS2339: Property 'walk' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/scope.js(303,47): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/scope.js(355,38): error TS2339: Property 'variables' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/scope.js(402,10): error TS2339: Property 'def_variable' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/scope.js(404,21): error TS2339: Property 'start' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/scope.js(405,19): error TS2339: Property 'end' does not exist on type '(Anonymous function)'. +node_modules/uglify-js/lib/scope.js(551,29): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/scope.js(583,49): error TS2339: Property 'has_directive' does not exist on type 'TreeWalker'. +node_modules/uglify-js/lib/scope.js(642,31): error TS2345: Argument of type 'string' is not assignable to parameter of type 'object | null'. +node_modules/uglify-js/lib/scope.js(645,30): error TS2554: Expected 0 arguments, but got 1. +node_modules/uglify-js/lib/scope.js(669,30): error TS2554: Expected 0 arguments, but got 1. node_modules/uglify-js/lib/sourcemap.js(82,11): error TS2339: Property 'index' does not exist on type 'any[]'. -node_modules/uglify-js/lib/sourcemap.js(178,31): error TS2339: Property 'index' does not exist on type 'any[]'. -node_modules/uglify-js/lib/sourcemap.js(186,34): error TS2339: Property 'index' does not exist on type 'any[]'. +node_modules/uglify-js/lib/sourcemap.js(180,31): error TS2339: Property 'index' does not exist on type 'any[]'. +node_modules/uglify-js/lib/sourcemap.js(188,34): error TS2339: Property 'index' does not exist on type 'any[]'. node_modules/uglify-js/lib/transform.js(47,21): error TS2345: Argument of type 'this' is not assignable to parameter of type 'TreeWalker'. Type 'TreeTransformer' is missing the following properties from type 'TreeWalker': currentNode, filter, root, whatToShow, and 10 more. -node_modules/uglify-js/tools/exit.js(10,37): error TS2345: Argument of type 'any[]' is not assignable to parameter of type '[code?: number | undefined]'. - Target allows only 1 element(s) but source may have more. node_modules/uglify-js/tools/exports.js(1,1): error TS2303: Circular definition of import alias '"Dictionary"'. node_modules/uglify-js/tools/exports.js(2,1): error TS2303: Circular definition of import alias '"List"'. node_modules/uglify-js/tools/exports.js(3,1): error TS2303: Circular definition of import alias '"minify"'. @@ -237,7 +272,11 @@ node_modules/uglify-js/tools/exports.js(4,1): error TS2303: Circular definition node_modules/uglify-js/tools/exports.js(5,1): error TS2303: Circular definition of import alias '"push_uniq"'. node_modules/uglify-js/tools/exports.js(6,1): error TS2303: Circular definition of import alias '"TreeTransformer"'. node_modules/uglify-js/tools/exports.js(7,1): error TS2303: Circular definition of import alias '"TreeWalker"'. -node_modules/uglify-js/tools/node.js(64,26): error TS2339: Property 'minify' does not exist on type 'typeof import("/uglify-js/node_modules/uglify-js/tools/node")'. +node_modules/uglify-js/tools/node.js(33,6): error TS2532: Object is possibly 'undefined'. +node_modules/uglify-js/tools/tty.js(4,20): error TS2339: Property '_handle' does not exist on type 'WriteStream & { fd: 1; }'. +node_modules/uglify-js/tools/tty.js(5,20): error TS2339: Property '_handle' does not exist on type 'WriteStream & { fd: 2; }'. +node_modules/uglify-js/tools/tty.js(16,41): error TS2345: Argument of type 'any[]' is not assignable to parameter of type '[code?: number | undefined]'. + Target allows only 1 element(s) but source may have more. diff --git a/tests/baselines/reference/user/webpack.log b/tests/baselines/reference/user/webpack.log deleted file mode 100644 index 25a502aaf4b72..0000000000000 --- a/tests/baselines/reference/user/webpack.log +++ /dev/null @@ -1,72 +0,0 @@ -Exit Code: 2 -Standard output: -lib/Compilation.js(37,7): error TS2440: Import declaration conflicts with local declaration of 'Module'. -lib/Compilation.js(49,7): error TS2440: Import declaration conflicts with local declaration of 'WebpackError'. -lib/Compilation.js(53,7): error TS2440: Import declaration conflicts with local declaration of 'StatsFactory'. -lib/Compilation.js(54,7): error TS2440: Import declaration conflicts with local declaration of 'StatsPrinter'. -lib/Compiler.js(156,4): error TS2322: Type 'AsyncParallelHook' is not assignable to type 'AsyncParallelHook<[Compilation], Module>'. -lib/Compiler.js(156,4): error TS2322: Type 'AsyncParallelHook' is not assignable to type 'AsyncParallelHook<[Compilation], Module>'. - Types of property 'intercept' are incompatible. - Type '(interceptor: HookInterceptor) => void' is not assignable to type '(interceptor: HookInterceptor<[Compilation], void, Module>) => void'. - Types of parameters 'interceptor' and 'interceptor' are incompatible. - Type 'HookInterceptor<[Compilation], void, Module>' is not assignable to type 'HookInterceptor'. - Property '_UnsetAdditionalOptions' is missing in type 'Module' but required in type 'UnsetAdditionalOptions'. -lib/Compiler.js(158,4): error TS2322: Type 'AsyncSeriesHook' is not assignable to type 'AsyncParallelHook<[Compilation], Module>'. -lib/Compiler.js(158,4): error TS2322: Type 'AsyncSeriesHook' is not assignable to type 'AsyncParallelHook<[Compilation], Module>'. - Types of property 'intercept' are incompatible. - Type '(interceptor: HookInterceptor) => void' is not assignable to type '(interceptor: HookInterceptor<[Compilation], void, Module>) => void'. - Types of parameters 'interceptor' and 'interceptor' are incompatible. - Type 'HookInterceptor<[Compilation], void, Module>' is not assignable to type 'HookInterceptor'. -lib/ExportsInfo.js(1092,28): error TS1016: A required parameter cannot follow an optional parameter. -lib/FlagDependencyUsagePlugin.js(8,7): error TS2440: Import declaration conflicts with local declaration of 'Dependency'. -lib/NormalModule.js(19,7): error TS2440: Import declaration conflicts with local declaration of 'Compilation'. -lib/RuntimeTemplate.js(8,7): error TS2440: Import declaration conflicts with local declaration of 'InitFragment'. -lib/Template.js(8,9): error TS2440: Import declaration conflicts with local declaration of 'ConcatSource'. -lib/Watching.js(8,7): error TS2440: Import declaration conflicts with local declaration of 'Stats'. -lib/WebpackOptionsApply.js(79,10): error TS2300: Duplicate identifier 'ElectronTargetPlugin'. -lib/WebpackOptionsApply.js(83,10): error TS2300: Duplicate identifier 'ElectronTargetPlugin'. -lib/WebpackOptionsApply.js(87,10): error TS2300: Duplicate identifier 'ElectronTargetPlugin'. -lib/WebpackOptionsApply.js(96,10): error TS2300: Duplicate identifier 'ElectronTargetPlugin'. -lib/WebpackOptionsApply.js(100,10): error TS2300: Duplicate identifier 'ExternalsPlugin'. -lib/WebpackOptionsApply.js(104,10): error TS2300: Duplicate identifier 'ExternalsPlugin'. -lib/WebpackOptionsApply.js(107,10): error TS2300: Duplicate identifier 'ExternalsPlugin'. -lib/WebpackOptionsApply.js(158,10): error TS2300: Duplicate identifier 'ExternalsPlugin'. -lib/WebpackOptionsApply.js(423,12): error TS2300: Duplicate identifier 'OccurrenceChunkIdsPlugin'. -lib/WebpackOptionsApply.js(430,12): error TS2300: Duplicate identifier 'OccurrenceChunkIdsPlugin'. -lib/WebpackOptionsApply.js(481,12): error TS2300: Duplicate identifier 'MemoryCachePlugin'. -lib/WebpackOptionsApply.js(491,12): error TS2300: Duplicate identifier 'MemoryCachePlugin'. -lib/cache/ResolverCachePlugin.js(8,7): error TS2440: Import declaration conflicts with local declaration of 'LazySet'. -lib/dependencies/CommonJsExportRequireDependency.js(8,7): error TS2440: Import declaration conflicts with local declaration of 'Dependency'. -lib/dependencies/HarmonyExportImportedSpecifierDependency.js(8,7): error TS2440: Import declaration conflicts with local declaration of 'Dependency'. -lib/dependencies/HarmonyImportDependency.js(9,7): error TS2440: Import declaration conflicts with local declaration of 'Dependency'. -lib/dependencies/HarmonyImportSpecifierDependency.js(8,7): error TS2440: Import declaration conflicts with local declaration of 'Dependency'. -lib/dependencies/ImportDependency.js(8,7): error TS2440: Import declaration conflicts with local declaration of 'Dependency'. -lib/dependencies/ModuleDecoratorDependency.js(8,7): error TS2440: Import declaration conflicts with local declaration of 'Dependency'. -lib/dependencies/NullDependency.js(8,7): error TS2440: Import declaration conflicts with local declaration of 'Dependency'. -lib/dependencies/RequireIncludeDependency.js(8,7): error TS2440: Import declaration conflicts with local declaration of 'Dependency'. -lib/dependencies/WorkerDependency.js(8,7): error TS2440: Import declaration conflicts with local declaration of 'Dependency'. -lib/javascript/EnableChunkLoadingPlugin.js(84,12): error TS2300: Duplicate identifier 'CommonJsChunkLoadingPlugin'. -lib/javascript/EnableChunkLoadingPlugin.js(91,12): error TS2300: Duplicate identifier 'CommonJsChunkLoadingPlugin'. -lib/library/EnableLibraryPlugin.js(79,12): error TS2300: Duplicate identifier 'AssignLibraryPlugin'. -lib/library/EnableLibraryPlugin.js(89,12): error TS2300: Duplicate identifier 'AssignLibraryPlugin'. -lib/library/EnableLibraryPlugin.js(99,12): error TS2300: Duplicate identifier 'AssignLibraryPlugin'. -lib/library/EnableLibraryPlugin.js(109,12): error TS2300: Duplicate identifier 'AssignLibraryPlugin'. -lib/library/EnableLibraryPlugin.js(119,12): error TS2300: Duplicate identifier 'AssignLibraryPlugin'. -lib/library/EnableLibraryPlugin.js(129,12): error TS2300: Duplicate identifier 'AssignLibraryPlugin'. -lib/library/EnableLibraryPlugin.js(139,12): error TS2300: Duplicate identifier 'AssignLibraryPlugin'. -lib/library/EnableLibraryPlugin.js(150,12): error TS2300: Duplicate identifier 'AssignLibraryPlugin'. -lib/optimize/SplitChunksPlugin.js(8,7): error TS2440: Import declaration conflicts with local declaration of 'Chunk'. -lib/runtime/LoadScriptRuntimeModule.js(8,7): error TS2440: Import declaration conflicts with local declaration of 'Compilation'. -lib/util/registerExternalSerializer.js(319,16): error TS2339: Property 'errors' does not exist on type 'typeof ValidationError'. -lib/util/registerExternalSerializer.js(320,16): error TS2339: Property 'schema' does not exist on type 'typeof ValidationError'. -lib/util/registerExternalSerializer.js(322,17): error TS2339: Property 'headerName' does not exist on type 'typeof ValidationError'. -lib/util/registerExternalSerializer.js(323,25): error TS2339: Property 'baseDataPath' does not exist on type 'typeof ValidationError'. -lib/util/registerExternalSerializer.js(324,26): error TS2339: Property 'postFormatter' does not exist on type 'typeof ValidationError'. -lib/util/registerExternalSerializer.js(333,4): error TS2739: Type 'ValidationError' is missing the following properties from type 'typeof ValidationError': prototype, captureStackTrace, stackTraceLimit -lib/wasm-async/AsyncWebAssemblyModulesPlugin.js(9,7): error TS2440: Import declaration conflicts with local declaration of 'Compilation'. -lib/webpack.js(10,7): error TS2440: Import declaration conflicts with local declaration of 'Compiler'. -lib/webpack.js(11,7): error TS2440: Import declaration conflicts with local declaration of 'MultiCompiler'. - - - -Standard error: diff --git a/tests/baselines/reference/voidReturnIndexUnionInference.types b/tests/baselines/reference/voidReturnIndexUnionInference.types index fa7d87b8f63af..149861164330b 100644 --- a/tests/baselines/reference/voidReturnIndexUnionInference.types +++ b/tests/baselines/reference/voidReturnIndexUnionInference.types @@ -51,7 +51,7 @@ function bad

(props: Readonly

) { // ERROR HERE!!! // Type R in signature of safeInvoke incorrectly inferred as {} instead of void! safeInvoke(props.onBar, "blah"); ->safeInvoke(props.onBar, "blah") : void | undefined +>safeInvoke(props.onBar, "blah") : void >safeInvoke : (func: ((arg1: A1) => R) | null | undefined, arg1: A1) => R | undefined >props.onBar : P["onBar"] | undefined >props : Readonly

diff --git a/tests/cases/compiler/computedTypesKeyofNoIndexSignatureType.ts b/tests/cases/compiler/computedTypesKeyofNoIndexSignatureType.ts new file mode 100644 index 0000000000000..fcb10067a5260 --- /dev/null +++ b/tests/cases/compiler/computedTypesKeyofNoIndexSignatureType.ts @@ -0,0 +1,20 @@ +type Compute = { [K in keyof A]: Compute; } & {}; + +type EqualsTest = () => A extends T ? 1 : 0; +type Equals = EqualsTest extends EqualsTest ? 1 : 0; + +type Filter = Equals extends 1 ? never : K; + +type OmitIndex = { + [K in keyof T as Filter]: T[K]; +}; + +type IndexObject = { [key: string]: unknown; }; +type FooBar = { foo: "hello"; bar: "world"; }; + +type WithIndex = Compute; // { [x: string]: {}; foo: "hello"; bar: "world"; } <-- OK +type WithoutIndex = OmitIndex; // { foo: "hello"; bar: "world"; } <-- OK + +type FooBarKey = keyof FooBar; // "foo" | "bar" <-- OK +type WithIndexKey = keyof WithIndex; // string | number <-- Expected: string +type WithoutIndexKey = keyof WithoutIndex; // number <-- Expected: "foo" | "bar" \ No newline at end of file diff --git a/tests/cases/compiler/conditionalAnyCheckTypePicksBothBranches.ts b/tests/cases/compiler/conditionalAnyCheckTypePicksBothBranches.ts new file mode 100644 index 0000000000000..46ecd232fa972 --- /dev/null +++ b/tests/cases/compiler/conditionalAnyCheckTypePicksBothBranches.ts @@ -0,0 +1,9 @@ +type T = any extends number ? 1 : 0; +let x: T; +x = 1; +x = 0; // not an error + +type U = [any] extends [number] ? 1 : 0; +let y: U; +y = 1; +y = 0; // error \ No newline at end of file diff --git a/tests/cases/compiler/conditionalEqualityTestingNullability.ts b/tests/cases/compiler/conditionalEqualityTestingNullability.ts new file mode 100644 index 0000000000000..bf06284b72a25 --- /dev/null +++ b/tests/cases/compiler/conditionalEqualityTestingNullability.ts @@ -0,0 +1,15 @@ +// @strict: true +export type Equals = + (() => A extends A1 ? 1 : 0) extends (() => A extends A2 ? 1 : 0) + ? 1 + : 0 + +interface Foo { + x : () => T +} + +declare const a: Foo; +declare const b: Foo; + +//Expected 0, Actual 1 +type ShouldBe0 = Equals; \ No newline at end of file diff --git a/tests/cases/compiler/constEnumNamespaceReferenceCausesNoImport.ts b/tests/cases/compiler/constEnumNamespaceReferenceCausesNoImport.ts index 3df68067ef5c9..f43f740ba9142 100644 --- a/tests/cases/compiler/constEnumNamespaceReferenceCausesNoImport.ts +++ b/tests/cases/compiler/constEnumNamespaceReferenceCausesNoImport.ts @@ -1,3 +1,5 @@ +// @isolatedModules: true, false + // @filename: foo.ts export const enum ConstFooEnum { Some, diff --git a/tests/cases/compiler/constEnumNamespaceReferenceCausesNoImport2.ts b/tests/cases/compiler/constEnumNamespaceReferenceCausesNoImport2.ts new file mode 100644 index 0000000000000..06abeafd1fbaa --- /dev/null +++ b/tests/cases/compiler/constEnumNamespaceReferenceCausesNoImport2.ts @@ -0,0 +1,24 @@ +// @preserveConstEnums: true +// @noTypesAndSymbols: true + +// @filename: foo.ts +export module ConstEnumOnlyModule { + export const enum ConstFooEnum { + Some, + Values, + Here + } +} + +// @filename: reexport.ts +import * as Foo from "./foo"; +export = Foo.ConstEnumOnlyModule; + +// @filename: index.ts +import Foo = require("./reexport"); +function check(x: Foo.ConstFooEnum): void { + switch (x) { + case Foo.ConstFooEnum.Some: + break; + } +} \ No newline at end of file diff --git a/tests/cases/compiler/declarationEmitCommonSourceDirectoryDoesNotContainAllFiles.ts b/tests/cases/compiler/declarationEmitCommonSourceDirectoryDoesNotContainAllFiles.ts new file mode 100644 index 0000000000000..17ccd6bdd7440 --- /dev/null +++ b/tests/cases/compiler/declarationEmitCommonSourceDirectoryDoesNotContainAllFiles.ts @@ -0,0 +1,18 @@ +// @declaration: true +// @emitDeclarationOnly: true +// @outFile: dist/index.d.ts +// @currentDirectory: /a +// @noImplicitReferences: true +// @filename: /b/index.ts +export * from "./src/" +// @filename: /b/src/index.ts +export class B {} +// @filename: /a/src/index.ts +import { B } from "b"; + +export default function () { + return new B(); +} +// @filename: /a/index.ts +export * from "./src/" +// @link: /b -> /a/node_modules/b \ No newline at end of file diff --git a/tests/cases/compiler/declarationEmitMixinPrivateProtected.ts b/tests/cases/compiler/declarationEmitMixinPrivateProtected.ts new file mode 100644 index 0000000000000..65a2fa0d25a71 --- /dev/null +++ b/tests/cases/compiler/declarationEmitMixinPrivateProtected.ts @@ -0,0 +1,34 @@ +// @declaration: true +// @filename: first.ts +declare function mix(mixin: TMix): TMix; + +const DisposableMixin = class { + protected _onDispose() { + this._assertIsStripped() + } + private _assertIsStripped() { + } +}; + +// No error, but definition is wrong. +export default mix(DisposableMixin); +export class Monitor extends mix(DisposableMixin) { + protected _onDispose() { + } +} + +// @filename: another.ts +declare function mix(mixin: TMix): TMix; + +const DisposableMixin = class { + protected _onDispose() { + this._assertIsStripped() + } + private _assertIsStripped() { + } +}; + +export default class extends mix(DisposableMixin) { + protected _onDispose() { + } +} \ No newline at end of file diff --git a/tests/cases/compiler/excessivelyLargeTupleSpread.ts b/tests/cases/compiler/excessivelyLargeTupleSpread.ts new file mode 100644 index 0000000000000..aef000d328353 --- /dev/null +++ b/tests/cases/compiler/excessivelyLargeTupleSpread.ts @@ -0,0 +1,38 @@ +// #41771 + +type BuildTuple = + T['length'] extends L ? T : BuildTuple; + +type A = BuildTuple<3> + +type T0 = [any]; +type T1 = [...T0, ...T0]; +type T2 = [...T1, ...T1]; +type T3 = [...T2, ...T2]; +type T4 = [...T3, ...T3]; +type T5 = [...T4, ...T4]; +type T6 = [...T5, ...T5]; +type T7 = [...T6, ...T6]; +type T8 = [...T7, ...T7]; +type T9 = [...T8, ...T8]; +type T10 = [...T9, ...T9]; +type T11 = [...T10, ...T10]; +type T12 = [...T11, ...T11]; +type T13 = [...T12, ...T12]; +type T14 = [...T13, ...T13]; // 2^14 > 10,000 + +const a0 = [0] as const; +const a1 = [...a0, ...a0] as const; +const a2 = [...a1, ...a1] as const; +const a3 = [...a2, ...a2] as const; +const a4 = [...a3, ...a3] as const; +const a5 = [...a4, ...a4] as const; +const a6 = [...a5, ...a5] as const; +const a7 = [...a6, ...a6] as const; +const a8 = [...a7, ...a7] as const; +const a9 = [...a8, ...a8] as const; +const a10 = [...a9, ...a9] as const; +const a11 = [...a10, ...a10] as const; +const a12 = [...a11, ...a11] as const; +const a13 = [...a12, ...a12] as const; +const a14 = [...a13, ...a13] as const; // 2^14 > 10,000 diff --git a/tests/cases/compiler/isolatedModulesImportConstEnum.ts b/tests/cases/compiler/isolatedModulesImportConstEnum.ts new file mode 100644 index 0000000000000..46768cb75a108 --- /dev/null +++ b/tests/cases/compiler/isolatedModulesImportConstEnum.ts @@ -0,0 +1,13 @@ +// @isolatedModules: true +// @module: commonjs + +// @filename: file1.ts + +import { Foo } from './file2'; +console.log(Foo.BAR); + +// @filename: file2.ts + +export const enum Foo { + BAR, +} diff --git a/tests/cases/compiler/isolatedModulesImportConstEnumTypeOnly.ts b/tests/cases/compiler/isolatedModulesImportConstEnumTypeOnly.ts new file mode 100644 index 0000000000000..85b89be6e7533 --- /dev/null +++ b/tests/cases/compiler/isolatedModulesImportConstEnumTypeOnly.ts @@ -0,0 +1,8 @@ +// @isolatedModules: true + +// @filename: enum.ts +export const enum Foo { Bar } + +// @filename: index.ts +import { Foo } from "./enum"; +function f(foo: Foo) { return; } diff --git a/tests/cases/compiler/isolatedModulesRequiresPreserveConstEnum.ts b/tests/cases/compiler/isolatedModulesRequiresPreserveConstEnum.ts new file mode 100644 index 0000000000000..34d601df00bf8 --- /dev/null +++ b/tests/cases/compiler/isolatedModulesRequiresPreserveConstEnum.ts @@ -0,0 +1,8 @@ +// @isolatedModules: true +// @preserveConstEnums: false +// @module: commonjs + +// @filename: file1.ts + +export {}; + diff --git a/tests/cases/compiler/jsxLibraryManagedAttributesUnusedGeneric.tsx b/tests/cases/compiler/jsxLibraryManagedAttributesUnusedGeneric.tsx new file mode 100644 index 0000000000000..6112a4151e3db --- /dev/null +++ b/tests/cases/compiler/jsxLibraryManagedAttributesUnusedGeneric.tsx @@ -0,0 +1,30 @@ +// @jsx: react +// @jsxFactory: jsx +// @ts-ignore +import React from 'react' + +declare const jsx: typeof React.createElement +namespace jsx { + export namespace JSX { + export interface Element {} + export interface ElementClass {} + export interface ElementAttributesProperty {} + export interface ElementChildrenAttribute {} + export interface IntrinsicAttributes {} + export interface IntrinsicClassAttributes {} + export type IntrinsicElements = { + div: { className: string } + } + // Works + // export type LibraryManagedAttributes = P & { css: string }; + + // Equivalent to above, but fails + export type WithCSSProp

= P & { css: string } + export type LibraryManagedAttributes = WithCSSProp

+ + } +} + +declare const Comp: (p: { className?: string }) => null + +; \ No newline at end of file diff --git a/tests/cases/compiler/moduleExportsUnaryExpression.ts b/tests/cases/compiler/moduleExportsUnaryExpression.ts new file mode 100644 index 0000000000000..519536795bc84 --- /dev/null +++ b/tests/cases/compiler/moduleExportsUnaryExpression.ts @@ -0,0 +1,16 @@ +// @module: commonjs +let x = 1; + +export function foo(y: number) { + if (y <= x++) return y <= x++; + if (y <= x--) return y <= x--; + if (y <= ++x) return y <= ++x; + if (y <= --x) return y <= --x; + + x++; + x--; + ++x; + --x; +} + +export { x }; diff --git a/tests/cases/compiler/narrowingAssignmentReadonlyRespectsAssertion.ts b/tests/cases/compiler/narrowingAssignmentReadonlyRespectsAssertion.ts new file mode 100644 index 0000000000000..adc138d60d466 --- /dev/null +++ b/tests/cases/compiler/narrowingAssignmentReadonlyRespectsAssertion.ts @@ -0,0 +1,39 @@ +// https://github.com/microsoft/TypeScript/issues/41984 + +interface TestCase { + readonly val1: T | ReadonlyArray; + readonly val2: ReadonlyArray; +} + +interface MultiCaseFixture { + cases: T[]; +} + +function subDataFunc(): TestCase[] { + return [ + { val1: "a", val2: ["a", "b", "c"] }, + { val1: 2, val2: [1, 2, 3] }, + { val1: ["a", "z"], val2: ["x", "y", "z"] }, + { val1: [5, 10], val2: [10, 100, 1000] }, + ]; +} + +function dataFunc(subFunc: () => T[]): MultiCaseFixture { + return { cases: subFunc() }; +} + +function testFunc() { + const fixture = dataFunc>(subDataFunc); + fixture.cases.forEach(({ val1, val2 }) => { + if (Array.isArray(val1)) { + // This should retain val1 as being an array + const reversedVal1 = val1.slice().reverse(); + console.log(reversedVal1); + } else { + console.log(val1); + } + console.log(val2); + }); +} + +testFunc(); diff --git a/tests/cases/compiler/nondistributiveConditionalTypeInfer.ts b/tests/cases/compiler/nondistributiveConditionalTypeInfer.ts new file mode 100644 index 0000000000000..01d70af644bd7 --- /dev/null +++ b/tests/cases/compiler/nondistributiveConditionalTypeInfer.ts @@ -0,0 +1,13 @@ +type _R = [T] extends [{ _R: (_: infer R) => void }] ? R : never; +type _E = [T] extends [{ _E: () => infer E }] ? E : never; +type _A = [T] extends [{ _A: () => infer A }] ? A : never; + +interface Sync { + _R: (_: R) => void; + _E: () => E; + _A: () => A; +} + +type R = _R>; +type E = _E>; +type A = _A>; \ No newline at end of file diff --git a/tests/cases/compiler/nonnullAssertionPropegatesContextualType.ts b/tests/cases/compiler/nonnullAssertionPropegatesContextualType.ts new file mode 100644 index 0000000000000..362b7d410a89b --- /dev/null +++ b/tests/cases/compiler/nonnullAssertionPropegatesContextualType.ts @@ -0,0 +1,2 @@ +// @strict: true +let rect2: SVGRectElement = document.querySelector('.svg-rectangle')!; // Error: Element \ No newline at end of file diff --git a/tests/cases/compiler/prettyFileWithErrorsAndTabs.ts b/tests/cases/compiler/prettyFileWithErrorsAndTabs.ts new file mode 100644 index 0000000000000..e2aacbf0af6cc --- /dev/null +++ b/tests/cases/compiler/prettyFileWithErrorsAndTabs.ts @@ -0,0 +1,8 @@ +// @pretty: true +function f() { + { + const x: string = 12; + const y: string = 12; + const z: string = 12; + } +} \ No newline at end of file diff --git a/tests/cases/compiler/recursiveConditionalEvaluationNonInfinite.ts b/tests/cases/compiler/recursiveConditionalEvaluationNonInfinite.ts new file mode 100644 index 0000000000000..e2630c584b518 --- /dev/null +++ b/tests/cases/compiler/recursiveConditionalEvaluationNonInfinite.ts @@ -0,0 +1,5 @@ +type Test = [T] extends [any[]] ? { array: Test } : { notArray: T }; +declare const x: Test; +const y: { array: { notArray: number } } = x; // Error +declare const a: Test; +const b: { notArray: number } = a; // Works \ No newline at end of file diff --git a/tests/cases/compiler/spellingSuggestionGlobal1.ts b/tests/cases/compiler/spellingSuggestionGlobal1.ts new file mode 100644 index 0000000000000..74e534da54dfe --- /dev/null +++ b/tests/cases/compiler/spellingSuggestionGlobal1.ts @@ -0,0 +1,3 @@ +export {} +declare global { const x: any } +global.x // should not suggest `global` (GH#42209) diff --git a/tests/cases/compiler/spellingSuggestionGlobal2.ts b/tests/cases/compiler/spellingSuggestionGlobal2.ts new file mode 100644 index 0000000000000..5914f9990b30a --- /dev/null +++ b/tests/cases/compiler/spellingSuggestionGlobal2.ts @@ -0,0 +1,4 @@ +export {} +declare global { const x: any } +const globals = { x: true } +global.x // should suggest `globals` (GH#42209) diff --git a/tests/cases/compiler/spellingSuggestionGlobal3.ts b/tests/cases/compiler/spellingSuggestionGlobal3.ts new file mode 100644 index 0000000000000..853290a8d0210 --- /dev/null +++ b/tests/cases/compiler/spellingSuggestionGlobal3.ts @@ -0,0 +1,2 @@ +const global = { x: true } +globals.x // should suggest `global` (GH#42209) diff --git a/tests/cases/compiler/spellingSuggestionGlobal4.ts b/tests/cases/compiler/spellingSuggestionGlobal4.ts new file mode 100644 index 0000000000000..a100ca4653b8a --- /dev/null +++ b/tests/cases/compiler/spellingSuggestionGlobal4.ts @@ -0,0 +1,3 @@ +export {} +declare global { var x: any } +global.x // should not suggest `global` (GH#42209) diff --git a/tests/cases/compiler/styledComponentsInstantiaionLimitNotReached.ts b/tests/cases/compiler/styledComponentsInstantiaionLimitNotReached.ts new file mode 100644 index 0000000000000..725f7b7221a4d --- /dev/null +++ b/tests/cases/compiler/styledComponentsInstantiaionLimitNotReached.ts @@ -0,0 +1,196 @@ +/// +import * as React from "react"; + +interface REACT_STATICS { + childContextTypes: true; + contextType: true; + contextTypes: true; + defaultProps: true; + displayName: true; + getDefaultProps: true; + getDerivedStateFromError: true; + getDerivedStateFromProps: true; + mixins: true; + propTypes: true; + type: true; +} + +interface KNOWN_STATICS { + name: true; + length: true; + prototype: true; + caller: true; + callee: true; + arguments: true; + arity: true; +} + +interface MEMO_STATICS { + '$$typeof': true; + compare: true; + defaultProps: true; + displayName: true; + propTypes: true; + type: true; +} + +interface FORWARD_REF_STATICS { + '$$typeof': true; + render: true; + defaultProps: true; + displayName: true; + propTypes: true; +} + + +type NonReactStatics< + S extends React.ComponentType, + C extends { + [key: string]: true + } = {} + > = { + [key in Exclude< + keyof S, + S extends React.MemoExoticComponent + ? keyof MEMO_STATICS | keyof C + : S extends React.ForwardRefExoticComponent + ? keyof FORWARD_REF_STATICS | keyof C + : keyof REACT_STATICS | keyof KNOWN_STATICS | keyof C + >]: S[key] + }; + +export type AnyStyledComponent = StyledComponent | StyledComponent; +export type StyledComponent< + C extends keyof JSX.IntrinsicElements | React.ComponentType, + T extends object, + O extends object = {}, + A extends keyof any = never + > = // the "string" allows this to be used as an object key + // I really want to avoid this if possible but it's the only way to use nesting with object styles... + string & + StyledComponentBase & + NonReactStatics ? C : never>; + +export type StyledComponentProps< + // The Component from whose props are derived + C extends string | React.ComponentType, + // The Theme from the current context + T extends object, + // The other props added by the template + O extends object, + // The props that are made optional by .attrs + A extends keyof any + > = + // Distribute O if O is a union type + O extends object + ? WithOptionalTheme< + Omit< + ReactDefaultizedProps< + C, + React.ComponentPropsWithRef< + C extends IntrinsicElementsKeys | React.ComponentType ? C : never + > + > & + O, + A + > & + Partial< + Pick< + React.ComponentPropsWithRef< + C extends IntrinsicElementsKeys | React.ComponentType ? C : never + > & + O, + A + > + >, + T + > & + WithChildrenIfReactComponentClass + : never; + +type Defaultize = P extends any + ? string extends keyof P + ? P + : Pick> & + Partial>> & + Partial>> + : never; + +type ReactDefaultizedProps = C extends { defaultProps: infer D } ? Defaultize : P; + +type WithChildrenIfReactComponentClass> = C extends React.ComponentClass< + any +> + ? { children?: React.ReactNode } + : {}; +export type IntrinsicElementsKeys = keyof JSX.IntrinsicElements; +type WithOptionalTheme

= Omit & { + theme?: T; +}; + +type ForwardRefExoticBase

= Pick, keyof React.ForwardRefExoticComponent>; + +type StyledComponentPropsWithAs< + C extends string | React.ComponentType, + T extends object, + O extends object, + A extends keyof any, + F extends string | React.ComponentType = C + > = StyledComponentProps & { as?: C; forwardedAs?: F }; + +export type StyledComponentInnerOtherProps = C extends StyledComponent< + any, + any, + infer O, + any +> + ? O + : C extends StyledComponent + ? O + : never; +export type StyledComponentInnerAttrs = C extends StyledComponent + ? A + : never; + +export interface StyledComponentBase< + C extends string | React.ComponentType, + T extends object, + O extends object = {}, + A extends keyof any = never + > extends ForwardRefExoticBase> { + // add our own fake call signature to implement the polymorphic 'as' prop + (props: StyledComponentProps & { as?: never; forwardedAs?: never }): React.ReactElement< + StyledComponentProps + >; + = C, FAsC extends string | React.ComponentType = AsC>( + props: StyledComponentPropsWithAs, + ): React.ReactElement>; + + withComponent( + component: WithC, + ): StyledComponent< + StyledComponentInnerComponent, + T, + O & StyledComponentInnerOtherProps, + A | StyledComponentInnerAttrs + >; + withComponent>( + component: WithC, + ): StyledComponent; +} + +export type StyledComponentInnerComponent> = C extends StyledComponent< + infer I, + any, + any, + any +> + ? I + : C extends StyledComponent + ? I + : C; +export type StyledComponentPropsWithRef< + C extends keyof JSX.IntrinsicElements | React.ComponentType + > = C extends AnyStyledComponent + ? React.ComponentPropsWithRef> // shouldn't have an instantiation limit error + : React.ComponentPropsWithRef; \ No newline at end of file diff --git a/tests/cases/compiler/unusedVariablesWithUnderscoreInBindingElement.ts b/tests/cases/compiler/unusedVariablesWithUnderscoreInBindingElement.ts new file mode 100644 index 0000000000000..23b732d51edb9 --- /dev/null +++ b/tests/cases/compiler/unusedVariablesWithUnderscoreInBindingElement.ts @@ -0,0 +1,90 @@ +// @noUnusedLocals: true + +function t1() { + const [_a1, b1] = [1, 2]; + console.log(b1); + + const [a2, _b2] = [1, 2]; + console.log(a2); + + const [_a3, _b3] = [1, 2]; +} + +function t2() { + const [_a1, b1] = [1, 2]; + const [a2, _b2] = [1, 2]; + const [a3, b3] = [1, 2]; +} + +function t3() { + const [_a1, [[_b1, c1]], d1, _e1] = [1, [[2, 3]], 4, 5]; + console.log(c1, d1); + + const [_a2, [[_b2, _c2]], _d2, _e2] = [1, [[2, 3]], 4, 5]; + + const [a3, [[b3, c3]], d3, e3] = [1, [[2, 3]], 4, 5]; +} + +function t4() { + const { a1: _a1, b1 } = { a1: 1, b1: 1 }; + console.log(b1); + + const { a2, b2: _b2 } = { a2: 1, b2: 1 }; + console.log(a2); + + const { a3: _a3, b3: _b3 } = { a3: 1, b3: 1 }; +} + +function t5() { + const { a1: _a1, b1 } = { a1: 1, b1: 1 }; + const { a2, b2: _b2 } = { a2: 1, b2: 1 }; + const { a3, b3 } = { a3: 1, b3: 1 }; +} + +function t6() { + const { + a1: _a1, + b1: { + b11: { + b111: _b111, + b112 + } + }, + c1, + d1: _d1 + } = { a1: 1, b1: { b11: { b111: 1, b112: 1 } }, c1: 1, d1: 1 }; + console.log(b112, c1); + + const { + a2: _a2, + b2: { + b21: { + b211: _b211, b212: _b212 + } + }, + c2: _c2, + d2: _d2 + } = { a2: 1, b2: { b21: { b211: 1, b212: 1 } }, c2: 1, d2: 1 }; + + const { + a3, + b3: { + b31: { + b311, b312 + } + }, + c3, + d3 + } = { a3: 1, b3: { b31: { b311: 1, b312: 1 } }, c3: 1, d3: 1 }; +} + +function t7() { + // error + const { _a1, _b1 } = { _a1: 1, _b1: 1 }; + + // ok + const { a2: _a2, b2: _b2 } = { a2: 1, b2: 1 }; + + // ok + const { _a3: _ignoreA3, _b3: _ignoreB3 } = { _a3: 1, _b3: 1 }; +} diff --git a/tests/cases/compiler/unusedVariablesWithUnderscoreInForOfLoop.ts b/tests/cases/compiler/unusedVariablesWithUnderscoreInForOfLoop.ts index 064e1971ead3d..0bd35321760d9 100644 --- a/tests/cases/compiler/unusedVariablesWithUnderscoreInForOfLoop.ts +++ b/tests/cases/compiler/unusedVariablesWithUnderscoreInForOfLoop.ts @@ -1,6 +1,6 @@ -//@noUnusedLocals:true +// @noUnusedLocals: true -function f() { +function t1() { for (const [_a, b] of [['key', 1]]) { console.log(b); } @@ -11,3 +11,20 @@ function f() { for (const [_a, _b] of [['key', 1]]) {} } + + +function t2() { + for (const [_a, b] of [['key', 1]]) {} + + for (const [a, _b] of [['key', 1]]) {} + + for (const [a, b] of [['key', 1]]) {} +} + +function t3() { + for (const [[[_a, b]]] of [[[['key', 1]]]]) {} + + for (const [[[a, _b]]] of [[[['key', 1]]]]) {} + + for (const [[[a, b]]] of [[[['key', 1]]]]) {} +} diff --git a/tests/cases/compiler/unusedVariablesWithUnderscoreInForOfLoop1.ts b/tests/cases/compiler/unusedVariablesWithUnderscoreInForOfLoop1.ts deleted file mode 100644 index 0848f20d34a1d..0000000000000 --- a/tests/cases/compiler/unusedVariablesWithUnderscoreInForOfLoop1.ts +++ /dev/null @@ -1,9 +0,0 @@ -//@noUnusedLocals:true - -function f() { - for (const [_a, b] of [['key', 1]]) {} - - for (const [a, _b] of [['key', 1]]) {} - - for (const [a, b] of [['key', 1]]) {} -} diff --git a/tests/cases/conformance/classes/members/privateNames/privateNameFieldCallExpression.ts b/tests/cases/conformance/classes/members/privateNames/privateNameFieldCallExpression.ts index 996c01c8ef8a7..407a59185403e 100644 --- a/tests/cases/conformance/classes/members/privateNames/privateNameFieldCallExpression.ts +++ b/tests/cases/conformance/classes/members/privateNames/privateNameFieldCallExpression.ts @@ -6,6 +6,7 @@ class A { x = 1; test() { this.#fieldFunc(); + this.#fieldFunc?.(); const func = this.#fieldFunc; func(); new this.#fieldFunc(); diff --git a/tests/cases/conformance/controlFlow/controlFlowIfStatement.ts b/tests/cases/conformance/controlFlow/controlFlowIfStatement.ts index bd2e606d13faa..93a18b4f141fa 100644 --- a/tests/cases/conformance/controlFlow/controlFlowIfStatement.ts +++ b/tests/cases/conformance/controlFlow/controlFlowIfStatement.ts @@ -52,3 +52,12 @@ function d(data: string | T): never { return data; } } + +interface I { + p: T; +} +function e(x: I<"A" | "B">) { + if (x.p === "A") { + let a: "A" = (null as unknown as typeof x.p) + } +} diff --git a/tests/cases/conformance/controlFlow/controlFlowOptionalChain2.ts b/tests/cases/conformance/controlFlow/controlFlowOptionalChain2.ts new file mode 100644 index 0000000000000..b3dc7a14561a6 --- /dev/null +++ b/tests/cases/conformance/controlFlow/controlFlowOptionalChain2.ts @@ -0,0 +1,106 @@ +// @strictNullChecks: true + +type A = { + type: 'A'; + name: string; +} + +type B = { + type: 'B'; +} + +function funcTwo(arg: A | B | undefined) { + if (arg?.type === 'B') { + arg; // `B` + return; + } + + arg; + arg?.name; +} + +function funcThree(arg: A | B | null) { + if (arg?.type === 'B') { + arg; // `B` + return; + } + + arg; + arg?.name; +} + +type U = { kind: undefined, u: 'u' } +type N = { kind: null, n: 'n' } +type X = { kind: 'X', x: 'x' } + +function f1(x: X | U | undefined) { + if (x?.kind === undefined) { + x; // U | undefined + } + else { + x; // X + } +} + +function f2(x: X | N | undefined) { + if (x?.kind === undefined) { + x; // undefined + } + else { + x; // X | N + } +} + +function f3(x: X | U | null) { + if (x?.kind === undefined) { + x; // U | null + } + else { + x; // X + } +} + +function f4(x: X | N | null) { + if (x?.kind === undefined) { + x; // null + } + else { + x; // X | N + } +} + +function f5(x: X | U | undefined) { + if (x?.kind === null) { + x; // never + } + else { + x; // X | U | undefined + } +} + +function f6(x: X | N | undefined) { + if (x?.kind === null) { + x; // N + } + else { + x; // X | undefined + } +} + +function f7(x: X | U | null) { + if (x?.kind === null) { + x; // never + } + else { + x; // X | U | null + } +} + +function f8(x: X | N | null) { + if (x?.kind === null) { + x; // N + } + else { + x; // X | null + } +} diff --git a/tests/cases/conformance/expressions/optionalChaining/callChain/callChainInference.ts b/tests/cases/conformance/expressions/optionalChaining/callChain/callChainInference.ts new file mode 100644 index 0000000000000..52799c1f6200c --- /dev/null +++ b/tests/cases/conformance/expressions/optionalChaining/callChain/callChainInference.ts @@ -0,0 +1,17 @@ +// @strict: true + +// Repro from #42404 + +interface Y { + foo(this: T, arg: keyof T): void; + a: number; + b: string; +} + +declare const value: Y | undefined; + +if (value) { + value?.foo("a"); +} + +value?.foo("a"); diff --git a/tests/cases/conformance/expressions/typeGuards/typeGuardsWithInstanceOf.ts b/tests/cases/conformance/expressions/typeGuards/typeGuardsWithInstanceOf.ts index ec647d9bb7c9a..a1fee0303f231 100644 --- a/tests/cases/conformance/expressions/typeGuards/typeGuardsWithInstanceOf.ts +++ b/tests/cases/conformance/expressions/typeGuards/typeGuardsWithInstanceOf.ts @@ -30,6 +30,11 @@ function foo() { v // Validator & Partial & C } v // Validator & Partial via subtype reduction + + // In 4.1, we introduced a change which _fixed_ a bug with CFA + // correctly setting this to be the right object. With 4.2, + // we reverted that fix in #42231 which brought behavior back to + // before 4.1. if (v.onChanges) { v.onChanges({}); } diff --git a/tests/cases/conformance/externalModules/topLevelAwait.1.ts b/tests/cases/conformance/externalModules/topLevelAwait.1.ts index afa8d4d1a2b43..9574a49d9ef45 100644 --- a/tests/cases/conformance/externalModules/topLevelAwait.1.ts +++ b/tests/cases/conformance/externalModules/topLevelAwait.1.ts @@ -72,4 +72,11 @@ await const _await = 1; // await allowed in aliased export -export { _await as await }; \ No newline at end of file +export { _await as await }; + +// for-await-of +const arr = [Promise.resolve()]; + +for await (const item of arr) { + item; +} diff --git a/tests/cases/conformance/externalModules/topLevelAwaitNonModule.ts b/tests/cases/conformance/externalModules/topLevelAwaitNonModule.ts index 5a98c9423a1a0..8855a53ad8ecc 100644 --- a/tests/cases/conformance/externalModules/topLevelAwaitNonModule.ts +++ b/tests/cases/conformance/externalModules/topLevelAwaitNonModule.ts @@ -1,3 +1,9 @@ // @target: esnext // @module: esnext await x; + +const arr = [Promise.resolve()]; + +for await (const item of arr) { + item; +} diff --git a/tests/cases/conformance/jsdoc/declarations/jsDeclarationsParameterTagReusesInputNodeInEmit1.ts b/tests/cases/conformance/jsdoc/declarations/jsDeclarationsParameterTagReusesInputNodeInEmit1.ts index 6fe01d7b515b3..28a293ee63191 100644 --- a/tests/cases/conformance/jsdoc/declarations/jsDeclarationsParameterTagReusesInputNodeInEmit1.ts +++ b/tests/cases/conformance/jsdoc/declarations/jsDeclarationsParameterTagReusesInputNodeInEmit1.ts @@ -18,6 +18,12 @@ module.exports = BaseFactory; // @filename: file.js /** @typedef {import('./base')} BaseFactory */ +/** + * @callback BaseFactoryFactory + * @param {import('./base')} factory + */ +/** @enum {import('./base')} */ +const couldntThinkOfAny = {} /** * diff --git a/tests/cases/docker/prettier/Dockerfile b/tests/cases/docker/prettier/Dockerfile new file mode 100644 index 0000000000000..750e5ba3b2aa2 --- /dev/null +++ b/tests/cases/docker/prettier/Dockerfile @@ -0,0 +1,13 @@ +FROM node:current +RUN npm i -g yarn --force +RUN git clone https://github.com/prettier/prettier.git /prettier +WORKDIR /prettier +RUN git pull +COPY --from=typescript/typescript /typescript/typescript-*.tgz /typescript.tgz +RUN mkdir /typescript +RUN tar -xzvf /typescript.tgz -C /typescript +RUN yarn add typescript@/typescript.tgz +RUN yarn +ENTRYPOINT [ "yarn" ] +# Build +CMD [ "build" ] \ No newline at end of file diff --git a/tests/cases/docker/vscode/Dockerfile b/tests/cases/docker/vscode/Dockerfile index da285512031f6..a9f810711b40e 100644 --- a/tests/cases/docker/vscode/Dockerfile +++ b/tests/cases/docker/vscode/Dockerfile @@ -10,6 +10,7 @@ COPY --from=typescript/typescript /typescript/typescript-*.tgz /typescript.tgz WORKDIR /vscode/build RUN yarn add typescript@/typescript.tgz WORKDIR /vscode/extensions +RUN yarn add rimraf RUN yarn add typescript@/typescript.tgz WORKDIR /vscode RUN yarn add typescript@/typescript.tgz diff --git a/tests/cases/docker/xterm.js/Dockerfile b/tests/cases/docker/xterm.js/Dockerfile index 179459d280e10..169d49893ba7e 100644 --- a/tests/cases/docker/xterm.js/Dockerfile +++ b/tests/cases/docker/xterm.js/Dockerfile @@ -1,5 +1,5 @@ -# node-pty doesn't build on node 12 right now, so we lock to 8 - the version xterm itself tests against :( -FROM node:8 +# node-pty doesn't build on node 12 right now, so we lock to 10 +FROM node:10 RUN git clone https://github.com/xtermjs/xterm.js.git /xtermjs WORKDIR /xtermjs RUN git pull diff --git a/tests/cases/fourslash/autoImportPnpm.ts b/tests/cases/fourslash/autoImportPnpm.ts new file mode 100644 index 0000000000000..91d52ab798406 --- /dev/null +++ b/tests/cases/fourslash/autoImportPnpm.ts @@ -0,0 +1,24 @@ +/// + +// @Filename: /tsconfig.json +//// { "compilerOptions": { "module": "commonjs" } } + +// @Filename: /node_modules/.pnpm/mobx@6.0.4/node_modules/mobx/package.json +//// { "types": "dist/mobx.d.ts" } + +// @Filename: /node_modules/.pnpm/mobx@6.0.4/node_modules/mobx/dist/mobx.d.ts +//// export declare function autorun(): void; + +// @Filename: /index.ts +//// autorun/**/ + +// @Filename: /utils.ts +//// import "mobx"; + +// @link: /node_modules/.pnpm/mobx@6.0.4/node_modules/mobx -> /node_modules/mobx +// @link: /node_modules/.pnpm/mobx@6.0.4/node_modules/mobx -> /node_modules/.pnpm/cool-mobx-dependent@1.2.3/node_modules/mobx + +goTo.marker(""); +verify.importFixAtPosition([`import { autorun } from "mobx"; + +autorun`]); diff --git a/tests/cases/fourslash/autoImportSymlinkCaseSensitive.ts b/tests/cases/fourslash/autoImportSymlinkCaseSensitive.ts new file mode 100644 index 0000000000000..1ae2db666502e --- /dev/null +++ b/tests/cases/fourslash/autoImportSymlinkCaseSensitive.ts @@ -0,0 +1,21 @@ +/// + +// @Filename: /tsconfig.json +//// { "compilerOptions": { "module": "commonjs" } } + +// @Filename: /node_modules/.pnpm/mobx@6.0.4/node_modules/MobX/Foo.d.ts +//// export declare function autorun(): void; + +// @Filename: /index.ts +//// autorun/**/ + +// @Filename: /utils.ts +//// import "MobX/Foo"; + +// @link: /node_modules/.pnpm/mobx@6.0.4/node_modules/MobX -> /node_modules/MobX +// @link: /node_modules/.pnpm/mobx@6.0.4/node_modules/MobX -> /node_modules/.pnpm/cool-mobx-dependent@1.2.3/node_modules/MobX + +goTo.marker(""); +verify.importFixAtPosition([`import { autorun } from "MobX/Foo"; + +autorun`]); diff --git a/tests/cases/fourslash/codeFixTopLevelForAwait_module_blankCompilerOptionsInTsConfig.ts b/tests/cases/fourslash/codeFixTopLevelForAwait_module_blankCompilerOptionsInTsConfig.ts new file mode 100644 index 0000000000000..17eb61b4c00a7 --- /dev/null +++ b/tests/cases/fourslash/codeFixTopLevelForAwait_module_blankCompilerOptionsInTsConfig.ts @@ -0,0 +1,14 @@ +/// +// @filename: /dir/a.ts +////declare const p: number[]; +////for await (const _ of p); +////export {}; +// @filename: /dir/tsconfig.json +////{ +//// "compilerOptions": { +//// } +////} + + +// Cannot fix module when default module option is `commonjs`... +verify.not.codeFixAvailable("fixModuleOption"); diff --git a/tests/cases/fourslash/codeFixTopLevelForAwait_module_compatibleCompilerOptionsInTsConfig.ts b/tests/cases/fourslash/codeFixTopLevelForAwait_module_compatibleCompilerOptionsInTsConfig.ts new file mode 100644 index 0000000000000..71948be087aa6 --- /dev/null +++ b/tests/cases/fourslash/codeFixTopLevelForAwait_module_compatibleCompilerOptionsInTsConfig.ts @@ -0,0 +1,15 @@ +/// +// @filename: /dir/a.ts +////declare const p: number[]; +////for await (const _ of p); +////export {}; +// @filename: /dir/tsconfig.json +////{ +//// "compilerOptions": { +//// "target": "es2017", +//// "module": "esnext" +//// } +////} + + +verify.not.codeFixAvailable("fixModuleOption"); diff --git a/tests/cases/fourslash/codeFixTopLevelForAwait_module_existingCompilerOptionsInTsConfig.ts b/tests/cases/fourslash/codeFixTopLevelForAwait_module_existingCompilerOptionsInTsConfig.ts new file mode 100644 index 0000000000000..4f3842b6a485d --- /dev/null +++ b/tests/cases/fourslash/codeFixTopLevelForAwait_module_existingCompilerOptionsInTsConfig.ts @@ -0,0 +1,25 @@ +/// +// @filename: /dir/a.ts +////declare const p: number[]; +////for await (const _ of p); +////export {}; +// @filename: /dir/tsconfig.json +////{ +//// "compilerOptions": { +//// "module": "es2015" +//// } +////} + + +verify.codeFix({ + description: [ts.Diagnostics.Set_the_module_option_in_your_configuration_file_to_0.message, "esnext"], + index: 0, + newFileContent: { + "/dir/tsconfig.json": +`{ + "compilerOptions": { + "module": "esnext" + } +}` + } +}); diff --git a/tests/cases/fourslash/codeFixTopLevelForAwait_module_missingCompilerOptionsInTsConfig.ts b/tests/cases/fourslash/codeFixTopLevelForAwait_module_missingCompilerOptionsInTsConfig.ts new file mode 100644 index 0000000000000..2f0648ab82a5c --- /dev/null +++ b/tests/cases/fourslash/codeFixTopLevelForAwait_module_missingCompilerOptionsInTsConfig.ts @@ -0,0 +1,11 @@ +/// +// @filename: /dir/a.ts +////declare const p: number[]; +////for await (const _ of p); +////export {}; +// @filename: /dir/tsconfig.json +////{ +////} + +// cannot fix module when default options are applied +verify.not.codeFixAvailable("fixModuleOption"); diff --git a/tests/cases/fourslash/codeFixTopLevelForAwait_module_noTsConfig.ts b/tests/cases/fourslash/codeFixTopLevelForAwait_module_noTsConfig.ts new file mode 100644 index 0000000000000..e1de299e0d4b0 --- /dev/null +++ b/tests/cases/fourslash/codeFixTopLevelForAwait_module_noTsConfig.ts @@ -0,0 +1,8 @@ +/// +// @filename: /dir/a.ts +////declare const p: number[]; +////for await (const _ of p); +////export {}; + + +verify.not.codeFixAvailable("fixModuleOption"); diff --git a/tests/cases/fourslash/codeFixTopLevelForAwait_module_targetES2017CompilerOptionsInTsConfig.ts b/tests/cases/fourslash/codeFixTopLevelForAwait_module_targetES2017CompilerOptionsInTsConfig.ts new file mode 100644 index 0000000000000..b3f1f62ad5063 --- /dev/null +++ b/tests/cases/fourslash/codeFixTopLevelForAwait_module_targetES2017CompilerOptionsInTsConfig.ts @@ -0,0 +1,14 @@ +/// +// @filename: /dir/a.ts +////declare const p: number[]; +////for await (const _ of p); +////export {}; +// @filename: /dir/tsconfig.json +////{ +//// "compilerOptions": { +//// "target": "es2017" +//// } +////} + +verify.not.codeFixAvailable("fixTargetOption"); +verify.codeFixAvailable("fixModuleOption"); diff --git a/tests/cases/fourslash/codeFixTopLevelForAwait_notAModule.ts b/tests/cases/fourslash/codeFixTopLevelForAwait_notAModule.ts new file mode 100644 index 0000000000000..07d51dbd51eaa --- /dev/null +++ b/tests/cases/fourslash/codeFixTopLevelForAwait_notAModule.ts @@ -0,0 +1,22 @@ +/// +// @filename: /dir/a.ts +////declare const p: number[]; +////for await (const _ of p); +// @filename: /dir/tsconfig.json +////{ +//// "compilerOptions": { +//// "target": "esnext", +//// "module": "esnext" +//// } +////} + +verify.codeFix({ + description: ts.Diagnostics.Add_export_to_make_this_file_into_a_module.message, + index: 0, + newFileContent: + `declare const p: number[]; +for await (const _ of p); + +export { }; +` +}); diff --git a/tests/cases/fourslash/codeFixTopLevelForAwait_target_blankCompilerOptionsInTsConfig.ts b/tests/cases/fourslash/codeFixTopLevelForAwait_target_blankCompilerOptionsInTsConfig.ts new file mode 100644 index 0000000000000..1e856cc5f24e0 --- /dev/null +++ b/tests/cases/fourslash/codeFixTopLevelForAwait_target_blankCompilerOptionsInTsConfig.ts @@ -0,0 +1,25 @@ +/// +// @filename: /dir/a.ts +////declare const p: number[]; +////for await (const _ of p); +////export {}; +// @filename: /dir/tsconfig.json +////{ +//// "compilerOptions": { +//// } +////} + + +verify.codeFix({ + description: [ts.Diagnostics.Set_the_target_option_in_your_configuration_file_to_0.message, "es2017"], + index: 0, + newFileContent: { + "/dir/tsconfig.json": +`{ + "compilerOptions": { + "target": "es2017", + "module": "commonjs" + } +}` + } +}); diff --git a/tests/cases/fourslash/codeFixTopLevelForAwait_target_compatibleCompilerOptionsInTsConfig.ts b/tests/cases/fourslash/codeFixTopLevelForAwait_target_compatibleCompilerOptionsInTsConfig.ts new file mode 100644 index 0000000000000..6e9c38224eb40 --- /dev/null +++ b/tests/cases/fourslash/codeFixTopLevelForAwait_target_compatibleCompilerOptionsInTsConfig.ts @@ -0,0 +1,15 @@ +/// +// @filename: /dir/a.ts +////declare const p: number[]; +////for await (const _ of p); +////export {}; +// @filename: /dir/tsconfig.json +////{ +//// "compilerOptions": { +//// "target": "es2017", +//// "module": "esnext" +//// } +////} + + +verify.not.codeFixAvailable(); diff --git a/tests/cases/fourslash/codeFixTopLevelForAwait_target_existingCompilerOptionsInTsConfig.ts b/tests/cases/fourslash/codeFixTopLevelForAwait_target_existingCompilerOptionsInTsConfig.ts new file mode 100644 index 0000000000000..77ff949e37ff0 --- /dev/null +++ b/tests/cases/fourslash/codeFixTopLevelForAwait_target_existingCompilerOptionsInTsConfig.ts @@ -0,0 +1,25 @@ +/// +// @filename: /dir/a.ts +////declare const p: number[]; +////for await (const _ of p); +////export {}; +// @filename: /dir/tsconfig.json +////{ +//// "compilerOptions": { +//// "target": "es2015" +//// } +////} + + +verify.codeFix({ + description: [ts.Diagnostics.Set_the_target_option_in_your_configuration_file_to_0.message, "es2017"], + index: 1, + newFileContent: { + "/dir/tsconfig.json": +`{ + "compilerOptions": { + "target": "es2017" + } +}` + } +}); diff --git a/tests/cases/fourslash/codeFixTopLevelForAwait_target_missingCompilerOptionsInTsConfig.ts b/tests/cases/fourslash/codeFixTopLevelForAwait_target_missingCompilerOptionsInTsConfig.ts new file mode 100644 index 0000000000000..de2812e2dfe2d --- /dev/null +++ b/tests/cases/fourslash/codeFixTopLevelForAwait_target_missingCompilerOptionsInTsConfig.ts @@ -0,0 +1,23 @@ +/// +// @filename: /dir/a.ts +////declare const p: number[]; +////for await (const _ of p); +////export {}; +// @filename: /dir/tsconfig.json +////{ +////} + + +verify.codeFix({ + description: [ts.Diagnostics.Set_the_target_option_in_your_configuration_file_to_0.message, "es2017"], + index: 0, + newFileContent: { + "/dir/tsconfig.json": +`{ + "compilerOptions": { + "target": "es2017", + "module": "commonjs" + } +}` + } +}); diff --git a/tests/cases/fourslash/codeFixTopLevelForAwait_target_noTsConfig.ts b/tests/cases/fourslash/codeFixTopLevelForAwait_target_noTsConfig.ts new file mode 100644 index 0000000000000..8ae318b8d5627 --- /dev/null +++ b/tests/cases/fourslash/codeFixTopLevelForAwait_target_noTsConfig.ts @@ -0,0 +1,8 @@ +/// +// @filename: /dir/a.ts +////declare const p: number[]; +////for await (const _ of p); +////export {}; + + +verify.not.codeFixAvailable(); diff --git a/tests/cases/fourslash/commentsClassMembers.ts b/tests/cases/fourslash/commentsClassMembers.ts index 1e17f0327fe7e..3cc9b27172958 100644 --- a/tests/cases/fourslash/commentsClassMembers.ts +++ b/tests/cases/fourslash/commentsClassMembers.ts @@ -201,7 +201,8 @@ verify.completions( ], }, { marker: ["29", "33", "38", "109"], includes: locals }, - { marker: ["35", "40", "87"], includes: locals, isNewIdentifierLocation: true }, + { marker: ["35", "40"], includes: locals, isNewIdentifierLocation: true }, + { marker: ["87"], includes: locals.filter(local => local === 'i1_s_p') , isNewIdentifierLocation: true }, { marker: "31", includes: { name: "b", text: "(parameter) b: number", documentation: "number to add" } }, { marker: "42", includes: { name: "value", text: "(parameter) value: number", documentation: "this is value" }, isNewIdentifierLocation: true }, { marker: ["45", "52", "59"], includes: { name: "b", text: "(parameter) b: number" } }, diff --git a/tests/cases/fourslash/commentsLinePreservation.ts b/tests/cases/fourslash/commentsLinePreservation.ts index 3bf2165014ec9..47a796ac2520d 100644 --- a/tests/cases/fourslash/commentsLinePreservation.ts +++ b/tests/cases/fourslash/commentsLinePreservation.ts @@ -129,16 +129,16 @@ verify.quickInfos({ 3: ["(parameter) param1: string", "first line of param\n\nparam information third line"], g: ["function g(param1: string): void", "This is firstLine\nThis is second Line"], - 4: ["(parameter) param1: string", "param information first line"], + 4: ["(parameter) param1: string", " param information first line"], h: ["function h(param1: string): void", "This is firstLine\nThis is second Line"], - 5: ["(parameter) param1: string", "param information first line\n\nparam information third line"], + 5: ["(parameter) param1: string", " param information first line\n\n param information third line"], i: ["function i(param1: string): void", "This is firstLine\nThis is second Line"], - 6: ["(parameter) param1: string", "param information first line\n\nparam information third line"], + 6: ["(parameter) param1: string", " param information first line\n\n param information third line"], j: ["function j(param1: string): void", "This is firstLine\nThis is second Line"], - 7: ["(parameter) param1: string", "param information first line\n\nparam information third line"], + 7: ["(parameter) param1: string", " param information first line\n\n param information third line"], k: ["function k(param1: string): void", "This is firstLine\nThis is second Line"], 8: ["(parameter) param1: string", "hello"], diff --git a/tests/cases/fourslash/completionForStringLiteral_quotePreference8.ts b/tests/cases/fourslash/completionForStringLiteral_quotePreference8.ts new file mode 100644 index 0000000000000..9e66dcb1fe953 --- /dev/null +++ b/tests/cases/fourslash/completionForStringLiteral_quotePreference8.ts @@ -0,0 +1,22 @@ +/// + +// @filename: /a.ts +////export const a = null; + +// @filename: /b.ts +////import { a } from './a'; +//// +////const foo = { '"a name\'s all good but it\'s better with more"': null }; +////foo[|./**/|] + +goTo.file("/b.ts"); +verify.completions({ + marker: "", + exact: [ + { name: "\"a name's all good but it's better with more\"", insertText: "['\"a name\\'s all good but it\\'s better with more\"']", replacementSpan: test.ranges()[0] }, + ], + preferences: { + includeInsertTextCompletions: true, + quotePreference: "auto" + } +}); diff --git a/tests/cases/fourslash/completionListBuilderLocations_VariableDeclarations.ts b/tests/cases/fourslash/completionListBuilderLocations_VariableDeclarations.ts index af119f40be57f..eaad02afcc52f 100644 --- a/tests/cases/fourslash/completionListBuilderLocations_VariableDeclarations.ts +++ b/tests/cases/fourslash/completionListBuilderLocations_VariableDeclarations.ts @@ -26,8 +26,15 @@ ////var y = 10; y=/*var12*/ +// first declaration verify.completions({ - marker: test.markers(), + marker: ["var1"], + exact: completion.globalsPlus(["y", "C"]), + isNewIdentifierLocation: true +}); + +verify.completions({ + marker: ["var2", "var3", "var4", "var5", "var6", "var7", "var8", "var9", "var10", "var11", "var12"], exact: completion.globalsPlus(["x", "y", "C"]), isNewIdentifierLocation: true }); diff --git a/tests/cases/fourslash/completionListInObjectLiteral5.ts b/tests/cases/fourslash/completionListInObjectLiteral5.ts new file mode 100644 index 0000000000000..2cbb1699cc79f --- /dev/null +++ b/tests/cases/fourslash/completionListInObjectLiteral5.ts @@ -0,0 +1,26 @@ +/// + +////const o = 'something' +////const obj = { +//// prop: o/*1*/, +//// pro() { +//// const obj1 = { +//// p:{ +//// s: { +//// h: { +//// hh: o/*2*/ +//// }, +//// someFun() { +//// o/*3*/ +//// } +//// } +//// } +//// } +//// }, +//// o/*4*/ +////} + +verify.completions({ marker: ["1"], excludes: ['obj'], includes: ['o'] }); +verify.completions({ marker: ["2"], excludes: ['obj1'], includes: ['o', 'obj'] }); +verify.completions({ marker: ["3"], includes: ['o', 'obj', 'obj1'] }); +verify.completions({ marker: ["4"], includes: ['o'], excludes: ['obj'], isNewIdentifierLocation: true }); \ No newline at end of file diff --git a/tests/cases/fourslash/completionListIsGlobalCompletion.ts b/tests/cases/fourslash/completionListIsGlobalCompletion.ts index 91cd1a0f9c7e5..7184e50499e00 100644 --- a/tests/cases/fourslash/completionListIsGlobalCompletion.ts +++ b/tests/cases/fourslash/completionListIsGlobalCompletion.ts @@ -41,12 +41,13 @@ verify.completions( { marker: ["1", "3", "6", "8", "12", "14"], exact: undefined, isGlobalCompletion: false }, { marker: "2", exact: ["a.ts", "file.ts"], isGlobalCompletion: false, isNewIdentifierLocation: true }, { marker: ["4", "19"], exact: [], isGlobalCompletion: false }, - { marker: ["5", "11", "18"], exact: globals, isGlobalCompletion: true }, + { marker: ["5", "11"], exact: globals, isGlobalCompletion: true }, + { marker: ["18"], exact: globals.filter(name => name !== 'user'), isGlobalCompletion: true }, { marker: "7", exact: completion.globalsInsideFunction(x), isGlobalCompletion: true }, { marker: "9", exact: ["x", "y"], isGlobalCompletion: false }, { marker: "10", exact: completion.classElementKeywords, isGlobalCompletion: false, isNewIdentifierLocation: true }, - { marker: "13", exact: globals, isGlobalCompletion: false }, - { marker: "15", exact: globals, isGlobalCompletion: true, isNewIdentifierLocation: true }, - { marker: "16", exact: [...x, completion.globalThisEntry, ...completion.globalsVars, completion.undefinedVarEntry], isGlobalCompletion: false }, + { marker: "13", exact: globals.filter(name => name !== 'z'), isGlobalCompletion: false }, + { marker: "15", exact: globals.filter(name => name !== 'x'), isGlobalCompletion: true, isNewIdentifierLocation: true }, + { marker: "16", exact: [...x, completion.globalThisEntry, ...completion.globalsVars, completion.undefinedVarEntry].filter(name => name !== 'user'), isGlobalCompletion: false }, { marker: "17", exact: completion.globalKeywords, isGlobalCompletion: false }, ); diff --git a/tests/cases/fourslash/completionListWithMeanings.ts b/tests/cases/fourslash/completionListWithMeanings.ts index 034607d08c021..82c69d43a48de 100644 --- a/tests/cases/fourslash/completionListWithMeanings.ts +++ b/tests/cases/fourslash/completionListWithMeanings.ts @@ -36,10 +36,20 @@ const types: ReadonlyArray = [ ...completion.typeKeywords, ]; +const filterValuesByName = (name: string) => { + return values.filter(entry => { + if (typeof entry === 'string') { + return entry !== name; + } + + return entry.name !== name; + }) +} + verify.completions( - { marker: "valueExpr", exact: values, isNewIdentifierLocation: true }, + { marker: "valueExpr", exact: filterValuesByName('tt'), isNewIdentifierLocation: true }, { marker: "typeExpr", exact: types, }, - { marker: "valueExprInObjectLiteral", exact: values }, + { marker: "valueExprInObjectLiteral", exact: filterValuesByName('yy') }, { marker: "membertypeExpr", exact: [{ name: "point3", text: "interface m3.point3" }] }, { marker: "membervalueExpr", exact: [{ name: "zz2", text: "var m3.zz2: number" }] }, ); diff --git a/tests/cases/fourslash/completionListWithoutVariableinitializer.ts b/tests/cases/fourslash/completionListWithoutVariableinitializer.ts new file mode 100644 index 0000000000000..7ef57ca66e196 --- /dev/null +++ b/tests/cases/fourslash/completionListWithoutVariableinitializer.ts @@ -0,0 +1,62 @@ +/// + +//// const a = a/*1*/; +//// const b = a && b/*2*/; +//// const c = [{ prop: [c/*3*/] }]; +//// const d = () => { d/*4*/ }; +//// const e = () => expression/*5*/ +//// const f = { prop() { e/*6*/ } }; +//// const fn = (p = /*7*/) => {} +//// const { g, h = /*8*/ } = { ... } +//// const [ g1, h1 = /*9*/ ] = [ ... ] + +verify.completions({ + marker: ["1"], + excludes: ["a"], + isNewIdentifierLocation: true, +}); + +verify.completions({ + marker: ["2"], + excludes: ["b"], + includes: ["a"], +}); + +verify.completions({ + marker: ["3"], + excludes: ["c"], + includes: ["a", "b"], + isNewIdentifierLocation: true, +}); + +verify.completions({ + marker: ["4"], + includes: ["a", "b", "c", "d"], +}); + +verify.completions({ + marker: ["5"], + includes: ["a", "b", "c", "d", "e"], +}); + +verify.completions({ + marker: ["6"], + includes: ["a", "b", "c", "d", "e"], +}); + +verify.completions({ + marker: ["7"], + includes: ["a", "b", "c", "d", "e"], + excludes: ["fn"], +}); + +verify.completions({ + marker: ["8"], + includes: ["a", "b", "c", "d", "e", "fn"], +}); + +verify.completions({ + marker: ["9"], + includes: ["a", "b", "c", "d", "e", "fn"], +}); + diff --git a/tests/cases/fourslash/completionPropertyShorthandForObjectLiteral.ts b/tests/cases/fourslash/completionPropertyShorthandForObjectLiteral.ts index 0f8f65e70ebd1..8eae3df67a698 100644 --- a/tests/cases/fourslash/completionPropertyShorthandForObjectLiteral.ts +++ b/tests/cases/fourslash/completionPropertyShorthandForObjectLiteral.ts @@ -44,6 +44,8 @@ //// f15({f/*15*/}); //// f16({f/*16*/}); +//// f1({ f1, /*17*/ }); + const locals = [ ...(() => { const symbols = []; @@ -56,11 +58,13 @@ const locals = [ ]; verify.completions( // Non-contextual, any, unknown, object, Record, [key: string]: .., Type parameter, etc.. - { marker: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"], exact: completion.globalsPlus(locals)}, + { marker: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"], exact: completion.globalsPlus(locals), isNewIdentifierLocation: true }, // Has named property - { marker: ["12", "13"], exact: "typed"}, + { marker: ["12", "13"], exact: "typed", isNewIdentifierLocation: false }, // Has both StringIndexType and named property - { marker: ["14"], exact: "prop", isNewIdentifierLocation: true}, + { marker: ["14"], exact: "prop", isNewIdentifierLocation: true }, // NumberIndexType - { marker: ["15", "16"], exact: [], isNewIdentifierLocation: true}, + { marker: ["15", "16"], exact: [], isNewIdentifierLocation: true }, + // After comma + { marker: ["17"], exact: completion.globalsPlus(locals), isNewIdentifierLocation: true }, ); diff --git a/tests/cases/fourslash/completionPropertyShorthandForObjectLiteral2.ts b/tests/cases/fourslash/completionPropertyShorthandForObjectLiteral2.ts index ec54418c77935..40aa223b7eced 100644 --- a/tests/cases/fourslash/completionPropertyShorthandForObjectLiteral2.ts +++ b/tests/cases/fourslash/completionPropertyShorthandForObjectLiteral2.ts @@ -12,6 +12,11 @@ //// }; verify.completions({ - marker: test.markers(), - exact: completion.globalsPlus(["foo", "bar", "obj1", "obj2"]), + marker: ["1"], + exact: completion.globalsPlus(["foo", "bar", "obj2"]), +}); + +verify.completions({ + marker: ["2"], + exact: completion.globalsPlus(["foo", "bar", "obj1"]), }); diff --git a/tests/cases/fourslash/completionPropertyShorthandForObjectLiteral3.ts b/tests/cases/fourslash/completionPropertyShorthandForObjectLiteral3.ts index 0a6fad60b293e..70c1f60055425 100644 --- a/tests/cases/fourslash/completionPropertyShorthandForObjectLiteral3.ts +++ b/tests/cases/fourslash/completionPropertyShorthandForObjectLiteral3.ts @@ -7,5 +7,5 @@ verify.completions({ marker: ["1"], - exact: completion.globalsPlus(["foo", "bar", "obj"]) + exact: completion.globalsPlus(["foo", "bar"]), }); diff --git a/tests/cases/fourslash/completionPropertyShorthandForObjectLiteral4.ts b/tests/cases/fourslash/completionPropertyShorthandForObjectLiteral4.ts index 35daa6185a3f1..a720bcc1dc6b2 100644 --- a/tests/cases/fourslash/completionPropertyShorthandForObjectLiteral4.ts +++ b/tests/cases/fourslash/completionPropertyShorthandForObjectLiteral4.ts @@ -7,5 +7,5 @@ verify.completions({ marker: ["1"], - exact: completion.globalsPlus(["foo", "bar", "obj"]) + exact: completion.globalsPlus(["foo", "bar"]), }); diff --git a/tests/cases/fourslash/completionPropertyShorthandForObjectLiteral5.ts b/tests/cases/fourslash/completionPropertyShorthandForObjectLiteral5.ts index 74ded23477463..d3002f56c4619 100644 --- a/tests/cases/fourslash/completionPropertyShorthandForObjectLiteral5.ts +++ b/tests/cases/fourslash/completionPropertyShorthandForObjectLiteral5.ts @@ -4,10 +4,12 @@ //// export const exportedConstant = 0; // @Filename: /b.ts +//// const foo = 'foo' //// const obj = { exp/**/ verify.completions({ - marker: "", - exact: completion.globalsPlus(["obj"]), - preferences: { includeCompletionsForModuleExports: true } -}); \ No newline at end of file + marker: "", + exact: completion.globalsPlus(["foo"]), + isNewIdentifierLocation: true, + preferences: { includeCompletionsForModuleExports: true }, +}); diff --git a/tests/cases/fourslash/completionTypeAssertion.ts b/tests/cases/fourslash/completionTypeAssertion.ts index bb5c6f8abda29..fbfe72ac455cc 100644 --- a/tests/cases/fourslash/completionTypeAssertion.ts +++ b/tests/cases/fourslash/completionTypeAssertion.ts @@ -1,5 +1,6 @@ /// -//// var x = this as/*1*/ +//// var x = 'something' +//// var y = this as/*1*/ verify.completions({marker: "1", exact: completion.globalsPlus(["x"]) }) diff --git a/tests/cases/fourslash/completionsGenericUnconstrained.ts b/tests/cases/fourslash/completionsGenericUnconstrained.ts index d18991830e7dd..0d91b99f062f1 100644 --- a/tests/cases/fourslash/completionsGenericUnconstrained.ts +++ b/tests/cases/fourslash/completionsGenericUnconstrained.ts @@ -10,6 +10,7 @@ verify.completions({ marker: "", + isNewIdentifierLocation: true, includes: [{ name: "Object", sortText: completion.SortText.GlobalsOrKeywords diff --git a/tests/cases/fourslash/completionsImport_umdModules1_globalAccess.ts b/tests/cases/fourslash/completionsImport_umdModules1_globalAccess.ts new file mode 100644 index 0000000000000..3e2225ec8c12a --- /dev/null +++ b/tests/cases/fourslash/completionsImport_umdModules1_globalAccess.ts @@ -0,0 +1,33 @@ +/// + +// @filename: /package.json +//// { "dependencies": { "@types/classnames": "*" } } + +// @filename: /tsconfig.json +//// { "compilerOptions": { "allowUmdGlobalAccess": true } } + +// @filename: /node_modules/@types/classnames/package.json +//// { "name": "@types/classnames", "types": "index.d.ts" } + +// @filename: /node_modules/@types/classnames/index.d.ts +//// declare const classNames: () => string; +//// export = classNames; +//// export as namespace classNames; + +// @filename: /SomeReactComponent.tsx +//// import * as React from 'react'; +//// +//// const el1 =

; + +goTo.marker("1"); + +verify.completions({ + includes: [{ + name: "classNames", + hasAction: undefined, // Asserts to have no actions + sortText: completion.SortText.GlobalsOrKeywords, + }], + preferences: { + includeCompletionsForModuleExports: true, + } +}); diff --git a/tests/cases/fourslash/completionsImport_umdModules2_moduleExports.ts b/tests/cases/fourslash/completionsImport_umdModules2_moduleExports.ts new file mode 100644 index 0000000000000..56db8733cbc49 --- /dev/null +++ b/tests/cases/fourslash/completionsImport_umdModules2_moduleExports.ts @@ -0,0 +1,34 @@ +/// + +// @filename: /package.json +//// { "dependencies": { "@types/classnames": "*" } } + +// @filename: /tsconfig.json +//// {} + +// @filename: /node_modules/@types/classnames/package.json +//// { "name": "@types/classnames", "types": "index.d.ts" } + +// @filename: /node_modules/@types/classnames/index.d.ts +//// declare const classNames: () => string; +//// export = classNames; +//// export as namespace classNames; + +// @filename: /SomeReactComponent.tsx +//// import * as React from 'react'; +//// +//// const el1 =
foo
; + +goTo.marker("1"); + +verify.completions({ + includes: [{ + name: "classNames", + hasAction: true, + source: "/node_modules/@types/classnames/index", + sortText: completion.SortText.AutoImportSuggestions, + }], + preferences: { + includeCompletionsForModuleExports: true, + } +}); diff --git a/tests/cases/fourslash/completionsImport_umdModules3_script.ts b/tests/cases/fourslash/completionsImport_umdModules3_script.ts new file mode 100644 index 0000000000000..cdcf6da2287ea --- /dev/null +++ b/tests/cases/fourslash/completionsImport_umdModules3_script.ts @@ -0,0 +1,32 @@ +/// + +// @filename: /package.json +//// { "dependencies": { "@types/classnames": "*" } } + +// @filename: /tsconfig.json +//// { "compilerOptions": { "module": "es2015" }} + +// @filename: /node_modules/@types/classnames/package.json +//// { "name": "@types/classnames", "types": "index.d.ts" } + +// @filename: /node_modules/@types/classnames/index.d.ts +//// declare const classNames: () => string; +//// export = classNames; +//// export as namespace classNames; + +// @filename: /SomeReactComponent.tsx +//// +//// const el1 =
foo
+ +goTo.marker("1"); + +verify.completions({ + includes: [{ + name: "classNames", + hasAction: undefined, // Asserts to have no actions + sortText: completion.SortText.GlobalsOrKeywords, + }], + preferences: { + includeCompletionsForModuleExports: true, + } +}); diff --git a/tests/cases/fourslash/completionsImport_weirdDefaultSynthesis.ts b/tests/cases/fourslash/completionsImport_weirdDefaultSynthesis.ts new file mode 100644 index 0000000000000..b8d3558da3e0f --- /dev/null +++ b/tests/cases/fourslash/completionsImport_weirdDefaultSynthesis.ts @@ -0,0 +1,20 @@ +/// + +// @Filename: /collection.ts +//// class Collection { +//// public static readonly default: typeof Collection = Collection; +//// } +//// export = Collection as typeof Collection & { default: typeof Collection }; + +// @Filename: /index.ts +//// Colle/**/ + +verify.applyCodeActionFromCompletion("", { + name: "Collection", + source: "/collection", + description: `Import 'Collection' from module "./collection"`, + preferences: { + includeCompletionsForModuleExports: true + }, + newFileContent: `import Collection = require("./collection");\n\nColle` +}); diff --git a/tests/cases/fourslash/completionsSelfDeclaring2.ts b/tests/cases/fourslash/completionsSelfDeclaring2.ts index 7a46020a2c210..a068837c00701 100644 --- a/tests/cases/fourslash/completionsSelfDeclaring2.ts +++ b/tests/cases/fourslash/completionsSelfDeclaring2.ts @@ -9,10 +9,12 @@ verify.completions({ marker: "1", - exact: completion.globalsPlus(["f1", "f2"]) + exact: completion.globalsPlus(["f1", "f2"]), + isNewIdentifierLocation: true }); verify.completions({ marker: "2", - exact: ["xyz"] + exact: ["xyz"], + isNewIdentifierLocation: false }); diff --git a/tests/cases/fourslash/docCommentTemplateReturnsTag.ts b/tests/cases/fourslash/docCommentTemplateReturnsTag1.ts similarity index 100% rename from tests/cases/fourslash/docCommentTemplateReturnsTag.ts rename to tests/cases/fourslash/docCommentTemplateReturnsTag1.ts diff --git a/tests/cases/fourslash/docCommentTemplateReturnsTag2.ts b/tests/cases/fourslash/docCommentTemplateReturnsTag2.ts new file mode 100644 index 0000000000000..18767a422805b --- /dev/null +++ b/tests/cases/fourslash/docCommentTemplateReturnsTag2.ts @@ -0,0 +1,21 @@ +/// + +/////*0*/ +////function f1(x: number, y: number) { +//// return 1; +////} + +verify.docCommentTemplateAt("0", 8, + `/** + * + * @param x + * @param y + * @returns + */`, { generateReturnInDocTemplate: true }); + +verify.docCommentTemplateAt("0", 8, + `/** + * + * @param x + * @param y + */`, { generateReturnInDocTemplate: false }); diff --git a/tests/cases/fourslash/formatMultilineConditionalExpressions.ts b/tests/cases/fourslash/formatMultilineConditionalExpressions.ts new file mode 100644 index 0000000000000..de7b243bd2d83 --- /dev/null +++ b/tests/cases/fourslash/formatMultilineConditionalExpressions.ts @@ -0,0 +1,41 @@ +/// + +// @Filename: index.tsx +//// !!true ? ( +////
a
+//// ) : ( +////
b
+//// ) +//// +//// const y = true +//// ? 0 : ( +//// 1 +//// ); +//// +//// const yy = true +//// ? 0 +//// : ( +//// 1 +//// ); +//// +//// const z = true ? (() => { +//// console.log('hello'); +//// }) : ( +//// 1 +//// ); +//// +//// const a = true ? { +//// p: true +//// } : { +//// p: false +//// }; +//// +//// const b = { +//// x: 'x' +//// } ? ( +//// 1 +//// ) : ( +//// 0 +//// ); + +verify.formatDocumentChangesNothing(); diff --git a/tests/cases/fourslash/formatMultilineExtendsGeneric.ts b/tests/cases/fourslash/formatMultilineExtendsGeneric.ts new file mode 100644 index 0000000000000..e0cdf54d2516b --- /dev/null +++ b/tests/cases/fourslash/formatMultilineExtendsGeneric.ts @@ -0,0 +1,9 @@ +/// + +//// class Favorite extends Array< +//// string +//// > { +//// private foo = 2 +//// } + +verify.formatDocumentChangesNothing(); diff --git a/tests/cases/fourslash/formatSelectionDocCommentInBlock.ts b/tests/cases/fourslash/formatSelectionDocCommentInBlock.ts new file mode 100644 index 0000000000000..e1710018631cb --- /dev/null +++ b/tests/cases/fourslash/formatSelectionDocCommentInBlock.ts @@ -0,0 +1,44 @@ +/// + +//// { +//// /*1*//** +//// * Some doc comment +//// *//*2*/ +//// const a = 1; +//// } +//// +//// while (true) { +//// /*3*//** +//// * Some doc comment +//// *//*4*/ +//// } + +format.selection("1", "2"); +verify.currentFileContentIs( +`{ + /** + * Some doc comment + */ + const a = 1; +} + +while (true) { +/** + * Some doc comment + */ +}`); + +format.selection("3", "4"); +verify.currentFileContentIs( +`{ + /** + * Some doc comment + */ + const a = 1; +} + +while (true) { + /** + * Some doc comment + */ +}`); diff --git a/tests/cases/fourslash/formatSelectionSingleProperty.ts b/tests/cases/fourslash/formatSelectionSingleProperty.ts new file mode 100644 index 0000000000000..6afd2e9d5e4b8 --- /dev/null +++ b/tests/cases/fourslash/formatSelectionSingleProperty.ts @@ -0,0 +1,15 @@ +/// + +//// console.log({ +//// }, { +//// /*1*/ a: 1, +//// /*2*/ b: 2 +//// }) + +format.selection("1", "2"); +verify.currentFileContentIs( +`console.log({ +}, { + a: 1, + b: 2 +})`); diff --git a/tests/cases/fourslash/fourslash.ts b/tests/cases/fourslash/fourslash.ts index 7228fee24b118..387d843190454 100644 --- a/tests/cases/fourslash/fourslash.ts +++ b/tests/cases/fourslash/fourslash.ts @@ -328,7 +328,7 @@ declare namespace FourSlashInterface { todoCommentsInCurrentFile(descriptors: string[]): void; matchingBracePositionInCurrentFile(bracePosition: number, expectedMatchPosition: number): void; noMatchingBracePositionInCurrentFile(bracePosition: number): void; - docCommentTemplateAt(markerName: string | FourSlashInterface.Marker, expectedOffset: number, expectedText: string): void; + docCommentTemplateAt(markerName: string | FourSlashInterface.Marker, expectedOffset: number, expectedText: string, options?: VerifyDocCommentTemplateOptions): void; noDocCommentTemplateAt(markerName: string | FourSlashInterface.Marker): void; rangeAfterCodeFix(expectedText: string, includeWhiteSpace?: boolean, errorCode?: number, index?: number): void; codeFixAll(options: { fixId: string, fixAllDescription: string, newFileContent: NewFileContent, commands?: {}[] }): void; @@ -664,6 +664,10 @@ declare namespace FourSlashInterface { overrideSelectedItemIndex?: number; } + interface VerifyDocCommentTemplateOptions { + generateReturnInDocTemplate?: boolean; + } + export type SignatureHelpTriggerReason = | SignatureHelpInvokedReason | SignatureHelpCharacterTypedReason diff --git a/tests/cases/fourslash/globalCompletionListInsideObjectLiterals.ts b/tests/cases/fourslash/globalCompletionListInsideObjectLiterals.ts index 503758461489b..00d5ef2c6e0d6 100644 --- a/tests/cases/fourslash/globalCompletionListInsideObjectLiterals.ts +++ b/tests/cases/fourslash/globalCompletionListInsideObjectLiterals.ts @@ -28,6 +28,8 @@ // 5, 6: Literal member completion after member name with empty member expression. const exact = ["p1", "p2", "p3", "p4", ...completion.globalsPlus(["ObjectLiterals"])]; verify.completions( - { marker: ["1",], exact, isNewIdentifierLocation: true }, - { marker: ["2", "3", "4", "5", "6"], exact } + { marker: ["1",], exact: exact.filter(name => name !== 'p1'), isNewIdentifierLocation: true }, + { marker: ["2", "3"], exact: exact.filter(name => name !== 'p2') }, + { marker: ["4"], exact: exact.filter(name => name !== 'p3' ) }, + { marker: ["5", "6"], exact: exact.filter(name => name !== 'p4') }, ); diff --git a/tests/cases/fourslash/importNameCodeFix_sortByDistance.ts b/tests/cases/fourslash/importNameCodeFix_sortByDistance.ts new file mode 100644 index 0000000000000..c25cf8c4d4fee --- /dev/null +++ b/tests/cases/fourslash/importNameCodeFix_sortByDistance.ts @@ -0,0 +1,26 @@ +/// + +// @module: commonjs + +// @Filename: /src/admin/utils/db/db.ts +//// export const db = {}; + +// @Filename: /src/admin/utils/db/index.ts +//// export * from "./db"; + +// @Filename: /src/client/helpers/db.ts +//// export const db = {}; + +// @Filename: /src/client/db.ts +//// export const db = {}; + +// @Filename: /src/client/foo.ts +//// db/**/ + +goTo.marker(""); +verify.importFixAtPosition([ + `import { db } from "./db";\n\ndb`, + `import { db } from "./helpers/db";\n\ndb`, + `import { db } from "../admin/utils/db";\n\ndb`, + `import { db } from "../admin/utils/db/db";\n\ndb` +]); diff --git a/tests/cases/fourslash/jsdocDeprecated_suggestion1.ts b/tests/cases/fourslash/jsdocDeprecated_suggestion1.ts index a0911eeea2a6d..849df4210ec15 100644 --- a/tests/cases/fourslash/jsdocDeprecated_suggestion1.ts +++ b/tests/cases/fourslash/jsdocDeprecated_suggestion1.ts @@ -81,8 +81,8 @@ goTo.file('a.ts') const ranges = test.ranges(); verify.getSuggestionDiagnostics([ { - "code": 6385, - "message": "'(): void' is deprecated", + "code": 6387, + "message": "The signature '(): void' of 'faff' is deprecated.", "reportsDeprecated": true, "range": ranges[0] }, @@ -93,92 +93,92 @@ verify.getSuggestionDiagnostics([ "range": ranges[1] }, { - "code": 6385, - "message": "'(): void' is deprecated", + "code": 6387, + "message": "The signature '(): void' of 'foo.faff' is deprecated.", "reportsDeprecated": true, "range": ranges[2] }, { "code": 6385, - "message": "'faff' is deprecated", + "message": "'faff' is deprecated.", "reportsDeprecated": true, "range": ranges[3] }, { "code": 6385, - "message": "'faff' is deprecated", + "message": "'faff' is deprecated.", "reportsDeprecated": true, "range": ranges[4] }, { - "code": 6385, - "message": "'(): void' is deprecated", + "code": 6387, + "message": "The signature '(): void' of 'faff' is deprecated.", "reportsDeprecated": true, "range": ranges[5] }, { - "code": 6385, - "message": "'(): void' is deprecated", + "code": 6387, + "message": "The signature '(): void' of 'foo.faff' is deprecated.", "reportsDeprecated": true, "range": ranges[6] }, { - "code": 6385, - "message": "'(): void' is deprecated", + "code": 6387, + "message": "The signature '(): void' of 'foo.faff' is deprecated.", "reportsDeprecated": true, "range": ranges[7] }, { - "code": 6385, - "message": "'(): void' is deprecated", + "code": 6387, + "message": "The signature '(): void' of 'bar' is deprecated.", "reportsDeprecated": true, "range": ranges[8] }, { "code": 6385, - "message": "'Foo' is deprecated", + "message": "'Foo' is deprecated.", "reportsDeprecated": true, "range": ranges[9] }, { "code": 6385, - "message": "'zzz' is deprecated", + "message": "'zzz' is deprecated.", "reportsDeprecated": true, "range": ranges[10] }, { "code": 6385, - "message": "'QW' is deprecated", + "message": "'QW' is deprecated.", "reportsDeprecated": true, "range": ranges[11] }, { - "code": 6385, - "message": "'(): C' is deprecated", + "code": 6387, + "message": "The signature '(): C' of 'C' is deprecated.", "reportsDeprecated": true, "range": ranges[12] }, { - "code": 6385, - "message": "'(): void' is deprecated", + "code": 6387, + "message": "The signature '(): void' of 'c.m' is deprecated.", "reportsDeprecated": true, "range": ranges[13] }, { "code": 6385, - "message": "'m' is deprecated", + "message": "'m' is deprecated.", "reportsDeprecated": true, "range": ranges[14] }, { "code": 6385, - "message": "'D' is deprecated", + "message": "'D' is deprecated.", "reportsDeprecated": true, "range": ranges[15] }, { "code": 6385, - "message": "'D' is deprecated", + "message": "'D' is deprecated.", "reportsDeprecated": true, "range": ranges[16] }, @@ -188,49 +188,49 @@ goTo.file('j.tsx') verify.getSuggestionDiagnostics([ { "code": 6385, - "message": "'Compi' is deprecated", + "message": "'Compi' is deprecated.", "reportsDeprecated": true, "range": ranges[17] }, { - "code": 6385, - "message": "'(_props: Props): any' is deprecated", + "code": 6387, + "message": "The signature '(_props: Props): any' of 'Compi' is deprecated.", "reportsDeprecated": true, "range": ranges[18] }, { - "code": 6385, - "message": "'(_props: Props): any' is deprecated", + "code": 6387, + "message": "The signature '(_props: Props): any' of 'Compi' is deprecated.", "reportsDeprecated": true, "range": ranges[19] }, { "code": 6385, - "message": "'Compi' is deprecated", + "message": "'Compi' is deprecated.", "reportsDeprecated": true, "range": ranges[20] }, { - "code": 6385, - "message": "'(_x: unknown): void' is deprecated", + "code": 6387, + "message": "The signature '(_x: unknown): void' of 'ttf' is deprecated.", "reportsDeprecated": true, "range": ranges[21] }, { "code": 6385, - "message": "'ttf' is deprecated", + "message": "'ttf' is deprecated.", "reportsDeprecated": true, "range": ranges[22] }, { "code": 6385, - "message": "'dec' is deprecated", + "message": "'dec' is deprecated.", "reportsDeprecated": true, "range": ranges[23] }, { - "code": 6385, - "message": "'(_c: unknown): void' is deprecated", + "code": 6387, + "message": "The signature '(_c: unknown): void' of 'dec' is deprecated.", "reportsDeprecated": true, "range": ranges[24] }, @@ -239,49 +239,49 @@ goTo.file('b.ts') verify.getSuggestionDiagnostics([ { "code": 6385, - "message": "'bar' is deprecated", + "message": "'bar' is deprecated.", "reportsDeprecated": true, "range": ranges[25] }, { "code": 6385, - "message": "'QW' is deprecated", + "message": "'QW' is deprecated.", "reportsDeprecated": true, "range": ranges[26] }, { - "code": 6385, - "message": "'(): void' is deprecated", + "code": 6387, + "message": "The signature '(): void' of 'f.bar' is deprecated.", "reportsDeprecated": true, "range": ranges[27] }, { - "code": 6385, - "message": "'(): void' is deprecated", + "code": 6387, + "message": "The signature '(): void' of 'f.foo.faff' is deprecated.", "reportsDeprecated": true, "range": ranges[28] }, { - "code": 6385, - "message": "'(): void' is deprecated", + "code": 6387, + "message": "The signature '(): void' of 'bar' is deprecated.", "reportsDeprecated": true, "range": ranges[29] }, { "code": 6385, - "message": "'QW' is deprecated", + "message": "'QW' is deprecated.", "reportsDeprecated": true, "range": ranges[30] }, { "code": 6385, - "message": "'Foo' is deprecated", + "message": "'Foo' is deprecated.", "reportsDeprecated": true, "range": ranges[31] }, { "code": 6385, - "message": "'QW' is deprecated", + "message": "'QW' is deprecated.", "reportsDeprecated": true, "range": ranges[32] }, diff --git a/tests/cases/fourslash/jsdocDeprecated_suggestion10.ts b/tests/cases/fourslash/jsdocDeprecated_suggestion10.ts index f7ef89da1994a..d8f96b36991da 100644 --- a/tests/cases/fourslash/jsdocDeprecated_suggestion10.ts +++ b/tests/cases/fourslash/jsdocDeprecated_suggestion10.ts @@ -14,19 +14,19 @@ const ranges = test.ranges(); verify.getSuggestionDiagnostics([ { "code": 6385, - "message": "'bar' is deprecated", + "message": "'bar' is deprecated.", "reportsDeprecated": true, "range": ranges[0] }, { "code": 6385, - "message": "'bar' is deprecated", + "message": "'bar' is deprecated.", "reportsDeprecated": true, "range": ranges[1] }, { "code": 6385, - "message": "'bar' is deprecated", + "message": "'bar' is deprecated.", "reportsDeprecated": true, "range": ranges[2] }, diff --git a/tests/cases/fourslash/jsdocDeprecated_suggestion11.ts b/tests/cases/fourslash/jsdocDeprecated_suggestion11.ts index dedb9fe0e1891..34fd729d89d8a 100644 --- a/tests/cases/fourslash/jsdocDeprecated_suggestion11.ts +++ b/tests/cases/fourslash/jsdocDeprecated_suggestion11.ts @@ -14,13 +14,13 @@ const [r0, r1] = test.ranges(); verify.getSuggestionDiagnostics([ { "code": 6385, - "message": "'foo' is deprecated", + "message": "'foo' is deprecated.", "reportsDeprecated": true, "range": r0 }, { "code": 6385, - "message": "'foo' is deprecated", + "message": "'foo' is deprecated.", "reportsDeprecated": true, "range": r1 } diff --git a/tests/cases/fourslash/jsdocDeprecated_suggestion12.ts b/tests/cases/fourslash/jsdocDeprecated_suggestion12.ts index 7c9c76b426e9d..559a3423f8242 100644 --- a/tests/cases/fourslash/jsdocDeprecated_suggestion12.ts +++ b/tests/cases/fourslash/jsdocDeprecated_suggestion12.ts @@ -15,7 +15,7 @@ const ranges = test.ranges(); verify.getSuggestionDiagnostics([ { "code": 6385, - "message": "'foo' is deprecated", + "message": "'foo' is deprecated.", "reportsDeprecated": true, "range": ranges[0] }, diff --git a/tests/cases/fourslash/jsdocDeprecated_suggestion13.ts b/tests/cases/fourslash/jsdocDeprecated_suggestion13.ts index 09f2dadb9eb46..dd56dc7cac648 100644 --- a/tests/cases/fourslash/jsdocDeprecated_suggestion13.ts +++ b/tests/cases/fourslash/jsdocDeprecated_suggestion13.ts @@ -18,7 +18,7 @@ const ranges = test.ranges(); verify.getSuggestionDiagnostics([ { "code": 6385, - "message": "'foo' is deprecated", + "message": "'foo' is deprecated.", "reportsDeprecated": true, "range": ranges[0] }, diff --git a/tests/cases/fourslash/jsdocDeprecated_suggestion2.ts b/tests/cases/fourslash/jsdocDeprecated_suggestion2.ts index e2c8b6233c959..34548ed727594 100644 --- a/tests/cases/fourslash/jsdocDeprecated_suggestion2.ts +++ b/tests/cases/fourslash/jsdocDeprecated_suggestion2.ts @@ -69,62 +69,62 @@ const ranges = test.ranges(); verify.getSuggestionDiagnostics([ { - message: "'(): undefined' is deprecated", - code: 6385, + message: "The signature '(): undefined' of 'foo' is deprecated.", + code: 6387, range: ranges[0], reportsDeprecated: true, }, { - message: "'(): number' is deprecated", - code: 6385, + message: "The signature '(): number' of 'bar' is deprecated.", + code: 6387, range: ranges[1], reportsDeprecated: true, }, { - message: "'bar' is deprecated", + message: "'bar' is deprecated.", code: 6385, range: ranges[2], reportsDeprecated: true, }, { - message: "'(): number' is deprecated", - code: 6385, + message: "The signature '(): number' of 'baz' is deprecated.", + code: 6387, range: ranges[3], reportsDeprecated: true, }, { - message: "'baz' is deprecated", + message: "'baz' is deprecated.", code: 6385, range: ranges[4], reportsDeprecated: true, }, { - message: "'(): void' is deprecated", - code: 6385, + message: "The signature '(): void' of 'f' is deprecated.", + code: 6387, range: ranges[5], reportsDeprecated: true, }, { - message: `'(tag: "xmp"): void' is deprecated`, - code: 6385, + message: `The signature '(tag: "xmp"): void' of 't.createElement' is deprecated.`, + code: 6387, range: ranges[6], reportsDeprecated: true, }, { - message: `'(): C' is deprecated`, - code: 6385, + message: `The signature '(): C' of 'C' is deprecated.`, + code: 6387, range: ranges[7], reportsDeprecated: true, }, { - message: `'(): void' is deprecated`, - code: 6385, + message: `The signature '(): void' of 'ca' is deprecated.`, + code: 6387, range: ranges[8], reportsDeprecated: true, }, { - message: `'(): string' is deprecated`, - code: 6385, + message: `The signature '(): string' of 'cb' is deprecated.`, + code: 6387, range: ranges[9], reportsDeprecated: true, }, diff --git a/tests/cases/fourslash/jsdocDeprecated_suggestion3.ts b/tests/cases/fourslash/jsdocDeprecated_suggestion3.ts index 4b3d32f7f10a7..1a1cf1cb2c97f 100644 --- a/tests/cases/fourslash/jsdocDeprecated_suggestion3.ts +++ b/tests/cases/fourslash/jsdocDeprecated_suggestion3.ts @@ -56,67 +56,67 @@ const ranges = test.ranges(); verify.getSuggestionDiagnostics([ { - message: "'a' is deprecated", + message: "'a' is deprecated.", code: 6385, range: ranges[0], reportsDeprecated: true, }, { - message: "'b' is deprecated", + message: "'b' is deprecated.", code: 6385, range: ranges[1], reportsDeprecated: true, }, { - message: "'(): void' is deprecated", - code: 6385, + message: "The signature '(): void' of 'b' is deprecated.", + code: 6387, range: ranges[2], reportsDeprecated: true, }, { - message: "'(): void' is deprecated", - code: 6385, + message: "The signature '(): void' of 'c' is deprecated.", + code: 6387, range: ranges[3], reportsDeprecated: true, }, { - message: "'d' is deprecated", + message: "'d' is deprecated.", code: 6385, range: ranges[4], reportsDeprecated: true, }, { - message: "'e' is deprecated", + message: "'e' is deprecated.", code: 6385, range: ranges[5], reportsDeprecated: true, }, { - message: "'(): void' is deprecated", - code: 6385, + message: "The signature '(): void' of 'e' is deprecated.", + code: 6387, range: ranges[6], reportsDeprecated: true, }, { - message: "'(a: number): void' is deprecated", - code: 6385, + message: "The signature '(a: number): void' of 'e' is deprecated.", + code: 6387, range: ranges[7], reportsDeprecated: true, }, { - message: "'f' is deprecated", + message: "'f' is deprecated.", code: 6385, range: ranges[8], reportsDeprecated: true, }, { - message: "'g' is deprecated", + message: "'g' is deprecated.", code: 6385, range: ranges[9], reportsDeprecated: true, }, { - message: "'H' is deprecated", + message: "'H' is deprecated.", code: 6385, range: ranges[10], reportsDeprecated: true, diff --git a/tests/cases/fourslash/jsdocDeprecated_suggestion4.ts b/tests/cases/fourslash/jsdocDeprecated_suggestion4.ts index 9bcdf0de5e2b7..925f001e992d9 100644 --- a/tests/cases/fourslash/jsdocDeprecated_suggestion4.ts +++ b/tests/cases/fourslash/jsdocDeprecated_suggestion4.ts @@ -30,19 +30,19 @@ const ranges = test.ranges(); verify.getSuggestionDiagnostics([ { - message: "'f' is deprecated", + message: "'f' is deprecated.", code: 6385, range: ranges[0], reportsDeprecated: true, }, { - message: "'baz' is deprecated", + message: "'baz' is deprecated.", code: 6385, range: ranges[1], reportsDeprecated: true, }, { - message: "'f' is deprecated", + message: "'f' is deprecated.", code: 6385, range: ranges[2], reportsDeprecated: true, diff --git a/tests/cases/fourslash/jsdocDeprecated_suggestion6.ts b/tests/cases/fourslash/jsdocDeprecated_suggestion6.ts index 6418da6e6c101..bf799fe33cf21 100644 --- a/tests/cases/fourslash/jsdocDeprecated_suggestion6.ts +++ b/tests/cases/fourslash/jsdocDeprecated_suggestion6.ts @@ -20,25 +20,25 @@ const ranges = test.ranges(); verify.getSuggestionDiagnostics([ { - message: "'Props' is deprecated", + message: "'Props' is deprecated.", code: 6385, range: ranges[0], reportsDeprecated: true, }, { - message: "'Component' is deprecated", + message: "'Component' is deprecated.", code: 6385, range: ranges[1], reportsDeprecated: true }, { - message: "'Options' is deprecated", + message: "'Options' is deprecated.", code: 6385, range: ranges[2], reportsDeprecated: true, }, { - message: "'deprecatedFunction' is deprecated", + message: "'deprecatedFunction' is deprecated.", code: 6385, range: ranges[3], reportsDeprecated: true, diff --git a/tests/cases/fourslash/navigationBarPropertyDeclarations.ts b/tests/cases/fourslash/navigationBarPropertyDeclarations.ts new file mode 100644 index 0000000000000..4de14049ab795 --- /dev/null +++ b/tests/cases/fourslash/navigationBarPropertyDeclarations.ts @@ -0,0 +1,295 @@ +/// + +////class A { +//// public A1 = class { +//// public x = 1; +//// private y() {} +//// protected z() {} +//// } +//// +//// public A2 = { +//// x: 1, +//// y() {}, +//// z() {} +//// } +//// +//// public A3 = function () {} +//// public A4 = () => {} +//// public A5 = 1; +//// public A6 = "A6"; +//// +//// public ["A7"] = class { +//// public x = 1; +//// private y() {} +//// protected z() {} +//// } +//// +//// public [1] = { +//// x: 1, +//// y() {}, +//// z() {} +//// } +//// +//// public [1 + 1] = 1; +////} + +verify.navigationTree({ + text: "", + kind: "script", + childItems: [ + { + text: "A", + kind: "class", + childItems: [ + { + text: "[1]", + kind: "property", + kindModifiers: "public", + childItems: [ + { + text: "x", + kind: "property" + }, + { + text: "y", + kind: "method" + }, + { + text: "z", + kind: "method" + } + ] + }, + { + text: "A1", + kind: "property", + kindModifiers: "public", + childItems: [ + { + text: "x", + kind: "property", + kindModifiers: "public" + }, + { + text: "y", + kind: "method", + kindModifiers: "private" + }, + { + text: "z", + kind: "method", + kindModifiers: "protected" + } + ] + }, + { + text: "A2", + kind: "property", + kindModifiers: "public", + childItems: [ + { + text: "x", + kind: "property" + }, + { + text: "y", + kind: "method" + }, + { + text: "z", + kind: "method" + } + ] + }, + { + text: "A3", + kind: "property", + kindModifiers: "public" + }, + { + text: "A4", + kind: "property", + kindModifiers: "public" + }, + { + text: "A5", + kind: "property", + kindModifiers: "public" + }, + { + text: "A6", + kind: "property", + kindModifiers: "public" + }, + { + text: "[\"A7\"]", + kind: "property", + kindModifiers: "public", + childItems: [ + { + text: "x", + kind: "property", + kindModifiers: "public" + }, + { + text: "y", + kind: "method", + kindModifiers: "private" + }, + { + text: "z", + kind: "method", + kindModifiers: "protected" + } + ] + } + ] + } + ] +}); + +verify.navigationBar([ + { + text: "", + kind: "script", + childItems: [ + { + text: "A", + kind: "class" + } + ] + }, + { + text: "A", + kind: "class", + childItems: [ + { + text: "[1]", + kind: "property", + kindModifiers: "public" + }, + { + text: "A1", + kind: "property", + kindModifiers: "public" + }, + { + text: "A2", + kind: "property", + kindModifiers: "public" + }, + { + text: "A3", + kind: "property", + kindModifiers: "public" + }, + { + text: "A4", + kind: "property", + kindModifiers: "public" + }, + { + text: "A5", + kind: "property", + kindModifiers: "public" + }, + { + text: "A6", + kind: "property", + kindModifiers: "public" + }, + { + text: "[\"A7\"]", + kind: "property", + kindModifiers: "public" + } + ], + indent: 1 + }, + { + text: "[1]", + kind: "property", + kindModifiers: "public", + childItems: [ + { + text: "x", + kind: "property" + }, + { + text: "y", + kind: "method" + }, + { + text: "z", + kind: "method" + } + ], + indent: 2 + }, + { + text: "A1", + kind: "property", + kindModifiers: "public", + childItems: [ + { + text: "x", + kind: "property", + kindModifiers: "public" + }, + { + text: "y", + kind: "method", + kindModifiers: "private" + }, + { + text: "z", + kind: "method", + kindModifiers: "protected" + } + ], + indent: 2 + }, + { + text: "A2", + kind: "property", + kindModifiers: "public", + childItems: [ + { + text: "x", + kind: "property" + }, + { + text: "y", + kind: "method" + }, + { + text: "z", + kind: "method" + } + ], + indent: 2 + }, + { + text: "[\"A7\"]", + kind: "property", + kindModifiers: "public", + childItems: [ + { + text: "x", + kind: "property", + kindModifiers: "public" + }, + { + text: "y", + kind: "method", + kindModifiers: "private" + }, + { + text: "z", + kind: "method", + kindModifiers: "protected" + } + ], + indent: 2 + } +]); diff --git a/tests/cases/fourslash/processInvalidSyntax1.ts b/tests/cases/fourslash/processInvalidSyntax1.ts new file mode 100644 index 0000000000000..6a23cfc2b6922 --- /dev/null +++ b/tests/cases/fourslash/processInvalidSyntax1.ts @@ -0,0 +1,25 @@ +/// + +// @allowJs: true + +// Test validates that language service getChildren() doesn't +// crash due to invalid identifier in unicode.js. + +// @Filename: decl.js +//// var obj = {}; + +// @Filename: unicode1.js +//// obj.𝒜 ; + +// @Filename: unicode2.js +//// obj.¬ ; + +// @Filename: unicode3.js +//// obj¬ + +// @Filename: forof.js +//// for (obj/**/.prop of arr) { +//// +//// } + +verify.baselineRename("", {}); diff --git a/tests/cases/fourslash/quickInfoJsDocTextFormatting1.ts b/tests/cases/fourslash/quickInfoJsDocTextFormatting1.ts new file mode 100644 index 0000000000000..334a01243151f --- /dev/null +++ b/tests/cases/fourslash/quickInfoJsDocTextFormatting1.ts @@ -0,0 +1,101 @@ +/// + +// Regression test for #33386 + +//// /** +//// * @param {number} var1 **Highlighted text** +//// * @param {string} var2 Another **Highlighted text** +//// */ +//// function f1(var1, var2) { } +//// +//// /** +//// * @param {number} var1 *Regular text with an asterisk +//// * @param {string} var2 Another *Regular text with an asterisk +//// */ +//// function f2(var1, var2) { } +//// +//// /** +//// * @param {number} var1 +//// * *Regular text with an asterisk +//// * @param {string} var2 +//// * Another *Regular text with an asterisk +//// */ +//// function f3(var1, var2) { } +//// +//// /** +//// * @param {number} var1 +//// * **Highlighted text** +//// * @param {string} var2 +//// * Another **Highlighted text** +//// */ +//// function f4(var1, var2) { } +//// +//// /** +//// * @param {number} var1 +//// **Highlighted text** +//// * @param {string} var2 +//// Another **Highlighted text** +//// */ +//// function f5(var1, var2) { } +//// +//// f1(/*1*/); +//// f2(/*2*/); +//// f3(/*3*/); +//// f4(/*4*/); +//// f5(/*5*/); + +verify.signatureHelp({ + marker: "1", + parameterDocComment: "**Highlighted text**", + tags: [{ + name: "param", + text: "var1 **Highlighted text**" + }, { + name: "param", + text: "var2 Another **Highlighted text**" + }] +}); +verify.signatureHelp({ + marker: "2", + parameterDocComment: "*Regular text with an asterisk", + tags: [{ + name: "param", + text: "var1 *Regular text with an asterisk" + }, { + name: "param", + text: "var2 Another *Regular text with an asterisk" + }] +}); +verify.signatureHelp({ + marker: "3", + parameterDocComment: "*Regular text with an asterisk", + tags: [{ + name: "param", + text: "var1 *Regular text with an asterisk" + }, { + name: "param", + text: "var2 Another *Regular text with an asterisk" + }] +}); +verify.signatureHelp({ + marker: "4", + parameterDocComment: "**Highlighted text**", + tags: [{ + name: "param", + text: "var1 **Highlighted text**" + }, { + name: "param", + text: "var2 Another **Highlighted text**" + }] +}); +verify.signatureHelp({ + marker: "5", + parameterDocComment: "**Highlighted text**", + tags: [{ + name: "param", + text: "var1 **Highlighted text**" + }, { + name: "param", + text: "var2 Another **Highlighted text**" + }] +}); \ No newline at end of file diff --git a/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interface.ts b/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interface.ts new file mode 100644 index 0000000000000..105c6ac56c940 --- /dev/null +++ b/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interface.ts @@ -0,0 +1,21 @@ +/// + +////interface IFoo { +//// method(x: string, y: string): void; +////} +////const x: IFoo = { +//// method(/*a*/x: string, y: string/*b*/): void {}, +////}; + +goTo.select("a", "b"); +edit.applyRefactor({ + refactorName: "Convert parameters to destructured object", + actionName: "Convert parameters to destructured object", + actionDescription: "Convert parameters to destructured object", + newContent: `interface IFoo { + method({ x, y }: { x: string; y: string; }): void; +} +const x: IFoo = { + method({ x, y }: { x: string; y: string; }): void {}, +};` +}); diff --git a/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interfaceAssignability.ts b/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interfaceAssignability.ts new file mode 100644 index 0000000000000..d5ab8cab64119 --- /dev/null +++ b/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interfaceAssignability.ts @@ -0,0 +1,21 @@ +/// + +////interface IFoo { +//// method(x: string, y: string): void; +////} +////const x: IFoo = { +//// method(/*a*/x: string, y: string, z?: string/*b*/): void {}, +////}; + +goTo.select("a", "b"); +edit.applyRefactor({ + refactorName: "Convert parameters to destructured object", + actionName: "Convert parameters to destructured object", + actionDescription: "Convert parameters to destructured object", + newContent: `interface IFoo { + method({ x, y }: { x: string; y: string; }): void; +} +const x: IFoo = { + method({ x, y, z }: { x: string; y: string; z?: string; }): void {}, +};` +}); diff --git a/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interfaceContextualParams.ts b/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interfaceContextualParams.ts new file mode 100644 index 0000000000000..af00cbc82a97f --- /dev/null +++ b/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interfaceContextualParams.ts @@ -0,0 +1,28 @@ +/// + +////interface IFoo { +//// method(x: string, y: string): void; +////} +////const x: IFoo = { +//// method(/*a*/x, y/*b*/): void {}, +////}; + +/* +When there are no type annotations on the params in the implementation, we ultimately +would like to handle them like we do for calls resulting in `method({x, y}) {}`. + +Note that simply adding the annotations from the signature can fail as the implementation +can take more paramters than the signatures. +*/ +goTo.select("a", "b"); +edit.applyRefactor({ + refactorName: "Convert parameters to destructured object", + actionName: "Convert parameters to destructured object", + actionDescription: "Convert parameters to destructured object", + newContent: `interface IFoo { + method({ x, y }: { x: string; y: string; }): void; +} +const x: IFoo = { + method({ x, y }: { x; y; }): void {}, +};` +}); diff --git a/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interfaceMultipleSignatures.ts b/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interfaceMultipleSignatures.ts new file mode 100644 index 0000000000000..b21fb473bcdcd --- /dev/null +++ b/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interfaceMultipleSignatures.ts @@ -0,0 +1,14 @@ +/// + +////interface IFoo { +//// method(x: string, y: string): void; +//// method(x: number, y: string): void; +////} +////const x: IFoo = { +//// method(/*a*/x: string | number, y: string/*b*/): void {}, +////}; + +// For multiple signatures, we don't have a reliable way to determine +// which signature to match to or if all signatures should be changed. +goTo.select("a", "b"); +verify.not.refactorAvailable("Convert parameters to destructured object"); diff --git a/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interfaceNoIntersection.ts b/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interfaceNoIntersection.ts new file mode 100644 index 0000000000000..0a7230f3419f5 --- /dev/null +++ b/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interfaceNoIntersection.ts @@ -0,0 +1,14 @@ +/// + +////interface IFoo { +//// method(x: string, y: string): void; +////} +////interface IBar { +//// method(x: number): void; +////} +////const x: IFoo & IBar = { +//// method(/*a*/x: string, y: string/*b*/): void {}, +////}; + +goTo.select("a", "b"); +verify.not.refactorAvailable("Convert parameters to destructured object"); diff --git a/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interfaceNoUnion.ts b/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interfaceNoUnion.ts new file mode 100644 index 0000000000000..ceafa7282e02b --- /dev/null +++ b/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_interfaceNoUnion.ts @@ -0,0 +1,14 @@ +/// + +////interface IFoo { +//// method(x: string, y: string): void; +////} +////interface IBar { +//// method(x: number): void; +////} +////const x: IFoo | IBar = { +//// method(/*a*/x: string, y: string/*b*/): void {}, +////}; + +goTo.select("a", "b"); +verify.not.refactorAvailable("Convert parameters to destructured object"); diff --git a/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_typeLiteral.ts b/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_typeLiteral.ts new file mode 100644 index 0000000000000..79f6951562ddf --- /dev/null +++ b/tests/cases/fourslash/refactorConvertParamsToDestructuredObject_typeLiteral.ts @@ -0,0 +1,21 @@ +/// + +////type Foo = { +//// method(x: string, y: string): void; +////} +////const x: Foo = { +//// method(/*a*/x: string, y: string/*b*/): void {}, +////}; + +goTo.select("a", "b"); +edit.applyRefactor({ + refactorName: "Convert parameters to destructured object", + actionName: "Convert parameters to destructured object", + actionDescription: "Convert parameters to destructured object", + newContent: `type Foo = { + method({ x, y }: { x: string; y: string; }): void; +} +const x: Foo = { + method({ x, y }: { x: string; y: string; }): void {}, +};` +}); diff --git a/tests/cases/fourslash/signatureHelpLeadingRestTuple.ts b/tests/cases/fourslash/signatureHelpLeadingRestTuple.ts new file mode 100644 index 0000000000000..45c3382d32fb2 --- /dev/null +++ b/tests/cases/fourslash/signatureHelpLeadingRestTuple.ts @@ -0,0 +1,32 @@ +/// + +////export function leading(...args: [...names: string[], allCaps: boolean]): void { +////} +//// +////leading(/*1*/); +////leading("ok", /*2*/); +////leading("ok", "ok", /*3*/); + +verify.signatureHelp( + { + marker: "1", + text: "leading(...names: string[], allCaps: boolean): void", + overloadsCount: 1, + parameterCount: 2, + isVariadic: true, + }, + { + marker: "2", + text: "leading(...names: string[], allCaps: boolean): void", + overloadsCount: 1, + parameterCount: 2, + isVariadic: true, + }, + { + marker: "3", + text: "leading(...names: string[], allCaps: boolean): void", + overloadsCount: 1, + parameterCount: 2, + isVariadic: true, + }, +); diff --git a/tests/cases/fourslash/signatureHelpTrailingRestTuple.ts b/tests/cases/fourslash/signatureHelpTrailingRestTuple.ts new file mode 100644 index 0000000000000..86dde9b398275 --- /dev/null +++ b/tests/cases/fourslash/signatureHelpTrailingRestTuple.ts @@ -0,0 +1,38 @@ +/// + +////export function leading(allCaps: boolean, ...names: string[]): void { +////} +//// +////leading(/*1*/); +////leading(false, /*2*/); +////leading(false, "ok", /*3*/); + +verify.signatureHelp( + { + marker: "1", + text: "leading(allCaps: boolean, ...names: string[]): void", + overloadsCount: 1, + parameterCount: 2, + parameterName: "allCaps", + parameterSpan: "allCaps: boolean", + isVariadic: true, + }, + { + marker: "2", + text: "leading(allCaps: boolean, ...names: string[]): void", + overloadsCount: 1, + parameterCount: 2, + parameterName: "names", + parameterSpan: "...names: string[]", + isVariadic: true, + }, + { + marker: "3", + text: "leading(allCaps: boolean, ...names: string[]): void", + overloadsCount: 1, + parameterCount: 2, + parameterName: "names", + parameterSpan: "...names: string[]", + isVariadic: true, + }, +); diff --git a/tests/cases/fourslash/tsxCompletionOnOpeningTagWithoutJSX1.ts b/tests/cases/fourslash/tsxCompletionOnOpeningTagWithoutJSX1.ts index c7f3b3f26bebb..256c4280f856d 100644 --- a/tests/cases/fourslash/tsxCompletionOnOpeningTagWithoutJSX1.ts +++ b/tests/cases/fourslash/tsxCompletionOnOpeningTagWithoutJSX1.ts @@ -1,6 +1,7 @@ /// //@Filename: file.tsx -//// var x = { + current: T; + } + + type ForwardedRef = ((instance: T | null) => void) | MutableRefObject | null; + + interface ForwardRefRenderFunction { + (props: PropsWithChildren

, ref: ForwardedRef): ReactElement | null; + displayName?: string; + // explicit rejected with `never` required due to + // https://github.com/microsoft/TypeScript/issues/36826 + /** + * defaultProps are not supported on render functions + */ + defaultProps?: never; + /** + * propTypes are not supported on render functions + */ + propTypes?: never; + } + + function createRef(): RefObject; + + type WeakValidationMap = { + [K in keyof T]?: null extends T[K] + ? Validator + : undefined extends T[K] + ? Validator + : Validator + }; + + // will show `ForwardRef(${Component.displayName || Component.name})` in devtools by default, + // but can be given its own specific name + interface ForwardRefExoticComponent

extends NamedExoticComponent

{ + defaultProps?: Partial

; + propTypes?: WeakValidationMap

; + } + + function forwardRef(render: ForwardRefRenderFunction): ForwardRefExoticComponent & RefAttributes>; + + /** Ensures that the props do not include ref at all */ + type PropsWithoutRef

= + // Just Pick would be sufficient for this, but I'm trying to avoid unnecessary mapping over union types + // https://github.com/Microsoft/TypeScript/issues/28339 + 'ref' extends keyof P + ? Pick> + : P; + /** Ensures that the props do not include string ref, which cannot be forwarded */ + type PropsWithRef

= + // Just "P extends { ref?: infer R }" looks sufficient, but R will infer as {} if P is {}. + 'ref' extends keyof P + ? P extends { ref?: infer R } + ? string extends R + ? PropsWithoutRef

& { ref?: Exclude } + : P + : P + : P; + + type PropsWithChildren

= P & { children?: ReactNode }; + type JSXElementConstructor

= + | ((props: P) => ReactElement | null) + | (new (props: P) => Component); + type ElementType

= + { + [K in keyof JSX.IntrinsicElements]: P extends JSX.IntrinsicElements[K] ? K : never + }[keyof JSX.IntrinsicElements] | + ComponentType

; + + interface RefAttributes extends Attributes { + ref?: Ref; + } + + /** + * NOTE: prefer ComponentPropsWithRef, if the ref is forwarded, + * or ComponentPropsWithoutRef when refs are not supported. + */ + type ComponentProps> = + T extends JSXElementConstructor + ? P + : T extends keyof JSX.IntrinsicElements + ? JSX.IntrinsicElements[T] + : {}; + type ComponentPropsWithRef = + T extends ComponentClass + ? PropsWithoutRef

& RefAttributes> + : PropsWithRef>; + type ComponentPropsWithoutRef = + PropsWithoutRef>; + + // will show `Memo(${Component.displayName || Component.name})` in devtools by default, + // but can be given its own specific name + type MemoExoticComponent> = NamedExoticComponent> & { + readonly type: T; + }; + + function memo

( + Component: SFC

, + propsAreEqual?: (prevProps: Readonly>, nextProps: Readonly>) => boolean + ): NamedExoticComponent

; + function memo>( + Component: T, + propsAreEqual?: (prevProps: Readonly>, nextProps: Readonly>) => boolean + ): MemoExoticComponent; + + type LazyExoticComponent> = ExoticComponent> & { + readonly _result: T; + }; + + function lazy>( + factory: () => Promise<{ default: T }> + ): LazyExoticComponent; + + interface ExoticComponent

{ + /** + * **NOTE**: Exotic components are not callable. + */ + (props: P): (ReactElement|null); + readonly $$typeof: symbol; + } + + interface NamedExoticComponent

extends ExoticComponent

{ + displayName?: string; + } } // Declared props take priority over inferred props