From 69d74a278d3098738b66baacaa487251d8638678 Mon Sep 17 00:00:00 2001 From: Code Date: Sat, 25 Jan 2025 14:23:40 +0100 Subject: [PATCH] esm --- packages/i18n/README.md | 4 +- packages/i18n/dist/_cli.d.ts | 3 + packages/i18n/dist/_cli.js | 60 + packages/i18n/dist/commands/glossary.d.ts | 1 + packages/i18n/dist/commands/glossary.js | 92 + packages/i18n/dist/commands/info.d.ts | 1 + packages/i18n/dist/commands/info.js | 53 + packages/i18n/dist/commands/translate.d.ts | 1 + packages/i18n/dist/commands/translate.js | 109 + packages/i18n/dist/constants.d.ts | 6 + packages/i18n/dist/constants.js | 7 + packages/i18n/dist/index.d.ts | 9 + packages/i18n/dist/index.js | 11 + packages/i18n/dist/lib/async-iterator.d.ts | 21 + packages/i18n/dist/lib/async-iterator.js | 91 + packages/i18n/dist/lib/cache.d.ts | 1 + packages/i18n/dist/lib/cache.js | 2 + packages/i18n/dist/lib/codes.d.ts | 742 +++++++ packages/i18n/dist/lib/codes.js | 1950 +++++++++++++++++ packages/i18n/dist/lib/deepl.d.ts | 37 + packages/i18n/dist/lib/deepl.js | 53 + packages/i18n/dist/lib/filters.d.ts | 4 + packages/i18n/dist/lib/filters.js | 43 + packages/i18n/dist/lib/glossary.d.ts | 16 + packages/i18n/dist/lib/glossary.js | 101 + packages/i18n/dist/lib/index.d.ts | 4 + packages/i18n/dist/lib/index.js | 5 + packages/i18n/dist/lib/store.d.ts | 4 + packages/i18n/dist/lib/store.js | 37 + packages/i18n/dist/lib/strings.d.ts | 2 + packages/i18n/dist/lib/strings.js | 4 + packages/i18n/dist/lib/test_data.d.ts | 1 + packages/i18n/dist/lib/test_data.js | 129 ++ packages/i18n/dist/lib/translate.d.ts | 28 + packages/i18n/dist/lib/translate.js | 438 ++++ packages/i18n/dist/lib/types.d.ts | 1 + packages/i18n/dist/lib/types.js | 2 + packages/i18n/dist/main.d.ts | 2 + packages/i18n/dist/main.js | 19 + packages/i18n/dist/options.d.ts | 4 + packages/i18n/dist/options.js | 143 ++ packages/i18n/dist/speech/google.d.ts | 1 + .../google.ts => dist/speech/google.js} | 28 +- packages/i18n/dist/types.d.ts | 37 + packages/i18n/dist/types.js | 2 + packages/i18n/dist/zod_schema.d.ts | 7 + packages/i18n/dist/zod_schema.js | 10 + packages/i18n/dist/zod_types.d.ts | 1 + packages/i18n/dist/zod_types.js | 2 + packages/i18n/docs/Integration.md | 2 +- packages/i18n/package-lock.json | 230 +- packages/i18n/package.json | 13 +- packages/i18n/scripts/create-glossary-de.sh | 2 +- packages/i18n/src/_cli.ts | 6 +- packages/i18n/src/commands/glossary.ts | 16 +- packages/i18n/src/commands/info.ts | 6 +- packages/i18n/src/commands/translate.ts | 10 +- packages/i18n/src/index.ts | 19 +- packages/i18n/src/lib/async-iterator.ts | 6 +- packages/i18n/src/lib/cache.ts | 7 - packages/i18n/src/lib/deepl.ts | 8 +- packages/i18n/src/lib/filters.ts | 4 +- packages/i18n/src/lib/glossary.ts | 20 +- packages/i18n/src/lib/index.ts | 8 +- packages/i18n/src/lib/store.ts | 6 +- packages/i18n/src/lib/translate.ts | 38 +- packages/i18n/src/main.ts | 8 +- packages/i18n/src/options.ts | 13 +- packages/i18n/src/types.ts | 4 +- 69 files changed, 4513 insertions(+), 242 deletions(-) create mode 100644 packages/i18n/dist/_cli.d.ts create mode 100644 packages/i18n/dist/_cli.js create mode 100644 packages/i18n/dist/commands/glossary.d.ts create mode 100644 packages/i18n/dist/commands/glossary.js create mode 100644 packages/i18n/dist/commands/info.d.ts create mode 100644 packages/i18n/dist/commands/info.js create mode 100644 packages/i18n/dist/commands/translate.d.ts create mode 100644 packages/i18n/dist/commands/translate.js create mode 100644 packages/i18n/dist/constants.d.ts create mode 100644 packages/i18n/dist/constants.js create mode 100644 packages/i18n/dist/index.d.ts create mode 100644 packages/i18n/dist/index.js create mode 100644 packages/i18n/dist/lib/async-iterator.d.ts create mode 100644 packages/i18n/dist/lib/async-iterator.js create mode 100644 packages/i18n/dist/lib/cache.d.ts create mode 100644 packages/i18n/dist/lib/cache.js create mode 100644 packages/i18n/dist/lib/codes.d.ts create mode 100644 packages/i18n/dist/lib/codes.js create mode 100644 packages/i18n/dist/lib/deepl.d.ts create mode 100644 packages/i18n/dist/lib/deepl.js create mode 100644 packages/i18n/dist/lib/filters.d.ts create mode 100644 packages/i18n/dist/lib/filters.js create mode 100644 packages/i18n/dist/lib/glossary.d.ts create mode 100644 packages/i18n/dist/lib/glossary.js create mode 100644 packages/i18n/dist/lib/index.d.ts create mode 100644 packages/i18n/dist/lib/index.js create mode 100644 packages/i18n/dist/lib/store.d.ts create mode 100644 packages/i18n/dist/lib/store.js create mode 100644 packages/i18n/dist/lib/strings.d.ts create mode 100644 packages/i18n/dist/lib/strings.js create mode 100644 packages/i18n/dist/lib/test_data.d.ts create mode 100644 packages/i18n/dist/lib/test_data.js create mode 100644 packages/i18n/dist/lib/translate.d.ts create mode 100644 packages/i18n/dist/lib/translate.js create mode 100644 packages/i18n/dist/lib/types.d.ts create mode 100644 packages/i18n/dist/lib/types.js create mode 100644 packages/i18n/dist/main.d.ts create mode 100644 packages/i18n/dist/main.js create mode 100644 packages/i18n/dist/options.d.ts create mode 100644 packages/i18n/dist/options.js create mode 100644 packages/i18n/dist/speech/google.d.ts rename packages/i18n/{src/speech/google.ts => dist/speech/google.js} (59%) create mode 100644 packages/i18n/dist/types.d.ts create mode 100644 packages/i18n/dist/types.js create mode 100644 packages/i18n/dist/zod_schema.d.ts create mode 100644 packages/i18n/dist/zod_schema.js create mode 100644 packages/i18n/dist/zod_types.d.ts create mode 100644 packages/i18n/dist/zod_types.js diff --git a/packages/i18n/README.md b/packages/i18n/README.md index cfbca79b..ad5e31a4 100644 --- a/packages/i18n/README.md +++ b/packages/i18n/README.md @@ -6,7 +6,7 @@ Currently translates Markdown directories using [DeepL](deepl.com) API. 1. Install from NPM ```sh - npm i -g @plastichub/osr-i18n + npm i -g @polymech/osr-i18n ``` 2. Define an environment variable on your system `OSR-CONFIG` which holds the path to a json file, eg: `C:\Users\nobody-likeyou\.osr\config.json` with the following content (see [./docs/config.json](./docs/config.json) example): @@ -100,7 +100,7 @@ osr-i18n translate --src="./**/*.md" --cwd='source directory' --dst='target dire ```sh -osr-i18n glossary create --name="pp" --src="${OSR_ROOT}/osr-commons/i18n/glossary/en/de/*.csv" --srcLang="EN" --dstLang="DE" +osr-i18n glossary create --name="pp" --src="${OSR_ROOT}/commons/i18n/glossary/en/de/*.csv" --srcLang="EN" --dstLang="DE" ``` diff --git a/packages/i18n/dist/_cli.d.ts b/packages/i18n/dist/_cli.d.ts new file mode 100644 index 00000000..dac5340f --- /dev/null +++ b/packages/i18n/dist/_cli.d.ts @@ -0,0 +1,3 @@ +import { IOptions } from './types.js'; +export declare const defaults: () => void; +export declare const sanitize: (argv: any) => IOptions | boolean; diff --git a/packages/i18n/dist/_cli.js b/packages/i18n/dist/_cli.js new file mode 100644 index 00000000..b3dda56f --- /dev/null +++ b/packages/i18n/dist/_cli.js @@ -0,0 +1,60 @@ +import * as path from 'path'; +import { sync as exists } from '@polymech/fs/exists'; +import { logger } from './index.js'; +export const defaults = () => { + const DefaultCommand = 'info'; + if (process.argv.length === 2) { + process.argv.push(DefaultCommand); + } + process.on('unhandledRejection', (reason) => { + console.error('Unhandled rejection, reason: ', reason); + }); +}; +export const sanitize = (argv) => { + let ret = { + all: argv.all, + src: argv.src, + dst: argv.dst, + dry: argv.dry, + alt: argv.alt, + srcLang: argv.srcLang, + dstLang: argv.dstLang || 'EN', + formality: argv.formality, + debug: argv.debug, + text: argv.text, + query: argv.query, + glossary: argv.glossary, + createGlossary: argv.createGlossary, + cache: argv.cache, + api_key: argv.api_key, + keys: argv.keys, + storeRoot: argv.storeRoot, + store: argv.store, + logLevel: argv.logLevel, + logger: argv.logger + }; + if (!argv.src && !argv.text) { + logger.error("No source path or text specified!"); + return false; + } + if (!argv.dstLang) { + logger.error("No target language specified!"); + return false; + } + if (argv.cwd) { + ret.cwd = path.resolve(argv.cwd); + if (!exists((ret.cwd))) { + ret.debug && logger.error(`Invalid working directory ${argv.cwd}`); + ret.cwd = process.cwd(); + } + } + else { + ret.cwd = process.cwd(); + } + ret = { + ...ret, + ...{ variables: {} } + }; + return ret; +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX2NsaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9fY2xpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBQzVCLE9BQU8sRUFBRSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFFcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUVuQyxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsR0FBRyxFQUFFO0lBQ3pCLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQztJQUM5QixJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUMzQixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztLQUNyQztJQUVELE9BQU8sQ0FBQyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxNQUFjLEVBQUUsRUFBRTtRQUNoRCxPQUFPLENBQUMsS0FBSyxDQUFDLCtCQUErQixFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzNELENBQUMsQ0FBQyxDQUFBO0FBQ04sQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsSUFBUyxFQUFzQixFQUFFO0lBRXRELElBQUksR0FBRyxHQUFRO1FBQ1gsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1FBQ2IsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1FBQ2IsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1FBQ2IsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1FBQ2IsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1FBQ2IsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1FBQ3JCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUk7UUFDN0IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1FBQ3pCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztRQUNqQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7UUFDZixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7UUFDakIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1FBQ3ZCLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYztRQUNuQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7UUFDakIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1FBQ3JCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtRQUNmLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztRQUN6QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7UUFDakIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1FBQ3ZCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtLQUN0QixDQUFBO0lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1FBQ3pCLE1BQU0sQ0FBQyxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQTtRQUNqRCxPQUFPLEtBQUssQ0FBQTtLQUNmO0lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7UUFDZixNQUFNLENBQUMsS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUE7UUFDN0MsT0FBTyxLQUFLLENBQUE7S0FDZjtJQUVELElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNWLEdBQUcsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQ3BCLEdBQUcsQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUE7WUFDbEUsR0FBRyxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUE7U0FDMUI7S0FDSjtTQUFNO1FBQ0gsR0FBRyxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUE7S0FDMUI7SUFFRCxHQUFHLEdBQUc7UUFDRixHQUFHLEdBQUc7UUFDTixHQUFHLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtLQUN2QixDQUFBO0lBRUQsT0FBTyxHQUFHLENBQUE7QUFDZCxDQUFDLENBQUEifQ== \ No newline at end of file diff --git a/packages/i18n/dist/commands/glossary.d.ts b/packages/i18n/dist/commands/glossary.d.ts new file mode 100644 index 00000000..e4aa7e05 --- /dev/null +++ b/packages/i18n/dist/commands/glossary.d.ts @@ -0,0 +1 @@ +export declare const register: (cli: CLI.Argv) => any; diff --git a/packages/i18n/dist/commands/glossary.js b/packages/i18n/dist/commands/glossary.js new file mode 100644 index 00000000..a1a16d1d --- /dev/null +++ b/packages/i18n/dist/commands/glossary.js @@ -0,0 +1,92 @@ +import * as path from 'path'; +const globBase = require('glob-base'); +import { pairs } from '../lib/glossary.js'; +import { defaults, sanitize } from '../_cli.js'; +import { parse } from '../options.js'; +import { logger } from '../index.js'; +import { CONFIG_DEFAULT } from '@polymech/commons'; +import { resolve } from "@polymech/commons/variables"; +import pMap from 'p-map'; +const defaultOptions = (yargs) => { + return yargs.option('debug', { + default: false, + describe: 'debug messages', + type: 'boolean' + }).option('env_key', { + default: 'OSR-CONFIG', + describe: 'Environment key to the config path.' + }).option('src', { + describe: 'Path to the input file(s). Glob patters are supported', + }).option('dst', { + describe: 'Target file', + }).option('dst', { + describe: 'Path to the output file(s). Glob patters are supported', + default: '${SRC_DIR}/${DST_LANG}/${SRC_NAME}${SRC_EXT}' + }).option('srcLang', { + describe: 'Source language. Please run `osr-i18n info to see all supported languages`', + default: '' + }).option('cache', { + describe: 'Cache directory', + default: '${ROOT}/.osr/cache/i18n' + }).option('dstLang', { + describe: 'Target Language. Please run `osr-i18n info to see all supported languages`', + default: 'DE' + }).option('name', { + describe: 'Name of the glossary', + default: 'osr-i18n-store' + }).option('alt', { + default: false, + describe: 'Use alternate tokenizer, & instead of $', + type: 'boolean' + }); +}; +let options = (yargs) => defaultOptions(yargs); +export const register = (cli) => { + return cli.command('glossary ', 'Manages glossaries on DeepL', options, async (argv) => { + defaults(); + if (argv.help) { + return; + } + const args = argv; + const config = CONFIG_DEFAULT(args.env_key); + const verb = argv.verb; + if (verb === 'create') { + let options = sanitize(argv); + if (!options) { + logger.error(`Invalid options, abort`); + return; + } + let opts = parse(options, args); + opts.config = config; + if (!opts.srcInfo) { + logger.error(`Invalid source : ${argv.src}`, opts); + return; + } + if (opts.srcInfo.IS_GLOB) { + const glob_base = globBase(opts.src); + opts.pathVariables.ROOT = path.resolve(glob_base.base); + } + else { + options.pathVariables.ROOT = path.resolve(opts.cwd); + } + opts.pathVariables['DST_LANG'] = opts.dstLang.toLocaleLowerCase(); + opts.pathVariables['SRC_LANG'] = opts.srcLang.toLocaleLowerCase(); + opts.pathVariables['CWD'] = path.resolve(opts.cwd); + if (!opts.srcInfo || (opts.srcInfo && !opts.srcInfo.FILES)) { + logger.error(`Have no source files for ${opts.src}`); + return; + } + if (opts.srcInfo && opts.srcInfo.FILES) { + await pMap(opts.srcInfo.FILES, async (files) => { + await pMap(files, (source) => { + //return create(options.srcLang, options.dstLang, options, source) + }, { concurrency: 1 }); + }); + } + } + if (verb === 'pairs' && argv.dst) { + await pairs(config.deepl, path.resolve(resolve(argv.dst))); + } + }); +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvc3NhcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvZ2xvc3NhcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUE7QUFFNUIsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0FBQ3JDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUUxQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUMvQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRXJDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFcEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUNyRCxPQUFPLElBQUksTUFBTSxPQUFPLENBQUE7QUFFeEIsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFlLEVBQUUsRUFBRTtJQUN2QyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1FBQ3pCLE9BQU8sRUFBRSxLQUFLO1FBQ2QsUUFBUSxFQUFFLGdCQUFnQjtRQUMxQixJQUFJLEVBQUUsU0FBUztLQUNsQixDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtRQUNqQixPQUFPLEVBQUUsWUFBWTtRQUNyQixRQUFRLEVBQUUscUNBQXFDO0tBQ2xELENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1FBQ2IsUUFBUSxFQUFFLHVEQUF1RDtLQUNwRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtRQUNiLFFBQVEsRUFBRSxhQUFhO0tBQzFCLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1FBQ2IsUUFBUSxFQUFFLHdEQUF3RDtRQUNsRSxPQUFP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 \ No newline at end of file diff --git a/packages/i18n/dist/commands/info.d.ts b/packages/i18n/dist/commands/info.d.ts new file mode 100644 index 00000000..e4aa7e05 --- /dev/null +++ b/packages/i18n/dist/commands/info.d.ts @@ -0,0 +1 @@ +export declare const register: (cli: CLI.Argv) => any; diff --git a/packages/i18n/dist/commands/info.js b/packages/i18n/dist/commands/info.js new file mode 100644 index 00000000..4957caad --- /dev/null +++ b/packages/i18n/dist/commands/info.js @@ -0,0 +1,53 @@ +import { CONFIG_DEFAULT } from '@polymech/commons'; +import { logger } from '../index.js'; +const defaultOptions = (yargs) => { + return yargs.option('debug', { + default: 'false', + describe: 'debug messages' + }).option('env_key', { + default: 'OSR-CONFIG', + describe: 'Environment key to the config path' + }); +}; +let options = (yargs) => defaultOptions(yargs); +export const register = (cli) => { + return cli.command('info', 'info', options, async (argv) => { + if (argv.help) { + return; + } + const args = argv; + const src = CONFIG_DEFAULT(args.env_key); + logger.debug(`Reading OSR Config with key "${argv.env_key}"`, src.deepl); + logger.info(`Supported languages \n + | 'BG' + | 'CS' + | 'DA' + | 'DE' + | 'EL' + | 'EN-GB' + | 'EN-US' + | 'EN' + | 'ES' + | 'ET' + | 'FI' + | 'FR' + | 'HU' + | 'IT' + | 'JA' + | 'LT' + | 'LV' + | 'NL' + | 'PL' + | 'PT-PT' + | 'PT-BR' + | 'PT' + | 'RO' + | 'RU' + | 'SK' + | 'SL' + | 'SV' + | 'ZH' + `); + }); +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9pbmZvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRXBDLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBZSxFQUFFLEVBQUU7SUFDdkMsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRTtRQUN6QixPQUFPLEVBQUUsT0FBTztRQUNoQixRQUFRLEVBQUUsZ0JBQWdCO0tBQzdCLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFO1FBQ2pCLE9BQU8sRUFBQyxZQUFZO1FBQ3BCLFFBQVEsRUFBQyxvQ0FBb0M7S0FDaEQsQ0FBQyxDQUFBO0FBQ04sQ0FBQyxDQUFBO0FBRUQsSUFBSSxPQUFPLEdBQUcsQ0FBQyxLQUFlLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUV4RCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFhLEVBQUUsRUFBRTtJQUN0QyxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQW1CLEVBQUUsRUFBRTtRQUN0RSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFBRSxPQUFNO1NBQUU7UUFDekIsTUFBTSxJQUFJLEdBQU8sSUFBSSxDQUFBO1FBQ3JCLE1BQU0sR0FBRyxHQUFPLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDNUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN4RSxNQUFNLENBQUMsSUFBSSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQTZCWCxDQUFDLENBQUE7SUFDTixDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQSJ9 \ No newline at end of file diff --git a/packages/i18n/dist/commands/translate.d.ts b/packages/i18n/dist/commands/translate.d.ts new file mode 100644 index 00000000..e4aa7e05 --- /dev/null +++ b/packages/i18n/dist/commands/translate.d.ts @@ -0,0 +1 @@ +export declare const register: (cli: CLI.Argv) => any; diff --git a/packages/i18n/dist/commands/translate.js b/packages/i18n/dist/commands/translate.js new file mode 100644 index 00000000..e6e294b6 --- /dev/null +++ b/packages/i18n/dist/commands/translate.js @@ -0,0 +1,109 @@ +import { CONFIG_DEFAULT } from '@polymech/commons'; +import { translate } from '../lib/translate.js'; +import { defaults, sanitize } from '../_cli.js'; +import { logger } from '../index.js'; +const defaultOptions = (yargs) => { + return yargs.option('debug', { + default: false, + describe: 'debug messages', + type: 'boolean' + }).option('dry', { + default: false, + describe: 'Process files for debug purposes only.', + type: 'boolean' + }).option('env_key', { + default: 'OSR-CONFIG', + describe: 'Environment key to the config path.' + }).option('src', { + describe: 'Path to the input file(s). Glob patters are supported', + }).option('dst', { + describe: 'Path to the output file(s). Glob patters are supported', + default: '${SRC_DIR}/${DST_LANG}/${SRC_NAME}${SRC_EXT}' + }).option('formality', { + describe: 'Formality: default|more|less', + default: 'default' + }).option('srcLang', { + describe: 'Source language. Please run `osr-i18n info to see all supported languages`', + default: '' + }).option('cache', { + describe: 'Cache directory', + default: '${ROOT}/.osr/cache/i18n' + }).option('dstLang', { + describe: 'Target Language. Please run `osr-i18n info to see all supported languages`', + default: 'DE' + }).option('text', { + describe: 'Translate a given text only.' + }).option('all', { + describe: 'Return all translations, only supported for --text', + default: false, + type: 'boolean' + }).option('alt', { + default: false, + describe: 'Use alternate tokenizer, & instead of $', + type: 'boolean' + }).option('cache', { + default: false, + describe: 'Enable cache', + type: 'boolean' + }).option('glossary', { + default: false, + describe: 'Enable glossary files (see osr-i18n-store/glossary)', + type: 'boolean' + }).option('createGlossary', { + default: true, + describe: 'Automatically create glossary files (see osr-i18n-store/glossary)', + type: 'boolean' + }).option('filters', { + default: false, + describe: 'Comma separated list of filters. Currently implemented : `Hugo`', + type: 'string' + }).option('keys', { + describe: 'Comma separated list of keys to be translated for key/value files.', + type: 'string' + }).option('query', { + describe: 'JSONPath query for JSON and XLSX files. See https://jsonpath-plus.github.io/JSONPath/demo/, eg: $[*][0,4] to select the first and fifth column of each xlsx file', + type: 'string' + }).option('dumpJSON', { + describe: 'In case of XLSX files, dump the JSON raw data', + type: 'boolean', + default: false + }).option('storeRoot', { + describe: 'i18n store root for glossaries', + type: 'string', + default: '${OSR_ROOT}/i18n-store/' + }).option('store', { + describe: 'Language store cache file', + type: 'string', + default: '${OSR_ROOT}/i18n-store/store-${DST_LANG}.json' + }).option('csv-store', { + default: false, + describe: 'Generate CSV files for the store (manual editing)', + type: 'boolean' + }).option('stdout', { + default: true, + describe: 'Output to stdout', + type: 'boolean' + }).option('logLevel', { + default: 'warn', + describe: 'Log level: silly|debug|trace|info|warn|error|fatal', + type: 'string' + }); +}; +let options = (yargs) => defaultOptions(yargs); +export const register = (cli) => { + return cli.command('translate', 'Translates text via DeepL', options, async (argv) => { + defaults(); + if (argv.help) { + return; + } + const args = argv; + const config = CONFIG_DEFAULT(args.env_key); + let options = sanitize(argv); + if (!options) { + logger.error(`Invalid options, abort`); + return; + } + await translate({ ...options, api_key: config.deepl.auth_key }); + }); +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3RyYW5zbGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRS9DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFcEMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFlLEVBQUUsRUFBRTtJQUN2QyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1FBQ3pCLE9BQU8sRUFBRSxLQUFLO1FBQ2QsUUFBUSxFQUFFLGdCQUFnQjtRQUMxQixJQUFJLEVBQUUsU0FBUztLQUNsQixDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtRQUNiLE9BQU8sRUFBRSxLQUFLO1FBQ2QsUUFBUSxFQUFFLHdDQUF3QztRQUNsRCxJQUFJLEVBQUUsU0FBUztLQUNsQixDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtRQUNqQixPQUFPLEVBQUUsWUFBWTtRQUNyQixRQUFRLEVBQUUscUNBQXFDO0tBQ2xELENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1FBQ2IsUUFBUSxFQUFFLHVEQUF1RDtLQUNwRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtRQUNiLFFBQVEsRUFBRSx3REFBd0Q7UUFDbEUsT0FBTyxFQUFFLDhDQUE4QztLQUMxRCxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRTtRQUNuQixRQUFRLEVBQUUsOEJBQThCO1FBQ3hDLE9BQU8sRUFBRSxTQUFTO0tBQ3JCLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFO1FBQ2pCLFFBQVEsRUFBRSw0RUFBNEU7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 \ No newline at end of file diff --git a/packages/i18n/dist/constants.d.ts b/packages/i18n/dist/constants.d.ts new file mode 100644 index 00000000..1a585e7e --- /dev/null +++ b/packages/i18n/dist/constants.d.ts @@ -0,0 +1,6 @@ +export declare const MODULE_NAME = "OSR-i18n"; +export declare const GLOSSARY_FILE_EXT = ".csv"; +export declare const GLOSSARY_FILES = "${OSR_ROOT}/i18n-store/glossary"; +export declare const GLOSSARY_FILE_NAME = "index.csv"; +export declare const GLOSSARY_INFO_FILE = "index_glossary.json"; +export declare const GLOSSARY_INFO_FILE_SUFFIX = "_glossary.json"; diff --git a/packages/i18n/dist/constants.js b/packages/i18n/dist/constants.js new file mode 100644 index 00000000..e7c68262 --- /dev/null +++ b/packages/i18n/dist/constants.js @@ -0,0 +1,7 @@ +export const MODULE_NAME = `OSR-i18n`; +export const GLOSSARY_FILE_EXT = '.csv'; +export const GLOSSARY_FILES = '${OSR_ROOT}/i18n-store/glossary'; +export const GLOSSARY_FILE_NAME = 'index.csv'; +export const GLOSSARY_INFO_FILE = 'index_glossary.json'; +export const GLOSSARY_INFO_FILE_SUFFIX = '_glossary.json'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFBO0FBRXJDLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQTtBQUN2QyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsaUNBQWlDLENBQUE7QUFDL0QsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsV0FBVyxDQUFBO0FBQzdDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLHFCQUFxQixDQUFBO0FBQ3ZELE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLGdCQUFnQixDQUFBIn0= \ No newline at end of file diff --git a/packages/i18n/dist/index.d.ts b/packages/i18n/dist/index.d.ts new file mode 100644 index 00000000..2b7cce53 --- /dev/null +++ b/packages/i18n/dist/index.d.ts @@ -0,0 +1,9 @@ +export { Logger } from 'tslog'; +export { MODULE_NAME } from './constants.js'; +export { sanitize } from './_cli.js'; +export * from './lib/index.js'; +export * from './options.js'; +export * from './types.js'; +export * from './zod_schema.js'; +export * from './zod_types.js'; +export declare const logger: any; diff --git a/packages/i18n/dist/index.js b/packages/i18n/dist/index.js new file mode 100644 index 00000000..71eb3e79 --- /dev/null +++ b/packages/i18n/dist/index.js @@ -0,0 +1,11 @@ +export { Logger } from 'tslog'; +import { createLogger } from '@polymech/log'; +export { MODULE_NAME } from './constants.js'; +export { sanitize } from './_cli.js'; +export * from './lib/index.js'; +export * from './options.js'; +export * from './types.js'; +export * from './zod_schema.js'; +export * from './zod_types.js'; +export const logger = createLogger('commons'); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUM5QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBSTVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUM1QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ3BDLGNBQWMsZ0JBQWdCLENBQUE7QUFDOUIsY0FBYyxjQUFjLENBQUE7QUFDNUIsY0FBYyxZQUFZLENBQUE7QUFDMUIsY0FBYyxpQkFBaUIsQ0FBQTtBQUMvQixjQUFjLGdCQUFnQixDQUFBO0FBRTlCLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBTyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUEifQ== \ No newline at end of file diff --git a/packages/i18n/dist/lib/async-iterator.d.ts b/packages/i18n/dist/lib/async-iterator.d.ts new file mode 100644 index 00000000..2aecc850 --- /dev/null +++ b/packages/i18n/dist/lib/async-iterator.d.ts @@ -0,0 +1,21 @@ +export type AsyncTransformer = (input: string, path: string) => Promise; +export type ErrorCallback = (path: string, value: string, error: any) => void; +export type FilterCallback = (input: string, path: string) => Promise; +export type Filter = (input: string) => Promise; +export interface TransformOptions { + transform: AsyncTransformer; + path: string; + throttleDelay: number; + concurrentTasks: number; + errorCallback: ErrorCallback; + filterCallback: FilterCallback; +} +export declare const isNumber: Filter; +export declare const isBoolean: Filter; +export declare const isValidString: Filter; +export declare const testFilters: (filters: Filter[]) => FilterCallback; +export declare const defaultFilters: (filters?: Filter[]) => Filter[]; +export declare function transformObject(obj: any, transform: AsyncTransformer, path: string, throttleDelay: number, concurrentTasks: number, errorCallback: ErrorCallback, testCallback: FilterCallback): Promise; +export declare function transformPath(obj: any, keys: string[], transform: AsyncTransformer, throttleDelay: number, concurrentTasks: number, currentPath: string, errorCallback: ErrorCallback, testCallback: FilterCallback): Promise; +export declare const defaultError: ErrorCallback; +export declare const defaultOptions: (options?: TransformOptions) => TransformOptions; diff --git a/packages/i18n/dist/lib/async-iterator.js b/packages/i18n/dist/lib/async-iterator.js new file mode 100644 index 00000000..3f2dbc72 --- /dev/null +++ b/packages/i18n/dist/lib/async-iterator.js @@ -0,0 +1,91 @@ +import { JSONPath } from 'jsonpath-plus'; +import pThrottle from 'p-throttle'; +import pMap from 'p-map'; +export const isNumber = async (input) => (/^-?\d+(\.\d+)?$/.test(input)); +export const isBoolean = async (input) => /^(true|false)$/i.test(input); +export const isValidString = async (input) => !(input.trim() !== ''); +export const testFilters = (filters) => { + return async (input) => { + for (const filter of filters) { + if (await filter(input)) { + return false; + } + } + return true; + }; +}; +export const defaultFilters = (filters = []) => [ + isNumber, isBoolean, isValidString, ...filters +]; +export async function transformObject(obj, transform, path, throttleDelay, concurrentTasks, errorCallback, testCallback) { + const paths = JSONPath({ path, json: obj, resultType: 'pointer' }); + await pMap(paths, async (jsonPointer) => { + const keys = jsonPointer.slice(1).split('/'); + await transformPath(obj, keys, transform, throttleDelay, concurrentTasks, jsonPointer, errorCallback, testCallback); + }, { concurrency: concurrentTasks }); +} +export async function transformPath(obj, keys, transform, throttleDelay, concurrentTasks, currentPath, errorCallback, testCallback) { + let current = obj; + for (let i = 0; i < keys.length - 1; i++) { + current = current[keys[i]]; + } + const lastKey = keys[keys.length - 1]; + const throttle = pThrottle({ + limit: 1, + interval: throttleDelay, + }); + if (typeof lastKey === 'string' && lastKey !== '') { + try { + const newKey = isValidString(lastKey) && !isNumber(lastKey) ? await throttle(transform)(lastKey, currentPath) : lastKey; + if (newKey !== lastKey) { + current[newKey] = current[lastKey]; + delete current[lastKey]; + } + if (typeof current[newKey] === 'string' && current[newKey] !== '') { + if (await testCallback(current[newKey], `${currentPath}/${lastKey}`)) { + current[newKey] = await throttle(transform)(current[newKey], `${currentPath}/${lastKey}`); + } + } + else if (typeof current[newKey] === 'object' && current[newKey] !== null) { + await transformObject(current[newKey], transform, '$.*', throttleDelay, concurrentTasks, errorCallback, testCallback); + } + } + catch (error) { + errorCallback(currentPath, lastKey, error); + } + } +} +const exampleTransformFunction = async (input, path) => { + if (input === 'random') + throw new Error('API error'); + console.log('translate : ' + input); + return input.toUpperCase(); +}; +export const defaultError = (path, value, error) => { + console.error(`Error at path: ${path}, value: ${value}, error: ${error}`); +}; +export const defaultOptions = (options = {}) => { + return { + transform: exampleTransformFunction, + path: options.path || '$[*][0,1,2]', + throttleDelay: 10, + concurrentTasks: 1, + errorCallback: defaultError, + filterCallback: testFilters(defaultFilters()), + ...options + }; +}; +const data = {}; +const runTransformation = async () => { + // const testTransformFunction = testFilters([isNumber, isBoolean]) + const options = defaultOptions(); + try { + await transformObject(data, options.transform, options.path, options.throttleDelay, options.concurrentTasks, options.errorCallback, options.filterCallback); + console.log('Transformed object:', data); + console.log('All transformations were successful.'); + } + catch (error) { + console.error('Transformation failed:', error); + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtaXRlcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2FzeW5jLWl0ZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDeEMsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFBO0FBQ2xDLE9BQU8sSUFBSSxNQUFNLE9BQU8sQ0FBQTtBQWdCeEIsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFXLEtBQUssRUFBRSxLQUFhLEVBQUUsRUFBRSxDQUFDLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7QUFDeEYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFXLEtBQUssRUFBRSxLQUFhLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUN2RixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQVcsS0FBSyxFQUFFLEtBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtBQUVwRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxPQUFpQixFQUFrQixFQUFFO0lBQzdELE9BQU8sS0FBSyxFQUFFLEtBQWEsRUFBRSxFQUFFO1FBQzNCLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFO1lBQzFCLElBQUksTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3JCLE9BQU8sS0FBSyxDQUFDO2FBQ2hCO1NBQ0o7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDLENBQUM7QUFDTixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxVQUFvQixFQUFFLEVBQUUsRUFBRSxDQUNyRDtJQUNJLFFBQVEsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFHLEdBQUcsT0FB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 \ No newline at end of file diff --git a/packages/i18n/dist/lib/cache.d.ts b/packages/i18n/dist/lib/cache.d.ts new file mode 100644 index 00000000..509db186 --- /dev/null +++ b/packages/i18n/dist/lib/cache.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/packages/i18n/dist/lib/cache.js b/packages/i18n/dist/lib/cache.js new file mode 100644 index 00000000..18a0069b --- /dev/null +++ b/packages/i18n/dist/lib/cache.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2NhY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ== \ No newline at end of file diff --git a/packages/i18n/dist/lib/codes.d.ts b/packages/i18n/dist/lib/codes.d.ts new file mode 100644 index 00000000..49d29156 --- /dev/null +++ b/packages/i18n/dist/lib/codes.d.ts @@ -0,0 +1,742 @@ +/** + * @author Phil Teare + * using wikipedia data + * @link https://stackoverflow.com/questions/3217492/list-of-language-codes-in-yaml-or-json + * @link https://loc.gov/standards/iso639-2/ISO-639-2_utf-8.txt + * @link http://country.io/data/ + */ +export declare const iso_lang_codes: { + ab: { + name: string; + nativeName: string; + }; + aa: { + name: string; + nativeName: string; + }; + af: { + name: string; + nativeName: string; + }; + ak: { + name: string; + nativeName: string; + }; + sq: { + name: string; + nativeName: string; + }; + am: { + name: string; + nativeName: string; + }; + ar: { + name: string; + nativeName: string; + }; + an: { + name: string; + nativeName: string; + }; + hy: { + name: string; + nativeName: string; + }; + as: { + name: string; + nativeName: string; + }; + av: { + name: string; + nativeName: string; + }; + ae: { + name: string; + nativeName: string; + }; + ay: { + name: string; + nativeName: string; + }; + az: { + name: string; + nativeName: string; + }; + bm: { + name: string; + nativeName: string; + }; + ba: { + name: string; + nativeName: string; + }; + eu: { + name: string; + nativeName: string; + }; + be: { + name: string; + nativeName: string; + }; + bn: { + name: string; + nativeName: string; + }; + bh: { + name: string; + nativeName: string; + }; + bi: { + name: string; + nativeName: string; + }; + bs: { + name: string; + nativeName: string; + }; + br: { + name: string; + nativeName: string; + }; + bg: { + name: string; + nativeName: string; + }; + my: { + name: string; + nativeName: string; + }; + ca: { + name: string; + nativeName: string; + }; + ch: { + name: string; + nativeName: string; + }; + ce: { + name: string; + nativeName: string; + }; + ny: { + name: string; + nativeName: string; + }; + zh: { + name: string; + nativeName: string; + }; + cv: { + name: string; + nativeName: string; + }; + kw: { + name: string; + nativeName: string; + }; + co: { + name: string; + nativeName: string; + }; + cr: { + name: string; + nativeName: string; + }; + hr: { + name: string; + nativeName: string; + }; + cs: { + name: string; + nativeName: string; + }; + da: { + name: string; + nativeName: string; + }; + dv: { + name: string; + nativeName: string; + }; + nl: { + name: string; + nativeName: string; + }; + en: { + name: string; + nativeName: string; + }; + eo: { + name: string; + nativeName: string; + }; + et: { + name: string; + nativeName: string; + }; + ee: { + name: string; + nativeName: string; + }; + fo: { + name: string; + nativeName: string; + }; + fj: { + name: string; + nativeName: string; + }; + fi: { + name: string; + nativeName: string; + }; + fr: { + name: string; + nativeName: string; + }; + ff: { + name: string; + nativeName: string; + }; + gl: { + name: string; + nativeName: string; + }; + ka: { + name: string; + nativeName: string; + }; + de: { + name: string; + nativeName: string; + }; + el: { + name: string; + nativeName: string; + }; + gn: { + name: string; + nativeName: string; + }; + gu: { + name: string; + nativeName: string; + }; + ht: { + name: string; + nativeName: string; + }; + ha: { + name: string; + nativeName: string; + }; + he: { + name: string; + nativeName: string; + }; + hz: { + name: string; + nativeName: string; + }; + hi: { + name: string; + nativeName: string; + }; + ho: { + name: string; + nativeName: string; + }; + hu: { + name: string; + nativeName: string; + }; + ia: { + name: string; + nativeName: string; + }; + id: { + name: string; + nativeName: string; + }; + ie: { + name: string; + nativeName: string; + }; + ga: { + name: string; + nativeName: string; + }; + ig: { + name: string; + nativeName: string; + }; + ik: { + name: string; + nativeName: string; + }; + io: { + name: string; + nativeName: string; + }; + is: { + name: string; + nativeName: string; + }; + it: { + name: string; + nativeName: string; + }; + iu: { + name: string; + nativeName: string; + }; + ja: { + name: string; + nativeName: string; + }; + jv: { + name: string; + nativeName: string; + }; + kl: { + name: string; + nativeName: string; + }; + kn: { + name: string; + nativeName: string; + }; + kr: { + name: string; + nativeName: string; + }; + ks: { + name: string; + nativeName: string; + }; + kk: { + name: string; + nativeName: string; + }; + km: { + name: string; + nativeName: string; + }; + ki: { + name: string; + nativeName: string; + }; + rw: { + name: string; + nativeName: string; + }; + ky: { + name: string; + nativeName: string; + }; + kv: { + name: string; + nativeName: string; + }; + kg: { + name: string; + nativeName: string; + }; + ko: { + name: string; + nativeName: string; + }; + ku: { + name: string; + nativeName: string; + }; + kj: { + name: string; + nativeName: string; + }; + la: { + name: string; + nativeName: string; + }; + lb: { + name: string; + nativeName: string; + }; + lg: { + name: string; + nativeName: string; + }; + li: { + name: string; + nativeName: string; + }; + ln: { + name: string; + nativeName: string; + }; + lo: { + name: string; + nativeName: string; + }; + lt: { + name: string; + nativeName: string; + }; + lu: { + name: string; + nativeName: string; + }; + lv: { + name: string; + nativeName: string; + }; + gv: { + name: string; + nativeName: string; + }; + mk: { + name: string; + nativeName: string; + }; + mg: { + name: string; + nativeName: string; + }; + ms: { + name: string; + nativeName: string; + }; + ml: { + name: string; + nativeName: string; + }; + mt: { + name: string; + nativeName: string; + }; + mi: { + name: string; + nativeName: string; + }; + mr: { + name: string; + nativeName: string; + }; + mh: { + name: string; + nativeName: string; + }; + mn: { + name: string; + nativeName: string; + }; + na: { + name: string; + nativeName: string; + }; + nv: { + name: string; + nativeName: string; + }; + nb: { + name: string; + nativeName: string; + }; + nd: { + name: string; + nativeName: string; + }; + ne: { + name: string; + nativeName: string; + }; + ng: { + name: string; + nativeName: string; + }; + nn: { + name: string; + nativeName: string; + }; + no: { + name: string; + nativeName: string; + }; + ii: { + name: string; + nativeName: string; + }; + nr: { + name: string; + nativeName: string; + }; + oc: { + name: string; + nativeName: string; + }; + oj: { + name: string; + nativeName: string; + }; + cu: { + name: string; + nativeName: string; + }; + om: { + name: string; + nativeName: string; + }; + or: { + name: string; + nativeName: string; + }; + os: { + name: string; + nativeName: string; + }; + pa: { + name: string; + nativeName: string; + }; + pi: { + name: string; + nativeName: string; + }; + fa: { + name: string; + nativeName: string; + }; + pl: { + name: string; + nativeName: string; + }; + ps: { + name: string; + nativeName: string; + }; + pt: { + name: string; + nativeName: string; + }; + qu: { + name: string; + nativeName: string; + }; + rm: { + name: string; + nativeName: string; + }; + rn: { + name: string; + nativeName: string; + }; + ro: { + name: string; + nativeName: string; + }; + ru: { + name: string; + nativeName: string; + }; + sa: { + name: string; + nativeName: string; + }; + sc: { + name: string; + nativeName: string; + }; + sd: { + name: string; + nativeName: string; + }; + se: { + name: string; + nativeName: string; + }; + sm: { + name: string; + nativeName: string; + }; + sg: { + name: string; + nativeName: string; + }; + sr: { + name: string; + nativeName: string; + }; + gd: { + name: string; + nativeName: string; + }; + sn: { + name: string; + nativeName: string; + }; + si: { + name: string; + nativeName: string; + }; + sk: { + name: string; + nativeName: string; + }; + sl: { + name: string; + nativeName: string; + }; + so: { + name: string; + nativeName: string; + }; + st: { + name: string; + nativeName: string; + }; + es: { + name: string; + nativeName: string; + }; + su: { + name: string; + nativeName: string; + }; + sw: { + name: string; + nativeName: string; + }; + ss: { + name: string; + nativeName: string; + }; + sv: { + name: string; + nativeName: string; + }; + ta: { + name: string; + nativeName: string; + }; + te: { + name: string; + nativeName: string; + }; + tg: { + name: string; + nativeName: string; + }; + th: { + name: string; + nativeName: string; + }; + ti: { + name: string; + nativeName: string; + }; + bo: { + name: string; + nativeName: string; + }; + tk: { + name: string; + nativeName: string; + }; + tl: { + name: string; + nativeName: string; + }; + tn: { + name: string; + nativeName: string; + }; + to: { + name: string; + nativeName: string; + }; + tr: { + name: string; + nativeName: string; + }; + ts: { + name: string; + nativeName: string; + }; + tt: { + name: string; + nativeName: string; + }; + tw: { + name: string; + nativeName: string; + }; + ty: { + name: string; + nativeName: string; + }; + ug: { + name: string; + nativeName: string; + }; + uk: { + name: string; + nativeName: string; + }; + ur: { + name: string; + nativeName: string; + }; + uz: { + name: string; + nativeName: string; + }; + ve: { + name: string; + nativeName: string; + }; + vi: { + name: string; + nativeName: string; + }; + vo: { + name: string; + nativeName: string; + }; + wa: { + name: string; + nativeName: string; + }; + cy: { + name: string; + nativeName: string; + }; + wo: { + name: string; + nativeName: string; + }; + fy: { + name: string; + nativeName: string; + }; + xh: { + name: string; + nativeName: string; + }; + yi: { + name: string; + nativeName: string; + }; + yo: { + name: string; + nativeName: string; + }; + za: { + name: string; + nativeName: string; + }; +}; +export declare const country_codes: { + name: string; + dial_code: string; + code: string; +}[]; diff --git a/packages/i18n/dist/lib/codes.js b/packages/i18n/dist/lib/codes.js new file mode 100644 index 00000000..9bebe819 --- /dev/null +++ b/packages/i18n/dist/lib/codes.js @@ -0,0 +1,1950 @@ +/** + * @author Phil Teare + * using wikipedia data + * @link https://stackoverflow.com/questions/3217492/list-of-language-codes-in-yaml-or-json + * @link https://loc.gov/standards/iso639-2/ISO-639-2_utf-8.txt + * @link http://country.io/data/ + */ +export const iso_lang_codes = { + "ab": { + "name": "Abkhaz", + "nativeName": "аҧсуа" + }, + "aa": { + "name": "Afar", + "nativeName": "Afaraf" + }, + "af": { + "name": "Afrikaans", + "nativeName": "Afrikaans" + }, + "ak": { + "name": "Akan", + "nativeName": "Akan" + }, + "sq": { + "name": "Albanian", + "nativeName": "Shqip" + }, + "am": { + "name": "Amharic", + "nativeName": "አማርኛ" + }, + "ar": { + "name": "Arabic", + "nativeName": "العربية" + }, + "an": { + "name": "Aragonese", + "nativeName": "Aragonés" + }, + "hy": { + "name": "Armenian", + "nativeName": "Հայերեն" + }, + "as": { + "name": "Assamese", + "nativeName": "অসমীয়া" + }, + "av": { + "name": "Avaric", + "nativeName": "авар мацӀ, магӀарул мацӀ" + }, + "ae": { + "name": "Avestan", + "nativeName": "avesta" + }, + "ay": { + "name": "Aymara", + "nativeName": "aymar aru" + }, + "az": { + "name": "Azerbaijani", + "nativeName": "azərbaycan dili" + }, + "bm": { + "name": "Bambara", + "nativeName": "bamanankan" + }, + "ba": { + "name": "Bashkir", + "nativeName": "башҡорт теле" + }, + "eu": { + "name": "Basque", + "nativeName": "euskara, euskera" + }, + "be": { + "name": "Belarusian", + "nativeName": "Беларуская" + }, + "bn": { + "name": "Bengali", + "nativeName": "বাংলা" + }, + "bh": { + "name": "Bihari", + "nativeName": "भोजपुरी" + }, + "bi": { + "name": "Bislama", + "nativeName": "Bislama" + }, + "bs": { + "name": "Bosnian", + "nativeName": "bosanski jezik" + }, + "br": { + "name": "Breton", + "nativeName": "brezhoneg" + }, + "bg": { + "name": "Bulgarian", + "nativeName": "български език" + }, + "my": { + "name": "Burmese", + "nativeName": "ဗမာစာ" + }, + "ca": { + "name": "Catalan; Valencian", + "nativeName": "Català" + }, + "ch": { + "name": "Chamorro", + "nativeName": "Chamoru" + }, + "ce": { + "name": "Chechen", + "nativeName": "нохчийн мотт" + }, + "ny": { + "name": "Chichewa; Chewa; Nyanja", + "nativeName": "chiCheŵa, chinyanja" + }, + "zh": { + "name": "Chinese", + "nativeName": "中文 (Zhōngwén), 汉语, 漢語" + }, + "cv": { + "name": "Chuvash", + "nativeName": "чӑваш чӗлхи" + }, + "kw": { + "name": "Cornish", + "nativeName": "Kernewek" + }, + "co": { + "name": "Corsican", + "nativeName": "corsu, lingua corsa" + }, + "cr": { + "name": "Cree", + "nativeName": "ᓀᐦᐃᔭᐍᐏᐣ" + }, + "hr": { + "name": "Croatian", + "nativeName": "hrvatski" + }, + "cs": { + "name": "Czech", + "nativeName": "česky, čeština" + }, + "da": { + "name": "Danish", + "nativeName": "dansk" + }, + "dv": { + "name": "Divehi; Dhivehi; Maldivian;", + "nativeName": "ދިވެހި" + }, + "nl": { + "name": "Dutch", + "nativeName": "Nederlands, Vlaams" + }, + "en": { + "name": "English", + "nativeName": "English" + }, + "eo": { + "name": "Esperanto", + "nativeName": "Esperanto" + }, + "et": { + "name": "Estonian", + "nativeName": "eesti, eesti keel" + }, + "ee": { + "name": "Ewe", + "nativeName": "Eʋegbe" + }, + "fo": { + "name": "Faroese", + "nativeName": "føroyskt" + }, + "fj": { + "name": "Fijian", + "nativeName": "vosa Vakaviti" + }, + "fi": { + "name": "Finnish", + "nativeName": "suomi, suomen kieli" + }, + "fr": { + "name": "French", + "nativeName": "français, langue française" + }, + "ff": { + "name": "Fula; Fulah; Pulaar; Pular", + "nativeName": "Fulfulde, Pulaar, Pular" + }, + "gl": { + "name": "Galician", + "nativeName": "Galego" + }, + "ka": { + "name": "Georgian", + "nativeName": "ქართული" + }, + "de": { + "name": "German", + "nativeName": "Deutsch" + }, + "el": { + "name": "Greek, Modern", + "nativeName": "Ελληνικά" + }, + "gn": { + "name": "Guaraní", + "nativeName": "Avañeẽ" + }, + "gu": { + "name": "Gujarati", + "nativeName": "ગુજરાતી" + }, + "ht": { + "name": "Haitian; Haitian Creole", + "nativeName": "Kreyòl ayisyen" + }, + "ha": { + "name": "Hausa", + "nativeName": "Hausa, هَوُسَ" + }, + "he": { + "name": "Hebrew (modern)", + "nativeName": "עברית" + }, + "hz": { + "name": "Herero", + "nativeName": "Otjiherero" + }, + "hi": { + "name": "Hindi", + "nativeName": "हिन्दी, हिंदी" + }, + "ho": { + "name": "Hiri Motu", + "nativeName": "Hiri Motu" + }, + "hu": { + "name": "Hungarian", + "nativeName": "Magyar" + }, + "ia": { + "name": "Interlingua", + "nativeName": "Interlingua" + }, + "id": { + "name": "Indonesian", + "nativeName": "Bahasa Indonesia" + }, + "ie": { + "name": "Interlingue", + "nativeName": "Originally called Occidental; then Interlingue after WWII" + }, + "ga": { + "name": "Irish", + "nativeName": "Gaeilge" + }, + "ig": { + "name": "Igbo", + "nativeName": "Asụsụ Igbo" + }, + "ik": { + "name": "Inupiaq", + "nativeName": "Iñupiaq, Iñupiatun" + }, + "io": { + "name": "Ido", + "nativeName": "Ido" + }, + "is": { + "name": "Icelandic", + "nativeName": "Íslenska" + }, + "it": { + "name": "Italian", + "nativeName": "Italiano" + }, + "iu": { + "name": "Inuktitut", + "nativeName": "ᐃᓄᒃᑎᑐᑦ" + }, + "ja": { + "name": "Japanese", + "nativeName": "日本語 (にほんご/にっぽんご)" + }, + "jv": { + "name": "Javanese", + "nativeName": "basa Jawa" + }, + "kl": { + "name": "Kalaallisut, Greenlandic", + "nativeName": "kalaallisut, kalaallit oqaasii" + }, + "kn": { + "name": "Kannada", + "nativeName": "ಕನ್ನಡ" + }, + "kr": { + "name": "Kanuri", + "nativeName": "Kanuri" + }, + "ks": { + "name": "Kashmiri", + "nativeName": "कश्मीरी, كشميري‎" + }, + "kk": { + "name": "Kazakh", + "nativeName": "Қазақ тілі" + }, + "km": { + "name": "Khmer", + "nativeName": "ភាសាខ្មែរ" + }, + "ki": { + "name": "Kikuyu, Gikuyu", + "nativeName": "Gĩkũyũ" + }, + "rw": { + "name": "Kinyarwanda", + "nativeName": "Ikinyarwanda" + }, + "ky": { + "name": "Kirghiz, Kyrgyz", + "nativeName": "кыргыз тили" + }, + "kv": { + "name": "Komi", + "nativeName": "коми кыв" + }, + "kg": { + "name": "Kongo", + "nativeName": "KiKongo" + }, + "ko": { + "name": "Korean", + "nativeName": "한국어 (韓國語), 조선말 (朝鮮語)" + }, + "ku": { + "name": "Kurdish", + "nativeName": "Kurdî, كوردی‎" + }, + "kj": { + "name": "Kwanyama, Kuanyama", + "nativeName": "Kuanyama" + }, + "la": { + "name": "Latin", + "nativeName": "latine, lingua latina" + }, + "lb": { + "name": "Luxembourgish, Letzeburgesch", + "nativeName": "Lëtzebuergesch" + }, + "lg": { + "name": "Luganda", + "nativeName": "Luganda" + }, + "li": { + "name": "Limburgish, Limburgan, Limburger", + "nativeName": "Limburgs" + }, + "ln": { + "name": "Lingala", + "nativeName": "Lingála" + }, + "lo": { + "name": "Lao", + "nativeName": "ພາສາລາວ" + }, + "lt": { + "name": "Lithuanian", + "nativeName": "lietuvių kalba" + }, + "lu": { + "name": "Luba-Katanga", + "nativeName": "" + }, + "lv": { + "name": "Latvian", + "nativeName": "latviešu valoda" + }, + "gv": { + "name": "Manx", + "nativeName": "Gaelg, Gailck" + }, + "mk": { + "name": "Macedonian", + "nativeName": "македонски јазик" + }, + "mg": { + "name": "Malagasy", + "nativeName": "Malagasy fiteny" + }, + "ms": { + "name": "Malay", + "nativeName": "bahasa Melayu, بهاس ملايو‎" + }, + "ml": { + "name": "Malayalam", + "nativeName": "മലയാളം" + }, + "mt": { + "name": "Maltese", + "nativeName": "Malti" + }, + "mi": { + "name": "Māori", + "nativeName": "te reo Māori" + }, + "mr": { + "name": "Marathi (Marāṭhī)", + "nativeName": "मराठी" + }, + "mh": { + "name": "Marshallese", + "nativeName": "Kajin M̧ajeļ" + }, + "mn": { + "name": "Mongolian", + "nativeName": "монгол" + }, + "na": { + "name": "Nauru", + "nativeName": "Ekakairũ Naoero" + }, + "nv": { + "name": "Navajo, Navaho", + "nativeName": "Diné bizaad, Dinékʼehǰí" + }, + "nb": { + "name": "Norwegian Bokmål", + "nativeName": "Norsk bokmål" + }, + "nd": { + "name": "North Ndebele", + "nativeName": "isiNdebele" + }, + "ne": { + "name": "Nepali", + "nativeName": "नेपाली" + }, + "ng": { + "name": "Ndonga", + "nativeName": "Owambo" + }, + "nn": { + "name": "Norwegian Nynorsk", + "nativeName": "Norsk nynorsk" + }, + "no": { + "name": "Norwegian", + "nativeName": "Norsk" + }, + "ii": { + "name": "Nuosu", + "nativeName": "ꆈꌠ꒿ Nuosuhxop" + }, + "nr": { + "name": "South Ndebele", + "nativeName": "isiNdebele" + }, + "oc": { + "name": "Occitan", + "nativeName": "Occitan" + }, + "oj": { + "name": "Ojibwe, Ojibwa", + "nativeName": "ᐊᓂᔑᓈᐯᒧᐎᓐ" + }, + "cu": { + "name": "Old Church Slavonic, Church Slavic, Church Slavonic, Old Bulgarian, Old Slavonic", + "nativeName": "ѩзыкъ словѣньскъ" + }, + "om": { + "name": "Oromo", + "nativeName": "Afaan Oromoo" + }, + "or": { + "name": "Oriya", + "nativeName": "ଓଡ଼ିଆ" + }, + "os": { + "name": "Ossetian, Ossetic", + "nativeName": "ирон æвзаг" + }, + "pa": { + "name": "Panjabi, Punjabi", + "nativeName": "ਪੰਜਾਬੀ, پنجابی‎" + }, + "pi": { + "name": "Pāli", + "nativeName": "पाऴि" + }, + "fa": { + "name": "Persian", + "nativeName": "فارسی" + }, + "pl": { + "name": "Polish", + "nativeName": "polski" + }, + "ps": { + "name": "Pashto, Pushto", + "nativeName": "پښتو" + }, + "pt": { + "name": "Portuguese", + "nativeName": "Português" + }, + "qu": { + "name": "Quechua", + "nativeName": "Runa Simi, Kichwa" + }, + "rm": { + "name": "Romansh", + "nativeName": "rumantsch grischun" + }, + "rn": { + "name": "Kirundi", + "nativeName": "kiRundi" + }, + "ro": { + "name": "Romanian, Moldavian, Moldovan", + "nativeName": "română" + }, + "ru": { + "name": "Russian", + "nativeName": "русский язык" + }, + "sa": { + "name": "Sanskrit (Saṁskṛta)", + "nativeName": "संस्कृतम्" + }, + "sc": { + "name": "Sardinian", + "nativeName": "sardu" + }, + "sd": { + "name": "Sindhi", + "nativeName": "सिन्धी, سنڌي، سندھی‎" + }, + "se": { + "name": "Northern Sami", + "nativeName": "Davvisámegiella" + }, + "sm": { + "name": "Samoan", + "nativeName": "gagana faa Samoa" + }, + "sg": { + "name": "Sango", + "nativeName": "yângâ tî sängö" + }, + "sr": { + "name": "Serbian", + "nativeName": "српски језик" + }, + "gd": { + "name": "Scottish Gaelic; Gaelic", + "nativeName": "Gàidhlig" + }, + "sn": { + "name": "Shona", + "nativeName": "chiShona" + }, + "si": { + "name": "Sinhala, Sinhalese", + "nativeName": "සිංහල" + }, + "sk": { + "name": "Slovak", + "nativeName": "slovenčina" + }, + "sl": { + "name": "Slovene", + "nativeName": "slovenščina" + }, + "so": { + "name": "Somali", + "nativeName": "Soomaaliga, af Soomaali" + }, + "st": { + "name": "Southern Sotho", + "nativeName": "Sesotho" + }, + "es": { + "name": "Spanish; Castilian", + "nativeName": "español, castellano" + }, + "su": { + "name": "Sundanese", + "nativeName": "Basa Sunda" + }, + "sw": { + "name": "Swahili", + "nativeName": "Kiswahili" + }, + "ss": { + "name": "Swati", + "nativeName": "SiSwati" + }, + "sv": { + "name": "Swedish", + "nativeName": "svenska" + }, + "ta": { + "name": "Tamil", + "nativeName": "தமிழ்" + }, + "te": { + "name": "Telugu", + "nativeName": "తెలుగు" + }, + "tg": { + "name": "Tajik", + "nativeName": "тоҷикӣ, toğikī, تاجیکی‎" + }, + "th": { + "name": "Thai", + "nativeName": "ไทย" + }, + "ti": { + "name": "Tigrinya", + "nativeName": "ትግርኛ" + }, + "bo": { + "name": "Tibetan Standard, Tibetan, Central", + "nativeName": "བོད་ཡིག" + }, + "tk": { + "name": "Turkmen", + "nativeName": "Türkmen, Түркмен" + }, + "tl": { + "name": "Tagalog", + "nativeName": "Wikang Tagalog, ᜏᜒᜃᜅ᜔ ᜆᜄᜎᜓᜄ᜔" + }, + "tn": { + "name": "Tswana", + "nativeName": "Setswana" + }, + "to": { + "name": "Tonga (Tonga Islands)", + "nativeName": "faka Tonga" + }, + "tr": { + "name": "Turkish", + "nativeName": "Türkçe" + }, + "ts": { + "name": "Tsonga", + "nativeName": "Xitsonga" + }, + "tt": { + "name": "Tatar", + "nativeName": "татарча, tatarça, تاتارچا‎" + }, + "tw": { + "name": "Twi", + "nativeName": "Twi" + }, + "ty": { + "name": "Tahitian", + "nativeName": "Reo Tahiti" + }, + "ug": { + "name": "Uighur, Uyghur", + "nativeName": "Uyƣurqə, ئۇيغۇرچە‎" + }, + "uk": { + "name": "Ukrainian", + "nativeName": "українська" + }, + "ur": { + "name": "Urdu", + "nativeName": "اردو" + }, + "uz": { + "name": "Uzbek", + "nativeName": "zbek, Ўзбек, أۇزبېك‎" + }, + "ve": { + "name": "Venda", + "nativeName": "Tshivenḓa" + }, + "vi": { + "name": "Vietnamese", + "nativeName": "Tiếng Việt" + }, + "vo": { + "name": "Volapük", + "nativeName": "Volapük" + }, + "wa": { + "name": "Walloon", + "nativeName": "Walon" + }, + "cy": { + "name": "Welsh", + "nativeName": "Cymraeg" + }, + "wo": { + "name": "Wolof", + "nativeName": "Wollof" + }, + "fy": { + "name": "Western Frisian", + "nativeName": "Frysk" + }, + "xh": { + "name": "Xhosa", + "nativeName": "isiXhosa" + }, + "yi": { + "name": "Yiddish", + "nativeName": "ייִדיש" + }, + "yo": { + "name": "Yoruba", + "nativeName": "Yorùbá" + }, + "za": { + "name": "Zhuang, Chuang", + "nativeName": "Saɯ cueŋƅ, Saw cuengh" + } +}; +export const country_codes = [ + { + "name": "Afghanistan", + "dial_code": "+93", + "code": "AF" + }, + { + "name": "Aland Islands", + "dial_code": "+358", + "code": "AX" + }, + { + "name": "Albania", + "dial_code": "+355", + "code": "AL" + }, + { + "name": "Algeria", + "dial_code": "+213", + "code": "DZ" + }, + { + "name": "AmericanSamoa", + "dial_code": "+1684", + "code": "AS" + }, + { + "name": "Andorra", + "dial_code": "+376", + "code": "AD" + }, + { + "name": "Angola", + "dial_code": "+244", + "code": "AO" + }, + { + "name": "Anguilla", + "dial_code": "+1264", + "code": "AI" + }, + { + "name": "Antarctica", + "dial_code": "+672", + "code": "AQ" + }, + { + "name": "Antigua and Barbuda", + "dial_code": "+1268", + "code": "AG" + }, + { + "name": "Argentina", + "dial_code": "+54", + "code": "AR" + }, + { + "name": "Armenia", + "dial_code": "+374", + "code": "AM" + }, + { + "name": "Aruba", + "dial_code": "+297", + "code": "AW" + }, + { + "name": "Australia", + "dial_code": "+61", + "code": "AU" + }, + { + "name": "Austria", + "dial_code": "+43", + "code": "AT" + }, + { + "name": "Azerbaijan", + "dial_code": "+994", + "code": "AZ" + }, + { + "name": "Bahamas", + "dial_code": "+1242", + "code": "BS" + }, + { + "name": "Bahrain", + "dial_code": "+973", + "code": "BH" + }, + { + "name": "Bangladesh", + "dial_code": "+880", + "code": "BD" + }, + { + "name": "Barbados", + "dial_code": "+1246", + "code": "BB" + }, + { + "name": "Belarus", + "dial_code": "+375", + "code": "BY" + }, + { + "name": "Belgium", + "dial_code": "+32", + "code": "BE" + }, + { + "name": "Belize", + "dial_code": "+501", + "code": "BZ" + }, + { + "name": "Benin", + "dial_code": "+229", + "code": "BJ" + }, + { + "name": "Bermuda", + "dial_code": "+1441", + "code": "BM" + }, + { + "name": "Bhutan", + "dial_code": "+975", + "code": "BT" + }, + { + "name": "Bolivia, Plurinational State of", + "dial_code": "+591", + "code": "BO" + }, + { + "name": "Bosnia and Herzegovina", + "dial_code": "+387", + "code": "BA" + }, + { + "name": "Botswana", + "dial_code": "+267", + "code": "BW" + }, + { + "name": "Brazil", + "dial_code": "+55", + "code": "BR" + }, + { + "name": "British Indian Ocean Territory", + "dial_code": "+246", + "code": "IO" + }, + { + "name": "Brunei Darussalam", + "dial_code": "+673", + "code": "BN" + }, + { + "name": "Bulgaria", + "dial_code": "+359", + "code": "BG" + }, + { + "name": "Burkina Faso", + "dial_code": "+226", + "code": "BF" + }, + { + "name": "Burundi", + "dial_code": "+257", + "code": "BI" + }, + { + "name": "Cambodia", + "dial_code": "+855", + "code": "KH" + }, + { + "name": "Cameroon", + "dial_code": "+237", + "code": "CM" + }, + { + "name": "Canada", + "dial_code": "+1", + "code": "CA" + }, + { + "name": "Cape Verde", + "dial_code": "+238", + "code": "CV" + }, + { + "name": "Cayman Islands", + "dial_code": "+ 345", + "code": "KY" + }, + { + "name": "Central African Republic", + "dial_code": "+236", + "code": "CF" + }, + { + "name": "Chad", + "dial_code": "+235", + "code": "TD" + }, + { + "name": "Chile", + "dial_code": "+56", + "code": "CL" + }, + { + "name": "China", + "dial_code": "+86", + "code": "CN" + }, + { + "name": "Christmas Island", + "dial_code": "+61", + "code": "CX" + }, + { + "name": "Cocos (Keeling) Islands", + "dial_code": "+61", + "code": "CC" + }, + { + "name": "Colombia", + "dial_code": "+57", + "code": "CO" + }, + { + "name": "Comoros", + "dial_code": "+269", + "code": "KM" + }, + { + "name": "Congo", + "dial_code": "+242", + "code": "CG" + }, + { + "name": "Congo, The Democratic Republic of the Congo", + "dial_code": "+243", + "code": "CD" + }, + { + "name": "Cook Islands", + "dial_code": "+682", + "code": "CK" + }, + { + "name": "Costa Rica", + "dial_code": "+506", + "code": "CR" + }, + { + "name": "Cote d'Ivoire", + "dial_code": "+225", + "code": "CI" + }, + { + "name": "Croatia", + "dial_code": "+385", + "code": "HR" + }, + { + "name": "Cuba", + "dial_code": "+53", + "code": "CU" + }, + { + "name": "Cyprus", + "dial_code": "+357", + "code": "CY" + }, + { + "name": "Czech Republic", + "dial_code": "+420", + "code": "CZ" + }, + { + "name": "Denmark", + "dial_code": "+45", + "code": "DK" + }, + { + "name": "Djibouti", + "dial_code": "+253", + "code": "DJ" + }, + { + "name": "Dominica", + "dial_code": "+1767", + "code": "DM" + }, + { + "name": "Dominican Republic", + "dial_code": "+1849", + "code": "DO" + }, + { + "name": "Ecuador", + "dial_code": "+593", + "code": "EC" + }, + { + "name": "Egypt", + "dial_code": "+20", + "code": "EG" + }, + { + "name": "El Salvador", + "dial_code": "+503", + "code": "SV" + }, + { + "name": "Equatorial Guinea", + "dial_code": "+240", + "code": "GQ" + }, + { + "name": "Eritrea", + "dial_code": "+291", + "code": "ER" + }, + { + "name": "Estonia", + "dial_code": "+372", + "code": "EE" + }, + { + "name": "Ethiopia", + "dial_code": "+251", + "code": "ET" + }, + { + "name": "Falkland Islands (Malvinas)", + "dial_code": "+500", + "code": "FK" + }, + { + "name": "Faroe Islands", + "dial_code": "+298", + "code": "FO" + }, + { + "name": "Fiji", + "dial_code": "+679", + "code": "FJ" + }, + { + "name": "Finland", + "dial_code": "+358", + "code": "FI" + }, + { + "name": "France", + "dial_code": "+33", + "code": "FR" + }, + { + "name": "French Guiana", + "dial_code": "+594", + "code": "GF" + }, + { + "name": "French Polynesia", + "dial_code": "+689", + "code": "PF" + }, + { + "name": "Gabon", + "dial_code": "+241", + "code": "GA" + }, + { + "name": "Gambia", + "dial_code": "+220", + "code": "GM" + }, + { + "name": "Georgia", + "dial_code": "+995", + "code": "GE" + }, + { + "name": "Germany", + "dial_code": "+49", + "code": "DE" + }, + { + "name": "Ghana", + "dial_code": "+233", + "code": "GH" + }, + { + "name": "Gibraltar", + "dial_code": "+350", + "code": "GI" + }, + { + "name": "Greece", + "dial_code": "+30", + "code": "GR" + }, + { + "name": "Greenland", + "dial_code": "+299", + "code": "GL" + }, + { + "name": "Grenada", + "dial_code": "+1473", + "code": "GD" + }, + { + "name": "Guadeloupe", + "dial_code": "+590", + "code": "GP" + }, + { + "name": "Guam", + "dial_code": "+1671", + "code": "GU" + }, + { + "name": "Guatemala", + "dial_code": "+502", + "code": "GT" + }, + { + "name": "Guernsey", + "dial_code": "+44", + "code": "GG" + }, + { + "name": "Guinea", + "dial_code": "+224", + "code": "GN" + }, + { + "name": "Guinea-Bissau", + "dial_code": "+245", + "code": "GW" + }, + { + "name": "Guyana", + "dial_code": "+595", + "code": "GY" + }, + { + "name": "Haiti", + "dial_code": "+509", + "code": "HT" + }, + { + "name": "Holy See (Vatican City State)", + "dial_code": "+379", + "code": "VA" + }, + { + "name": "Honduras", + "dial_code": "+504", + "code": "HN" + }, + { + "name": "Hong Kong", + "dial_code": "+852", + "code": "HK" + }, + { + "name": "Hungary", + "dial_code": "+36", + "code": "HU" + }, + { + "name": "Iceland", + "dial_code": "+354", + "code": "IS" + }, + { + "name": "India", + "dial_code": "+91", + "code": "IN" + }, + { + "name": "Indonesia", + "dial_code": "+62", + "code": "ID" + }, + { + "name": "Iran, Islamic Republic of Persian Gulf", + "dial_code": "+98", + "code": "IR" + }, + { + "name": "Iraq", + "dial_code": "+964", + "code": "IQ" + }, + { + "name": "Ireland", + "dial_code": "+353", + "code": "IE" + }, + { + "name": "Isle of Man", + "dial_code": "+44", + "code": "IM" + }, + { + "name": "Israel", + "dial_code": "+972", + "code": "IL" + }, + { + "name": "Italy", + "dial_code": "+39", + "code": "IT" + }, + { + "name": "Jamaica", + "dial_code": "+1876", + "code": "JM" + }, + { + "name": "Japan", + "dial_code": "+81", + "code": "JP" + }, + { + "name": "Jersey", + "dial_code": "+44", + "code": "JE" + }, + { + "name": "Jordan", + "dial_code": "+962", + "code": "JO" + }, + { + "name": "Kazakhstan", + "dial_code": "+77", + "code": "KZ" + }, + { + "name": "Kenya", + "dial_code": "+254", + "code": "KE" + }, + { + "name": "Kiribati", + "dial_code": "+686", + "code": "KI" + }, + { + "name": "Korea, Democratic People's Republic of Korea", + "dial_code": "+850", + "code": "KP" + }, + { + "name": "Korea, Republic of South Korea", + "dial_code": "+82", + "code": "KR" + }, + { + "name": "Kuwait", + "dial_code": "+965", + "code": "KW" + }, + { + "name": "Kyrgyzstan", + "dial_code": "+996", + "code": "KG" + }, + { + "name": "Laos", + "dial_code": "+856", + "code": "LA" + }, + { + "name": "Latvia", + "dial_code": "+371", + "code": "LV" + }, + { + "name": "Lebanon", + "dial_code": "+961", + "code": "LB" + }, + { + "name": "Lesotho", + "dial_code": "+266", + "code": "LS" + }, + { + "name": "Liberia", + "dial_code": "+231", + "code": "LR" + }, + { + "name": "Libyan Arab Jamahiriya", + "dial_code": "+218", + "code": "LY" + }, + { + "name": "Liechtenstein", + "dial_code": "+423", + "code": "LI" + }, + { + "name": "Lithuania", + "dial_code": "+370", + "code": "LT" + }, + { + "name": "Luxembourg", + "dial_code": "+352", + "code": "LU" + }, + { + "name": "Macao", + "dial_code": "+853", + "code": "MO" + }, + { + "name": "Macedonia", + "dial_code": "+389", + "code": "MK" + }, + { + "name": "Madagascar", + "dial_code": "+261", + "code": "MG" + }, + { + "name": "Malawi", + "dial_code": "+265", + "code": "MW" + }, + { + "name": "Malaysia", + "dial_code": "+60", + "code": "MY" + }, + { + "name": "Maldives", + "dial_code": "+960", + "code": "MV" + }, + { + "name": "Mali", + "dial_code": "+223", + "code": "ML" + }, + { + "name": "Malta", + "dial_code": "+356", + "code": "MT" + }, + { + "name": "Marshall Islands", + "dial_code": "+692", + "code": "MH" + }, + { + "name": "Martinique", + "dial_code": "+596", + "code": "MQ" + }, + { + "name": "Mauritania", + "dial_code": "+222", + "code": "MR" + }, + { + "name": "Mauritius", + "dial_code": "+230", + "code": "MU" + }, + { + "name": "Mayotte", + "dial_code": "+262", + "code": "YT" + }, + { + "name": "Mexico", + "dial_code": "+52", + "code": "MX" + }, + { + "name": "Micronesia, Federated States of Micronesia", + "dial_code": "+691", + "code": "FM" + }, + { + "name": "Moldova", + "dial_code": "+373", + "code": "MD" + }, + { + "name": "Monaco", + "dial_code": "+377", + "code": "MC" + }, + { + "name": "Mongolia", + "dial_code": "+976", + "code": "MN" + }, + { + "name": "Montenegro", + "dial_code": "+382", + "code": "ME" + }, + { + "name": "Montserrat", + "dial_code": "+1664", + "code": "MS" + }, + { + "name": "Morocco", + "dial_code": "+212", + "code": "MA" + }, + { + "name": "Mozambique", + "dial_code": "+258", + "code": "MZ" + }, + { + "name": "Myanmar", + "dial_code": "+95", + "code": "MM" + }, + { + "name": "Namibia", + "dial_code": "+264", + "code": "NA" + }, + { + "name": "Nauru", + "dial_code": "+674", + "code": "NR" + }, + { + "name": "Nepal", + "dial_code": "+977", + "code": "NP" + }, + { + "name": "Netherlands", + "dial_code": "+31", + "code": "NL" + }, + { + "name": "Netherlands Antilles", + "dial_code": "+599", + "code": "AN" + }, + { + "name": "New Caledonia", + "dial_code": "+687", + "code": "NC" + }, + { + "name": "New Zealand", + "dial_code": "+64", + "code": "NZ" + }, + { + "name": "Nicaragua", + "dial_code": "+505", + "code": "NI" + }, + { + "name": "Niger", + "dial_code": "+227", + "code": "NE" + }, + { + "name": "Nigeria", + "dial_code": "+234", + "code": "NG" + }, + { + "name": "Niue", + "dial_code": "+683", + "code": "NU" + }, + { + "name": "Norfolk Island", + "dial_code": "+672", + "code": "NF" + }, + { + "name": "Northern Mariana Islands", + "dial_code": "+1670", + "code": "MP" + }, + { + "name": "Norway", + "dial_code": "+47", + "code": "NO" + }, + { + "name": "Oman", + "dial_code": "+968", + "code": "OM" + }, + { + "name": "Pakistan", + "dial_code": "+92", + "code": "PK" + }, + { + "name": "Palau", + "dial_code": "+680", + "code": "PW" + }, + { + "name": "Palestinian Territory, Occupied", + "dial_code": "+970", + "code": "PS" + }, + { + "name": "Panama", + "dial_code": "+507", + "code": "PA" + }, + { + "name": "Papua New Guinea", + "dial_code": "+675", + "code": "PG" + }, + { + "name": "Paraguay", + "dial_code": "+595", + "code": "PY" + }, + { + "name": "Peru", + "dial_code": "+51", + "code": "PE" + }, + { + "name": "Philippines", + "dial_code": "+63", + "code": "PH" + }, + { + "name": "Pitcairn", + "dial_code": "+872", + "code": "PN" + }, + { + "name": "Poland", + "dial_code": "+48", + "code": "PL" + }, + { + "name": "Portugal", + "dial_code": "+351", + "code": "PT" + }, + { + "name": "Puerto Rico", + "dial_code": "+1939", + "code": "PR" + }, + { + "name": "Qatar", + "dial_code": "+974", + "code": "QA" + }, + { + "name": "Romania", + "dial_code": "+40", + "code": "RO" + }, + { + "name": "Russia", + "dial_code": "+7", + "code": "RU" + }, + { + "name": "Rwanda", + "dial_code": "+250", + "code": "RW" + }, + { + "name": "Reunion", + "dial_code": "+262", + "code": "RE" + }, + { + "name": "Saint Barthelemy", + "dial_code": "+590", + "code": "BL" + }, + { + "name": "Saint Helena, Ascension and Tristan Da Cunha", + "dial_code": "+290", + "code": "SH" + }, + { + "name": "Saint Kitts and Nevis", + "dial_code": "+1869", + "code": "KN" + }, + { + "name": "Saint Lucia", + "dial_code": "+1758", + "code": "LC" + }, + { + "name": "Saint Martin", + "dial_code": "+590", + "code": "MF" + }, + { + "name": "Saint Pierre and Miquelon", + "dial_code": "+508", + "code": "PM" + }, + { + "name": "Saint Vincent and the Grenadines", + "dial_code": "+1784", + "code": "VC" + }, + { + "name": "Samoa", + "dial_code": "+685", + "code": "WS" + }, + { + "name": "San Marino", + "dial_code": "+378", + "code": "SM" + }, + { + "name": "Sao Tome and Principe", + "dial_code": "+239", + "code": "ST" + }, + { + "name": "Saudi Arabia", + "dial_code": "+966", + "code": "SA" + }, + { + "name": "Senegal", + "dial_code": "+221", + "code": "SN" + }, + { + "name": "Serbia", + "dial_code": "+381", + "code": "RS" + }, + { + "name": "Seychelles", + "dial_code": "+248", + "code": "SC" + }, + { + "name": "Sierra Leone", + "dial_code": "+232", + "code": "SL" + }, + { + "name": "Singapore", + "dial_code": "+65", + "code": "SG" + }, + { + "name": "Slovakia", + "dial_code": "+421", + "code": "SK" + }, + { + "name": "Slovenia", + "dial_code": "+386", + "code": "SI" + }, + { + "name": "Solomon Islands", + "dial_code": "+677", + "code": "SB" + }, + { + "name": "Somalia", + "dial_code": "+252", + "code": "SO" + }, + { + "name": "South Africa", + "dial_code": "+27", + "code": "ZA" + }, + { + "name": "South Sudan", + "dial_code": "+211", + "code": "SS" + }, + { + "name": "South Georgia and the South Sandwich Islands", + "dial_code": "+500", + "code": "GS" + }, + { + "name": "Spain", + "dial_code": "+34", + "code": "ES" + }, + { + "name": "Sri Lanka", + "dial_code": "+94", + "code": "LK" + }, + { + "name": "Sudan", + "dial_code": "+249", + "code": "SD" + }, + { + "name": "Suriname", + "dial_code": "+597", + "code": "SR" + }, + { + "name": "Svalbard and Jan Mayen", + "dial_code": "+47", + "code": "SJ" + }, + { + "name": "Swaziland", + "dial_code": "+268", + "code": "SZ" + }, + { + "name": "Sweden", + "dial_code": "+46", + "code": "SE" + }, + { + "name": "Switzerland", + "dial_code": "+41", + "code": "CH" + }, + { + "name": "Syrian Arab Republic", + "dial_code": "+963", + "code": "SY" + }, + { + "name": "Taiwan", + "dial_code": "+886", + "code": "TW" + }, + { + "name": "Tajikistan", + "dial_code": "+992", + "code": "TJ" + }, + { + "name": "Tanzania, United Republic of Tanzania", + "dial_code": "+255", + "code": "TZ" + }, + { + "name": "Thailand", + "dial_code": "+66", + "code": "TH" + }, + { + "name": "Timor-Leste", + "dial_code": "+670", + "code": "TL" + }, + { + "name": "Togo", + "dial_code": "+228", + "code": "TG" + }, + { + "name": "Tokelau", + "dial_code": "+690", + "code": "TK" + }, + { + "name": "Tonga", + "dial_code": "+676", + "code": "TO" + }, + { + "name": "Trinidad and Tobago", + "dial_code": "+1868", + "code": "TT" + }, + { + "name": "Tunisia", + "dial_code": "+216", + "code": "TN" + }, + { + "name": "Turkey", + "dial_code": "+90", + "code": "TR" + }, + { + "name": "Turkmenistan", + "dial_code": "+993", + "code": "TM" + }, + { + "name": "Turks and Caicos Islands", + "dial_code": "+1649", + "code": "TC" + }, + { + "name": "Tuvalu", + "dial_code": "+688", + "code": "TV" + }, + { + "name": "Uganda", + "dial_code": "+256", + "code": "UG" + }, + { + "name": "Ukraine", + "dial_code": "+380", + "code": "UA" + }, + { + "name": "United Arab Emirates", + "dial_code": "+971", + "code": "AE" + }, + { + "name": "United Kingdom", + "dial_code": "+44", + "code": "GB" + }, + { + "name": "United States", + "dial_code": "+1", + "code": "US" + }, + { + "name": "Uruguay", + "dial_code": "+598", + "code": "UY" + }, + { + "name": "Uzbekistan", + "dial_code": "+998", + "code": "UZ" + }, + { + "name": "Vanuatu", + "dial_code": "+678", + "code": "VU" + }, + { + "name": "Venezuela, Bolivarian Republic of Venezuela", + "dial_code": "+58", + "code": "VE" + }, + { + "name": "Vietnam", + "dial_code": "+84", + "code": "VN" + }, + { + "name": "Virgin Islands, British", + "dial_code": "+1284", + "code": "VG" + }, + { + "name": "Virgin Islands, U.S.", + "dial_code": "+1340", + "code": "VI" + }, + { + "name": "Wallis and Futuna", + "dial_code": "+681", + "code": "WF" + }, + { + "name": "Yemen", + "dial_code": "+967", + "code": "YE" + }, + { + "name": "Zambia", + "dial_code": "+260", + "code": "ZM" + }, + { + "name": "Zimbabwe", + "dial_code": "+263", + "code": "ZW" + } +]; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2NvZGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUMxQixJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsUUFBUTtRQUNoQixZQUFZLEVBQUUsT0FBTztLQUN4QjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxNQUFNO1FBQ2QsWUFBWSxFQUFFLFFBQVE7S0FDekI7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsV0FBVztRQUNuQixZQUFZLEVBQUUsV0FBVztLQUM1QjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxNQUFNO1FBQ2QsWUFBWSxFQUFFLE1BQU07S0FDdkI7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsVUFBVTtRQUNsQixZQUFZLEVBQUUsT0FBTztLQUN4QjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFlBQVksRUFBRSxNQUFNO0tBQ3ZCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLFFBQVE7UUFDaEIsWUFBWSxFQUFFLFNBQVM7S0FDMUI7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsV0FBVztRQUNuQixZQUFZLEVBQUUsVUFBVTtLQUMzQjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxVQUFVO1FBQ2xCLFlBQVksRUFBRSxTQUFTO0tBQzFCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLFVBQVU7UUFDbEIsWUFBWSxFQUFFLFNBQVM7S0FDMUI7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsUUFBUTtRQUNoQixZQUFZLEVBQUUsMEJBQTBCO0tBQzNDO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLFNBQVM7UUFDakIsWUFBWSxFQUFFLFFBQVE7S0FDekI7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsUUFBUTtRQUNoQixZQUFZLEVBQUUsV0FBVztLQUM1QjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxhQUFhO1FBQ3JCLFlBQVksRUFBRSxpQkFBaUI7S0FDbEM7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsU0FBUztRQUNqQixZQUFZLEVBQUUsWUFBWTtLQUM3QjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFlBQVksRUFBRSxjQUFjO0tBQy9CO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLFFBQVE7UUFDaEIsWUFBWSxFQUFFLGtCQUFrQjtLQUNuQztJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxZQUFZO1FBQ3BCLFlBQVksRUFBRSxZQUFZO0tBQzdCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLFNBQVM7UUFDakIsWUFBWSxFQUFFLE9BQU87S0FDeEI7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsUUFBUTtRQUNoQixZQUFZLEVBQUUsU0FBUztLQUMxQjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFlBQVksRUFBRSxTQUFTO0tBQzFCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLFNBQVM7UUFDakIsWUFBWSxFQUFFLGdCQUFnQjtLQUNqQztJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLFlBQVksRUFBRSxXQUFXO0tBQzVCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLFdBQVc7UUFDbkIsWUFBWSxFQUFFLGdCQUFnQjtLQUNqQztJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFlBQVksRUFBRSxPQUFPO0tBQ3hCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLG9CQUFvQjtRQUM1QixZQUFZLEVBQUUsUUFBUTtLQUN6QjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxVQUFVO1FBQ2xCLFlBQVksRUFBRSxTQUFTO0tBQzFCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLFNBQVM7UUFDakIsWUFBWSxFQUFFLGNBQWM7S0FDL0I7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUseUJBQXlCO1FBQ2pDLFlBQVksRUFBRSxxQkFBcUI7S0FDdEM7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsU0FBUztRQUNqQixZQUFZLEVBQUUsdUJBQXVCO0tBQ3hDO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLFNBQVM7UUFDakIsWUFBWSxFQUFFLGFBQWE7S0FDOUI7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsU0FBUztRQUNqQixZQUFZLEVBQUUsVUFBVTtLQUMzQjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxVQUFVO1FBQ2xCLFlBQVksRUFBRSxxQkFBcUI7S0FDdEM7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsTUFBTTtRQUNkLFlBQVksRUFBRSxTQUFTO0tBQzFCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLFVBQVU7UUFDbEIsWUFBWSxFQUFFLFVBQVU7S0FDM0I7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsT0FBTztRQUNmLFlBQVksRUFBRSxnQkFBZ0I7S0FDakM7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsUUFBUTtRQUNoQixZQUFZLEVBQUUsT0FBTztLQUN4QjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSw2QkFBNkI7UUFDckMsWUFBWSxFQUFFLFFBQVE7S0FDekI7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsT0FBTztRQUNmLFlBQVksRUFBRSxvQkFBb0I7S0FDckM7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsU0FBUztRQUNqQixZQUFZLEVBQUUsU0FBUztLQUMxQjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxXQUFXO1FBQ25CLFlBQVksRUFBRSxXQUFXO0tBQzVCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLFVBQVU7UUFDbEIsWUFBWSxFQUFFLG1CQUFtQjtLQUNwQztJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxLQUFLO1FBQ2IsWUFBWSxFQUFFLFFBQVE7S0FDekI7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsU0FBUztRQUNqQixZQUFZLEVBQUUsVUFBVTtLQUMzQjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLFlBQVksRUFBRSxlQUFlO0tBQ2hDO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLFNBQVM7UUFDakIsWUFBWSxFQUFFLHFCQUFxQjtLQUN0QztJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLFlBQVksRUFBRSw0QkFBNEI7S0FDN0M7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsNEJBQTRCO1FBQ3BDLFlBQVksRUFBRSx5QkFBeUI7S0FDMUM7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsVUFBVTtRQUNsQixZQUFZLEVBQUUsUUFBUTtLQUN6QjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxVQUFVO1FBQ2xCLFlBQVksRUFBRSxTQUFTO0tBQzFCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLFFBQVE7UUFDaEIsWUFBWSxFQUFFLFNBQVM7S0FDMUI7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsZUFBZTtRQUN2QixZQUFZLEVBQUUsVUFBVTtLQUMzQjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFlBQVksRUFBRSxRQUFRO0tBQ3pCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLFVBQVU7UUFDbEIsWUFBWSxFQUFFLFNBQVM7S0FDMUI7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUseUJBQXlCO1FBQ2pDLFlBQVksRUFBRSxnQkFBZ0I7S0FDakM7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsT0FBTztRQUNmLFlBQVksRUFBRSxlQUFlO0tBQ2hDO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLGlCQUFpQjtRQUN6QixZQUFZLEVBQUUsT0FBTztLQUN4QjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLFlBQVksRUFBRSxZQUFZO0tBQzdCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLE9BQU87UUFDZixZQUFZLEVBQUUsZUFBZTtLQUNoQztJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxXQUFXO1FBQ25CLFlBQVksRUFBRSxXQUFXO0tBQzVCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLFdBQVc7UUFDbkIsWUFBWSxFQUFFLFFBQVE7S0FDekI7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsYUFBYTtRQUNyQixZQUFZLEVBQUUsYUFBYTtLQUM5QjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxZQUFZO1FBQ3BCLFlBQVksRUFBRSxrQkFBa0I7S0FDbkM7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsYUFBYTtRQUNyQixZQUFZLEVBQUUsMkRBQTJEO0tBQzVFO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLE9BQU87UUFDZixZQUFZLEVBQUUsU0FBUztLQUMxQjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxNQUFNO1FBQ2QsWUFBWSxFQUFFLFlBQVk7S0FDN0I7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsU0FBUztRQUNqQixZQUFZLEVBQUUsb0JBQW9CO0tBQ3JDO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLEtBQUs7UUFDYixZQUFZLEVBQUUsS0FBSztLQUN0QjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxXQUFXO1FBQ25CLFlBQVksRUFBRSxVQUFVO0tBQzNCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLFNBQVM7UUFDakIsWUFBWSxFQUFFLFVBQVU7S0FDM0I7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsV0FBVztRQUNuQixZQUFZLEVBQUUsUUFBUTtLQUN6QjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxVQUFVO1FBQ2xCLFlBQVksRUFBRSxrQkFBa0I7S0FDbkM7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsVUFBVTtRQUNsQixZQUFZLEVBQUUsV0FBVztLQUM1QjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSwwQkFBMEI7UUFDbEMsWUFBWSxFQUFFLGdDQUFnQztLQUNqRDtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFlBQVksRUFBRSxPQUFPO0tBQ3hCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLFFBQVE7UUFDaEIsWUFBWSxFQUFFLFFBQVE7S0FDekI7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsVUFBVTtRQUNsQixZQUFZLEVBQUUsa0JBQWtCO0tBQ25DO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLFFBQVE7UUFDaEIsWUFBWSxFQUFFLFlBQVk7S0FDN0I7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsT0FBTztRQUNmLFlBQVksRUFBRSxXQUFXO0tBQzVCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLGdCQUFnQjtRQUN4QixZQUFZLEVBQUUsUUFBUTtLQUN6QjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxhQUFhO1FBQ3JCLFlBQVksRUFBRSxjQUFjO0tBQy9CO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLGlCQUFpQjtRQUN6QixZQUFZLEVBQUUsYUFBYTtLQUM5QjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxNQUFNO1FBQ2QsWUFBWSxFQUFFLFVBQVU7S0FDM0I7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsT0FBTztRQUNmLFlBQVksRUFBRSxTQUFTO0tBQzFCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLFFBQVE7UUFDaEIsWUFBWSxFQUFFLHNCQUFzQjtLQUN2QztJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFlBQVksRUFBRSxlQUFlO0tBQ2hDO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLG9CQUFvQjtRQUM1QixZQUFZLEVBQUUsVUFBVTtLQUMzQjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxPQUFPO1FBQ2YsWUFBWSxFQUFFLHVCQUF1QjtLQUN4QztJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSw4QkFBOEI7UUFDdEMsWUFBWSxFQUFFLGdCQUFnQjtLQUNqQztJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFlBQVksRUFBRSxTQUFTO0tBQzFCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLGtDQUFrQztRQUMxQyxZQUFZLEVBQUUsVUFBVTtLQUMzQjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFlBQVksRUFBRSxTQUFTO0tBQzFCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLEtBQUs7UUFDYixZQUFZLEVBQUUsU0FBUztLQUMxQjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxZQUFZO1FBQ3BCLFlBQVksRUFBRSxnQkFBZ0I7S0FDakM7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsY0FBYztRQUN0QixZQUFZLEVBQUUsRUFBRTtLQUNuQjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFlBQVksRUFBRSxpQkFBaUI7S0FDbEM7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsTUFBTTtRQUNkLFlBQVksRUFBRSxlQUFlO0tBQ2hDO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLFlBQVk7UUFDcEIsWUFBWSxFQUFFLGtCQUFrQjtLQUNuQztJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxVQUFVO1FBQ2xCLFlBQVksRUFBRSxpQkFBaUI7S0FDbEM7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsT0FBTztRQUNmLFlBQVksRUFBRSw0QkFBNEI7S0FDN0M7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsV0FBVztRQUNuQixZQUFZLEVBQUUsUUFBUTtLQUN6QjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFlBQVksRUFBRSxPQUFPO0tBQ3hCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLE9BQU87UUFDZixZQUFZLEVBQUUsY0FBYztLQUMvQjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxtQkFBbUI7UUFDM0IsWUFBWSxFQUFFLE9BQU87S0FDeEI7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsYUFBYTtRQUNyQixZQUFZLEVBQUUsY0FBYztLQUMvQjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxXQUFXO1FBQ25CLFlBQVksRUFBRSxRQUFRO0tBQ3pCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLE9BQU87UUFDZixZQUFZLEVBQUUsaUJBQWlCO0tBQ2xDO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLGdCQUFnQjtRQUN4QixZQUFZLEVBQUUseUJBQXlCO0tBQzFDO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLGtCQUFrQjtRQUMxQixZQUFZLEVBQUUsY0FBYztLQUMvQjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxlQUFlO1FBQ3ZCLFlBQVksRUFBRSxZQUFZO0tBQzdCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLFFBQVE7UUFDaEIsWUFBWSxFQUFFLFFBQVE7S0FDekI7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsUUFBUTtRQUNoQixZQUFZLEVBQUUsUUFBUTtLQUN6QjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxtQkFBbUI7UUFDM0IsWUFBWSxFQUFFLGVBQWU7S0FDaEM7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsV0FBVztRQUNuQixZQUFZLEVBQUUsT0FBTztLQUN4QjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxPQUFPO1FBQ2YsWUFBWSxFQUFFLGVBQWU7S0FDaEM7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsZUFBZTtRQUN2QixZQUFZLEVBQUUsWUFBWTtLQUM3QjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFlBQVksRUFBRSxTQUFTO0tBQzFCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLGdCQUFnQjtRQUN4QixZQUFZLEVBQUUsVUFBVTtLQUMzQjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxrRkFBa0Y7UUFDMUYsWUFBWSxFQUFFLGtCQUFrQjtLQUNuQztJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxPQUFPO1FBQ2YsWUFBWSxFQUFFLGNBQWM7S0FDL0I7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsT0FBTztRQUNmLFlBQVksRUFBRSxPQUFPO0tBQ3hCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLG1CQUFtQjtRQUMzQixZQUFZLEVBQUUsWUFBWTtLQUM3QjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxrQkFBa0I7UUFDMUIsWUFBWSxFQUFFLGlCQUFpQjtLQUNsQztJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxNQUFNO1FBQ2QsWUFBWSxFQUFFLE1BQU07S0FDdkI7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsU0FBUztRQUNqQixZQUFZLEVBQUUsT0FBTztLQUN4QjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLFlBQVksRUFBRSxRQUFRO0tBQ3pCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLGdCQUFnQjtRQUN4QixZQUFZLEVBQUUsTUFBTTtLQUN2QjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxZQUFZO1FBQ3BCLFlBQVksRUFBRSxXQUFXO0tBQzVCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLFNBQVM7UUFDakIsWUFBWSxFQUFFLG1CQUFtQjtLQUNwQztJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFlBQVksRUFBRSxvQkFBb0I7S0FDckM7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsU0FBUztRQUNqQixZQUFZLEVBQUUsU0FBUztLQUMxQjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSwrQkFBK0I7UUFDdkMsWUFBWSxFQUFFLFFBQVE7S0FDekI7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsU0FBUztRQUNqQixZQUFZLEVBQUUsY0FBYztLQUMvQjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxxQkFBcUI7UUFDN0IsWUFBWSxFQUFFLFdBQVc7S0FDNUI7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsV0FBVztRQUNuQixZQUFZLEVBQUUsT0FBTztLQUN4QjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLFlBQVksRUFBRSxzQkFBc0I7S0FDdkM7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsZUFBZTtRQUN2QixZQUFZLEVBQUUsaUJBQWlCO0tBQ2xDO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLFFBQVE7UUFDaEIsWUFBWSxFQUFFLGtCQUFrQjtLQUNuQztJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxPQUFPO1FBQ2YsWUFBWSxFQUFFLGdCQUFnQjtLQUNqQztJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFlBQVksRUFBRSxjQUFjO0tBQy9CO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLHlCQUF5QjtRQUNqQyxZQUFZLEVBQUUsVUFBVTtLQUMzQjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxPQUFPO1FBQ2YsWUFBWSxFQUFFLFVBQVU7S0FDM0I7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsb0JBQW9CO1FBQzVCLFlBQVksRUFBRSxPQUFPO0tBQ3hCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLFFBQVE7UUFDaEIsWUFBWSxFQUFFLFlBQVk7S0FDN0I7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsU0FBUztRQUNqQixZQUFZLEVBQUUsYUFBYTtLQUM5QjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLFlBQVksRUFBRSx5QkFBeUI7S0FDMUM7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsZ0JBQWdCO1FBQ3hCLFlBQVksRUFBRSxTQUFTO0tBQzFCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLG9CQUFvQjtRQUM1QixZQUFZLEVBQUUscUJBQXFCO0tBQ3RDO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLFdBQVc7UUFDbkIsWUFBWSxFQUFFLFlBQVk7S0FDN0I7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsU0FBUztRQUNqQixZQUFZLEVBQUUsV0FBVztLQUM1QjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxPQUFPO1FBQ2YsWUFBWSxFQUFFLFNBQVM7S0FDMUI7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsU0FBUztRQUNqQixZQUFZLEVBQUUsU0FBUztLQUMxQjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxPQUFPO1FBQ2YsWUFBWSxFQUFFLE9BQU87S0FDeEI7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsUUFBUTtRQUNoQixZQUFZLEVBQUUsUUFBUTtLQUN6QjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxPQUFPO1FBQ2YsWUFBWSxFQUFFLHlCQUF5QjtLQUMxQztJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxNQUFNO1FBQ2QsWUFBWSxFQUFFLEtBQUs7S0FDdEI7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsVUFBVTtRQUNsQixZQUFZLEVBQUUsTUFBTTtLQUN2QjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxvQ0FBb0M7UUFDNUMsWUFBWSxFQUFFLFNBQVM7S0FDMUI7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsU0FBUztRQUNqQixZQUFZLEVBQUUsa0JBQWtCO0tBQ25DO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLFNBQVM7UUFDakIsWUFBWSxFQUFFLDhCQUE4QjtLQUMvQztJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLFlBQVksRUFBRSxVQUFVO0tBQzNCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLHVCQUF1QjtRQUMvQixZQUFZLEVBQUUsWUFBWTtLQUM3QjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFlBQVksRUFBRSxRQUFRO0tBQ3pCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLFFBQVE7UUFDaEIsWUFBWSxFQUFFLFVBQVU7S0FDM0I7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsT0FBTztRQUNmLFlBQVksRUFBRSw0QkFBNEI7S0FDN0M7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsS0FBSztRQUNiLFlBQVksRUFBRSxLQUFLO0tBQ3RCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLFVBQVU7UUFDbEIsWUFBWSxFQUFFLFlBQVk7S0FDN0I7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsZ0JBQWdCO1FBQ3hCLFlBQVksRUFBRSxvQkFBb0I7S0FDckM7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsV0FBVztRQUNuQixZQUFZLEVBQUUsWUFBWTtLQUM3QjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxNQUFNO1FBQ2QsWUFBWSxFQUFFLE1BQU07S0FDdkI7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsT0FBTztRQUNmLFlBQVksRUFBRSxzQkFBc0I7S0FDdkM7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsT0FBTztRQUNmLFlBQVksRUFBRSxXQUFXO0tBQzVCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLFlBQVk7UUFDcEIsWUFBWSxFQUFFLFlBQVk7S0FDN0I7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsU0FBUztRQUNqQixZQUFZLEVBQUUsU0FBUztLQUMxQjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFlBQVksRUFBRSxPQUFPO0tBQ3hCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLE9BQU87UUFDZixZQUFZLEVBQUUsU0FBUztLQUMxQjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxPQUFPO1FBQ2YsWUFBWSxFQUFFLFFBQVE7S0FDekI7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsaUJBQWlCO1FBQ3pCLFlBQVksRUFBRSxPQUFPO0tBQ3hCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLE9BQU87UUFDZixZQUFZLEVBQUUsVUFBVTtLQUMzQjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFlBQVksRUFBRSxRQUFRO0tBQ3pCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLFFBQVE7UUFDaEIsWUFBWSxFQUFFLFFBQVE7S0FDekI7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsZ0JBQWdCO1FBQ3hCLFlBQVksRUFBRSx1QkFBdUI7S0FDeEM7Q0FDSixDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHO0lBQ3pCO1FBQ0ksTUFBTSxFQUFFLGFBQWE7UUFDckIsV0FBVyxFQUFFLEtBQUs7UUFDbEIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLGVBQWU7UUFDdkIsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFNBQVM7UUFDakIsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFNBQVM7UUFDakIsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLGVBQWU7UUFDdkIsV0FBVyxFQUFFLE9BQU87UUFDcEIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFNBQVM7UUFDakIsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFFBQVE7UUFDaEIsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFVBQVU7UUFDbEIsV0FBVyxFQUFFLE9BQU87UUFDcEIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFlBQVk7UUFDcEIsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLHFCQUFxQjtRQUM3QixXQUFXLEVBQUUsT0FBTztRQUNwQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsV0FBVztRQUNuQixXQUFXLEVBQUUsS0FBSztRQUNsQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsU0FBUztRQUNqQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsT0FBTztRQUNmLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxXQUFXO1FBQ25CLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxZQUFZO1FBQ3BCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFdBQVcsRUFBRSxPQUFPO1FBQ3BCLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxZQUFZO1FBQ3BCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxVQUFVO1FBQ2xCLFdBQVcsRUFBRSxPQUFPO1FBQ3BCLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxPQUFPO1FBQ2YsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFNBQVM7UUFDakIsV0FBVyxFQUFFLE9BQU87UUFDcEIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFFBQVE7UUFDaEIsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLGlDQUFpQztRQUN6QyxXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsd0JBQXdCO1FBQ2hDLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxVQUFVO1FBQ2xCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxnQ0FBZ0M7UUFDeEMsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLG1CQUFtQjtRQUMzQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsVUFBVTtRQUNsQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsY0FBYztRQUN0QixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsU0FBUztRQUNqQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsVUFBVTtRQUNsQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsVUFBVTtRQUNsQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsUUFBUTtRQUNoQixXQUFXLEVBQUUsSUFBSTtRQUNqQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsWUFBWTtRQUNwQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsZ0JBQWdCO1FBQ3hCLFdBQVcsRUFBRSxPQUFPO1FBQ3BCLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSwwQkFBMEI7UUFDbEMsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLE1BQU07UUFDZCxXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsT0FBTztRQUNmLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxPQUFPO1FBQ2YsV0FBVyxFQUFFLEtBQUs7UUFDbEIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLGtCQUFrQjtRQUMxQixXQUFXLEVBQUUsS0FBSztRQUNsQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUseUJBQXlCO1FBQ2pDLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxVQUFVO1FBQ2xCLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxPQUFPO1FBQ2YsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLDZDQUE2QztRQUNyRCxXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsY0FBYztRQUN0QixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsWUFBWTtRQUNwQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsZUFBZTtRQUN2QixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsU0FBUztRQUNqQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsTUFBTTtRQUNkLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxnQkFBZ0I7UUFDeEIsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFNBQVM7UUFDakIsV0FBVyxFQUFFLEtBQUs7UUFDbEIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFVBQVU7UUFDbEIsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFVBQVU7UUFDbEIsV0FBVyxFQUFFLE9BQU87UUFDcEIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLG9CQUFvQjtRQUM1QixXQUFXLEVBQUUsT0FBTztRQUNwQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsU0FBUztRQUNqQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsT0FBTztRQUNmLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxhQUFhO1FBQ3JCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxtQkFBbUI7UUFDM0IsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFNBQVM7UUFDakIsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFNBQVM7UUFDakIsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFVBQVU7UUFDbEIsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLDZCQUE2QjtRQUNyQyxXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsZUFBZTtRQUN2QixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsTUFBTTtRQUNkLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxlQUFlO1FBQ3ZCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxrQkFBa0I7UUFDMUIsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLE9BQU87UUFDZixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsUUFBUTtRQUNoQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsU0FBUztRQUNqQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsU0FBUztRQUNqQixXQUFXLEVBQUUsS0FBSztRQUNsQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsT0FBTztRQUNmLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxXQUFXO1FBQ25CLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxXQUFXO1FBQ25CLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFdBQVcsRUFBRSxPQUFPO1FBQ3BCLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxZQUFZO1FBQ3BCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxNQUFNO1FBQ2QsV0FBVyxFQUFFLE9BQU87UUFDcEIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFdBQVc7UUFDbkIsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFVBQVU7UUFDbEIsV0FBVyxFQUFFLEtBQUs7UUFDbEIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFFBQVE7UUFDaEIsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLGVBQWU7UUFDdkIsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFFBQVE7UUFDaEIsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLE9BQU87UUFDZixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsK0JBQStCO1FBQ3ZDLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxVQUFVO1FBQ2xCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxXQUFXO1FBQ25CLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxPQUFPO1FBQ2YsV0FBVyxFQUFFLEtBQUs7UUFDbEIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFdBQVc7UUFDbkIsV0FBVyxFQUFFLEtBQUs7UUFDbEIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLHdDQUF3QztRQUNoRCxXQUFXLEVBQUUsS0FBSztRQUNsQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsTUFBTTtRQUNkLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxhQUFhO1FBQ3JCLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxPQUFPO1FBQ2YsV0FBVyxFQUFFLEtBQUs7UUFDbEIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFNBQVM7UUFDakIsV0FBVyxFQUFFLE9BQU87UUFDcEIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLE9BQU87UUFDZixXQUFXLEVBQUUsS0FBSztRQUNsQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsUUFBUTtRQUNoQixXQUFXLEVBQUUsS0FBSztRQUNsQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsUUFBUTtRQUNoQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsWUFBWTtRQUNwQixXQUFXLEVBQUUsS0FBSztRQUNsQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsT0FBTztRQUNmLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxVQUFVO1FBQ2xCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSw4Q0FBOEM7UUFDdEQsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLGdDQUFnQztRQUN4QyxXQUFXLEVBQUUsS0FBSztRQUNsQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsUUFBUTtRQUNoQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsWUFBWTtRQUNwQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsTUFBTTtRQUNkLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSx3QkFBd0I7UUFDaEMsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLGVBQWU7UUFDdkIsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFdBQVc7UUFDbkIsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFlBQVk7UUFDcEIsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLE9BQU87UUFDZixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsV0FBVztRQUNuQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsWUFBWTtRQUNwQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsUUFBUTtRQUNoQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsVUFBVTtRQUNsQixXQUFXLEVBQUUsS0FBSztRQUNsQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsVUFBVTtRQUNsQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsTUFBTTtRQUNkLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxPQUFPO1FBQ2YsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLGtCQUFrQjtRQUMxQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsWUFBWTtRQUNwQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsWUFBWTtRQUNwQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsV0FBVztRQUNuQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsU0FBUztRQUNqQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsUUFBUTtRQUNoQixXQUFXLEVBQUUsS0FBSztRQUNsQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsNENBQTRDO1FBQ3BELFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxVQUFVO1FBQ2xCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxZQUFZO1FBQ3BCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxZQUFZO1FBQ3BCLFdBQVcsRUFBRSxPQUFPO1FBQ3BCLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxZQUFZO1FBQ3BCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxPQUFPO1FBQ2YsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLE9BQU87UUFDZixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsYUFBYTtRQUNyQixXQUFXLEVBQUUsS0FBSztRQUNsQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsc0JBQXNCO1FBQzlCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxlQUFlO1FBQ3ZCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxhQUFhO1FBQ3JCLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxXQUFXO1FBQ25CLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxPQUFPO1FBQ2YsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFNBQVM7UUFDakIsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLE1BQU07UUFDZCxXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsZ0JBQWdCO1FBQ3hCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSwwQkFBMEI7UUFDbEMsV0FBVyxFQUFFLE9BQU87UUFDcEIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFFBQVE7UUFDaEIsV0FBVyxFQUFFLEtBQUs7UUFDbEIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLE1BQU07UUFDZCxXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsVUFBVTtRQUNsQixXQUFXLEVBQUUsS0FBSztRQUNsQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsT0FBTztRQUNmLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxpQ0FBaUM7UUFDekMsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFFBQVE7UUFDaEIsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLGtCQUFrQjtRQUMxQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsVUFBVTtRQUNsQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsTUFBTTtRQUNkLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxhQUFhO1FBQ3JCLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxVQUFVO1FBQ2xCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxVQUFVO1FBQ2xCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxhQUFhO1FBQ3JCLFdBQVcsRUFBRSxPQUFPO1FBQ3BCLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxPQUFPO1FBQ2YsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFNBQVM7UUFDakIsV0FBVyxFQUFFLEtBQUs7UUFDbEIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFFBQVE7UUFDaEIsV0FBVyxFQUFFLElBQUk7UUFDakIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFFBQVE7UUFDaEIsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFNBQVM7UUFDakIsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLGtCQUFrQjtRQUMxQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsOENBQThDO1FBQ3RELFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSx1QkFBdUI7UUFDL0IsV0FBVyxFQUFFLE9BQU87UUFDcEIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLGFBQWE7UUFDckIsV0FBVyxFQUFFLE9BQU87UUFDcEIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLGNBQWM7UUFDdEIsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLDJCQUEyQjtRQUNuQyxXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsa0NBQWtDO1FBQzFDLFdBQVcsRUFBRSxPQUFPO1FBQ3BCLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxPQUFPO1FBQ2YsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFlBQVk7UUFDcEIsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLHVCQUF1QjtRQUMvQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsY0FBYztRQUN0QixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsU0FBUztRQUNqQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsUUFBUTtRQUNoQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsWUFBWTtRQUNwQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsY0FBYztRQUN0QixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsV0FBVztRQUNuQixXQUFXLEVBQUUsS0FBSztRQUNsQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsVUFBVTtRQUNsQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsVUFBVTtRQUNsQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsaUJBQWlCO1FBQ3pCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxjQUFjO1FBQ3RCLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxhQUFhO1FBQ3JCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSw4Q0FBOEM7UUFDdEQsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLE9BQU87UUFDZixXQUFXLEVBQUUsS0FBSztRQUNsQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsV0FBVztRQUNuQixXQUFXLEVBQUUsS0FBSztRQUNsQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsT0FBTztRQUNmLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxVQUFVO1FBQ2xCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSx3QkFBd0I7UUFDaEMsV0FBVyxFQUFFLEtBQUs7UUFDbEIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFdBQVc7UUFDbkIsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFFBQVE7UUFDaEIsV0FBVyxFQUFFLEtBQUs7UUFDbEIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLGFBQWE7UUFDckIsV0FBVyxFQUFFLEtBQUs7UUFDbEIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLHNCQUFzQjtRQUM5QixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsUUFBUTtRQUNoQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsWUFBWTtRQUNwQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsdUNBQXVDO1FBQy9DLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxVQUFVO1FBQ2xCLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxhQUFhO1FBQ3JCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxNQUFNO1FBQ2QsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFNBQVM7UUFDakIsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLE9BQU87UUFDZixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUscUJBQXFCO1FBQzdCLFdBQVcsRUFBRSxPQUFPO1FBQ3BCLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxjQUFjO1FBQ3RCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSwwQkFBMEI7UUFDbEMsV0FBVyxFQUFFLE9BQU87UUFDcEIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFFBQVE7UUFDaEIsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFFBQVE7UUFDaEIsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFNBQVM7UUFDakIsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLHNCQUFzQjtRQUM5QixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsZ0JBQWdCO1FBQ3hCLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxlQUFlO1FBQ3ZCLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxZQUFZO1FBQ3BCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSw2Q0FBNkM7UUFDckQsV0FBVyxFQUFFLEtBQUs7UUFDbEIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLFNBQVM7UUFDakIsV0FBVyxFQUFFLEtBQUs7UUFDbEIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLHlCQUF5QjtRQUNqQyxXQUFXLEVBQUUsT0FBTztRQUNwQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsc0JBQXNCO1FBQzlCLFdBQVcsRUFBRSxPQUFPO1FBQ3BCLE1BQU0sRUFBRSxJQUFJO0tBQ2Y7SUFDRDtRQUNJLE1BQU0sRUFBRSxtQkFBbUI7UUFDM0IsV0FBVyxFQUFFLE1BQU07UUFDbkIsTUFBTSxFQUFFLElBQUk7S0FDZjtJQUNEO1FBQ0ksTUFBTSxFQUFFLE9BQU87UUFDZixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsUUFBUTtRQUNoQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0lBQ0Q7UUFDSSxNQUFNLEVBQUUsVUFBVTtRQUNsQixXQUFXLEVBQUUsTUFBTTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUNmO0NBQ0osQ0FBQSJ9 \ No newline at end of file diff --git a/packages/i18n/dist/lib/deepl.d.ts b/packages/i18n/dist/lib/deepl.d.ts new file mode 100644 index 00000000..b41b66cd --- /dev/null +++ b/packages/i18n/dist/lib/deepl.d.ts @@ -0,0 +1,37 @@ +export interface IGlossary { + glossaryId: string; + name: string; + ready: boolean; + sourceLang: DeepLLanguages; + targetLang: DeepLLanguages; + creationTime: string; + entryCount: number; + entries: string; + hash: string; +} +export interface IDeepLOptions { + free_api: Boolean; + auth_key: string; + text: string; + source_lang?: DeepLLanguages; + target_lang: DeepLLanguages; + split_sentences?: '0' | '1' | 'nonewlines'; + preserve_formatting?: '0' | '1'; + formality?: 'default' | 'more' | 'less'; + tag_handling?: string[]; + non_splitting_tags?: string[]; + outline_detection?: string; + splitting_tags?: string[]; + ignore_tags?: string[]; + glossary_id?: string; +} +export interface IDeepLResponse { + translations: { + detected_source_language: string; + text: string; + }[]; +} +export declare const translate_deeplT: (parameters: IDeepLOptions) => Promise; +export declare const translate_deepl: (parameters: IDeepLOptions) => Promise; +export declare const create_glossary: (parameters: IDeepLOptions) => Promise; +export type DeepLLanguages = 'BG' | 'CS' | 'DA' | 'DE' | 'EL' | 'EN-GB' | 'EN-US' | 'EN' | 'ES' | 'ET' | 'FI' | 'FR' | 'HU' | 'IT' | 'JA' | 'LT' | 'LV' | 'NL' | 'PL' | 'PT-PT' | 'PT-BR' | 'PT' | 'RO' | 'RU' | 'SK' | 'SL' | 'SV' | 'ZH'; diff --git a/packages/i18n/dist/lib/deepl.js b/packages/i18n/dist/lib/deepl.js new file mode 100644 index 00000000..237288d0 --- /dev/null +++ b/packages/i18n/dist/lib/deepl.js @@ -0,0 +1,53 @@ +//import axios, { AxiosError} from 'axios'; +import { stringify } from 'querystring'; +import { default as axios } from 'axios'; +export const translate_deeplT = async (parameters) => { + // const sub_domain = parameters.free_api ? 'api-free' : 'api'; + try { + const params = "preserve_formatting=1&tag_handling=xml&auth_key=4f6441ab-8e09-48d3-9031-3ca5cd463f79&formality=default&free_api=false&text=Variant&target_lang=de&source_lang=en"; + const ret = axios(`https://api.deepl.com/v2/translate`, params); + return ret; + // return (ret as any).data + /* + const ret = await axios.post( + `https://${sub_domain}.deepl.com/v2/translate`, + params, {}) as any + return (ret as any).data + */ + } + catch (error) { + console.error(error.message); + } +}; +export const translate_deepl = async (parameters) => { + const sub_domain = parameters.free_api ? 'api-free' : 'api'; + try { + let params = stringify(parameters); + return axios.post(`https://${sub_domain}.deepl.com/v2/translate`, params, {}); + // return (ret as any).data + /* + const ret = await axios.post( + `https://${sub_domain}.deepl.com/v2/translate`, + params, {}) as any + return (ret as any).data + */ + } + catch (error) { + console.error('error : translate_deepl', error.message); + //console.error(error.message) + } +}; +export const create_glossary = async (parameters) => { + const sub_domain = parameters.free_api ? 'api-free' : 'api'; + try { + const params = stringify(parameters); + "auth_key=34dbf59f-adeb-1959-d906-502e0ec6afb8&free_api=false&name=pp&target_lang=DE&source_lang=EN&entries=Mould%2CKunststoffform%0D%0AShredder%2CGranulator%0D%0A&entries_format=csv"; + const ret = await axios.post(`https://${sub_domain}.deepl.com/v2/glossaries`, params); + return ret.data; + } + catch (error) { + //@todo : never called + console.error(error.response.data); + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2RlZXBsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxPQUFPLElBQUksS0FBSyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBeUN6QyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLEVBQ2pDLFVBQXlCLEVBQzNCLEVBQUU7SUFDQSwrREFBK0Q7SUFDL0QsSUFBSTtRQUNBLE1BQU0sTUFBTSxHQUFHLGtLQUFrSyxDQUFBO1FBQ2pMLE1BQU0sR0FBRyxHQUFJLEtBQUssQ0FDZCxvQ0FBb0MsRUFDcEMsTUFBYSxDQUFRLENBQUE7UUFFekIsT0FBTyxHQUFHLENBQUE7UUFDViwyQkFBMkI7UUFDbkM7Ozs7O2tCQUtVO0tBQ0w7SUFBQyxPQUFPLEtBQUssRUFBRTtRQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0tBQy9CO0FBQ0wsQ0FBQyxDQUFBO0FBQ0QsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEtBQUssRUFDaEMsVUFBeUIsRUFDM0IsRUFBRTtJQUNBLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzVELElBQUk7UUFDQSxJQUFJLE1BQU0sR0FBRyxTQUFTLENBQUMsVUFBaUIsQ0FBQyxDQUFBO1FBQ3pDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FDYixXQUFXLFVBQVUseUJBQXlCLEVBQzlDLE1BQU0sRUFBRSxFQUFFLENBQVEsQ0FBQTtRQUN0QiwyQkFBMkI7UUFDbkM7Ozs7O2tCQUtVO0tBQ0w7SUFBQyxPQUFPLEtBQUssRUFBRTtRQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMseUJBQXlCLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3ZELDhCQUE4QjtLQUNqQztBQUNMLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxLQUFLLEVBQ2hDLFVBQXlCLEVBQzNCLEVBQUU7SUFDQSxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQTtJQUMzRCxJQUFJO1FBQ0EsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLFVBQWlCLENBQUMsQ0FBQTtRQUMzQyx1TEFBdUwsQ0FBQTtRQUN2TCxNQUFNLEdBQUcsR0FBRyxNQUFPLEtBQUssQ0FBQyxJQUFJLENBQ3pCLFdBQVcsVUFBVSwwQkFBMEIsRUFDL0MsTUFBTSxDQUFTLENBQUE7UUFFbkIsT0FBUSxHQUFXLENBQUMsSUFBSSxDQUFBO0tBRTNCO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDWixzQkFBc0I7UUFDdEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO0tBQ3JDO0FBQ0wsQ0FBQyxDQUFBIn0= \ No newline at end of file diff --git a/packages/i18n/dist/lib/filters.d.ts b/packages/i18n/dist/lib/filters.d.ts new file mode 100644 index 00000000..092c5553 --- /dev/null +++ b/packages/i18n/dist/lib/filters.d.ts @@ -0,0 +1,4 @@ +export declare const Hugo: (raw: string, translated: string, file?: string) => string; +export declare const Filters: { + Hugo: (raw: string, translated: string, file?: string) => string; +}; diff --git a/packages/i18n/dist/lib/filters.js b/packages/i18n/dist/lib/filters.js new file mode 100644 index 00000000..bcadd8fb --- /dev/null +++ b/packages/i18n/dist/lib/filters.js @@ -0,0 +1,43 @@ +import { logger } from "../index.js"; +import { sync as write } from "@polymech/fs/write"; +const frontMatter = require('front-matter'); +const YAML = require('json-to-pretty-yaml'); +const index = (attrs, key) => Object.keys(attrs).indexOf(key); +export const Hugo = (raw, translated, file = "") => { + let fm = {}; + if (!frontMatter.test(raw)) { + return translated; + } + fm = frontMatter(raw).attributes; + let fmTranslated = {}; + try { + fmTranslated = frontMatter(translated); + } + catch (e) { + write(file + "_e.md", translated); + } + const translatedKeys = {}; + const keys = [ + 'title' + ]; + keys.forEach((k) => { + const e = Object.entries(fmTranslated.attributes); + const s = Object.entries(fm).findIndex((v) => v[0] == k); + const v = e[s][1]; + translatedKeys[k] = v; + }); + const fmPatch = { + ...fm, + ...translatedKeys + }; + try { + return `---\n${YAML.stringify(fmPatch)}---\n${fmTranslated.body}`; + } + catch (e) { + logger.error(`Error, `, e); + } +}; +export const Filters = { + Hugo +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZmlsdGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3BDLE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFFbEQsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFBO0FBQzNDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO0FBRTNDLE1BQU0sS0FBSyxHQUFHLENBQUMsS0FBVSxFQUFFLEdBQVcsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUE7QUFFMUUsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBVyxFQUFFLFVBQWtCLEVBQUUsT0FBYSxFQUFFLEVBQUUsRUFBRTtJQUNyRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUE7SUFDWCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUN4QixPQUFPLFVBQVUsQ0FBQTtLQUNwQjtJQUNELEVBQUUsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFBO0lBRWhDLElBQUksWUFBWSxHQUFRLEVBQUUsQ0FBQTtJQUMxQixJQUFJO1FBQ0EsWUFBWSxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQTtLQUN6QztJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1IsS0FBSyxDQUFDLElBQUksR0FBRyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUE7S0FDcEM7SUFFRCxNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUE7SUFFekIsTUFBTSxJQUFJLEdBQUc7UUFDVCxPQUFPO0tBQ1YsQ0FBQTtJQUVELElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNmLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQ2pELE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7UUFDeEQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2pCLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDekIsQ0FBQyxDQUFDLENBQUE7SUFFRixNQUFNLE9BQU8sR0FBRztRQUNaLEdBQUcsRUFBRTtRQUNMLEdBQUcsY0FBYztLQUNwQixDQUFBO0lBRUQsSUFBSTtRQUNBLE9BQU8sUUFBUSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtLQUNwRTtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1IsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUE7S0FDN0I7QUFDTCxDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUc7SUFDbkIsSUFBSTtDQUNQLENBQUEifQ== \ No newline at end of file diff --git a/packages/i18n/dist/lib/glossary.d.ts b/packages/i18n/dist/lib/glossary.d.ts new file mode 100644 index 00000000..56ec4936 --- /dev/null +++ b/packages/i18n/dist/lib/glossary.d.ts @@ -0,0 +1,16 @@ +import * as deeplN from 'deepl-node'; +import * as deepl from './deepl.js'; +import { IOptions } from '../types.js'; +export declare const name: (srcLang: any, dstLang: any) => string; +export declare const glossaryMetaPath: (storeRoot: any, srcLang: any, dstLang: any) => string; +export declare const glossaryPath: (storeRoot: any, srcLang: any, dstLang: any) => string; +export declare const meta: (storeRoot: string, srcLang: string, dstLang: string) => deepl.IGlossary | null; +export declare const data: (storeRoot: string, srcLang: string, dstLang: string) => string | null; +export declare const hash: (storeRoot: string, srcLang: string, dstLang: string) => string; +export declare const update_hash: (storeRoot: string, srcLang: string, dstLang: string) => void; +export declare const id2: (options: IOptions, dOptions: deepl.IDeepLOptions, storeRoot: string, srcLang: string, dstLang: string) => Promise; +export declare const create: (srcLang: string, dstLang: string, options: IOptions) => Promise; +export declare const pairs: (dOptions: deepl.IDeepLOptions, file: string) => Promise; +export declare const update: (srcLang: string, dstLang: string, options: IOptions) => Promise; +export declare const id: (root: string) => string; +export declare const _data: (storeRoot: string, srcLang: string, dstLang: string) => any; diff --git a/packages/i18n/dist/lib/glossary.js b/packages/i18n/dist/lib/glossary.js new file mode 100644 index 00000000..7a31f687 --- /dev/null +++ b/packages/i18n/dist/lib/glossary.js @@ -0,0 +1,101 @@ +import * as path from 'path'; +import * as deeplN from 'deepl-node'; +import { isFile, resolve } from "@polymech/commons"; +import { sync as read } from "@polymech/fs/read"; +import { sync as exists } from "@polymech/fs/exists"; +import { sync as write } from "@polymech/fs/write"; +import { GLOSSARY_INFO_FILE, GLOSSARY_FILE_NAME } from '../constants.js'; +import { hash as md5 } from './strings.js'; +import { logger } from '../index.js'; +export const name = (srcLang, dstLang) => `OSR-${srcLang}-${dstLang}`; +export const glossaryMetaPath = (storeRoot, srcLang, dstLang) => path.resolve(resolve(`${storeRoot}/glossary/${srcLang}/${dstLang}/${GLOSSARY_INFO_FILE}`)); +export const glossaryPath = (storeRoot, srcLang, dstLang) => path.resolve(resolve(`${storeRoot}/glossary/${srcLang}/${dstLang}/${GLOSSARY_FILE_NAME}`)); +export const meta = (storeRoot, srcLang, dstLang) => { + const filePath = glossaryMetaPath(storeRoot, srcLang, dstLang); + if (exists(filePath)) { + return read(filePath, 'json'); + } + return null; +}; +export const data = (storeRoot, srcLang, dstLang) => { + const filePath = glossaryPath(storeRoot, srcLang, dstLang); + if (exists(filePath)) { + return read(filePath, 'string'); + } + return null; +}; +export const hash = (storeRoot, srcLang, dstLang) => { + const _data = data(storeRoot, srcLang, dstLang); + return _data ? md5(JSON.stringify(_data)) : null; +}; +export const update_hash = (storeRoot, srcLang, dstLang) => { + const glossary_meta = glossaryMetaPath(storeRoot, srcLang, dstLang); + const glossary = meta(storeRoot, srcLang, dstLang); + if (glossary) { + glossary.hash = hash(storeRoot, srcLang, dstLang); + write(glossary_meta, glossary); + } +}; +export const id2 = async (options, dOptions, storeRoot, srcLang, dstLang) => { + return meta(storeRoot, srcLang, dstLang)?.glossaryId; +}; +export const create = async (srcLang = 'EN', dstLang = 'DE', options) => { + const _name = name(srcLang, dstLang); + const translator = new deeplN.Translator(options.api_key); + const glossary_meta_path = glossaryMetaPath(options.storeRoot, srcLang, dstLang); + const glossary_data_path = glossaryPath(options.storeRoot, srcLang, dstLang); + const glossary_meta = meta(options.storeRoot, srcLang, dstLang); + if (!exists(glossary_data_path)) { + write(glossary_data_path, 'TEST,TEST'); + } + if (exists(glossary_meta_path) && glossary_meta && glossary_meta.glossaryId) { + try { + await translator.deleteGlossary(glossary_meta.glossaryId); + } + catch (e) { + logger.warn('Delete glossary failed:', _name, e.message); + } + } + const ret = await translator.createGlossaryWithCsv(_name, srcLang, dstLang, glossary_data_path); + if (!ret) { + logger.error('Create glossary failed', glossary_data_path, options); + return null; + } + write(glossary_meta_path, ret); + update_hash(options.storeRoot, srcLang, dstLang); + return ret; +}; +export const pairs = async (dOptions, file) => { + const translator = new deeplN.Translator(dOptions.auth_key); + const ret = await translator.getGlossaryLanguagePairs(); + logger.info('Supported glossary pairs', ret); + write(file, ret); + return ret; +}; +export const update = async (srcLang, dstLang, options) => { + const metaPath = glossaryMetaPath(options.storeRoot, srcLang, dstLang); + const dataPath = glossaryPath(options.storeRoot, srcLang, dstLang); + let glossaryMeta = meta(options.storeRoot, srcLang, dstLang); + if (!glossaryMeta || !exists(metaPath) || !exists(dataPath)) { + glossaryMeta = await create(srcLang, dstLang, options); + return glossaryMeta; + } + if (glossaryMeta.hash !== hash(options.storeRoot, srcLang, dstLang)) { + glossaryMeta = await create(srcLang, dstLang, options); + } + return glossaryMeta; +}; +export const id = (root) => { + root = path.resolve(resolve(root)); + if (exists(root) && isFile(root)) { + return (read(root, 'json') || {}).glossaryId; + } +}; +export const _data = (storeRoot, srcLang, dstLang) => { + storeRoot = path.resolve(resolve(storeRoot)); + if (!id(storeRoot)) { + const filePath = glossaryMetaPath(storeRoot, srcLang, dstLang); + return read(filePath, 'string'); + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvc3NhcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2dsb3NzYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBQzVCLE9BQU8sS0FBSyxNQUFNLE1BQU0sWUFBWSxDQUFBO0FBQ3BDLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDbkQsT0FBTyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBR3BELE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDbEQsT0FBTyxFQUNILGtCQUFrQixFQUNsQixrQkFBa0IsRUFDckIsTUFBTSxpQkFBaUIsQ0FBQTtBQUd4QixPQUFPLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRXBDLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sT0FBTyxJQUFJLE9BQU8sRUFBRSxDQUFBO0FBRXJFLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUM1RCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLFNBQVMsYUFBYSxPQUFPLElBQUksT0FBTyxJQUFJLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFBO0FBRTlGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FDeEQsSUFBSSxDQUFD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 \ No newline at end of file diff --git a/packages/i18n/dist/lib/index.d.ts b/packages/i18n/dist/lib/index.d.ts new file mode 100644 index 00000000..4e7016c7 --- /dev/null +++ b/packages/i18n/dist/lib/index.d.ts @@ -0,0 +1,4 @@ +export * from './deepl.js'; +export * from './codes.js'; +export * from './filters.js'; +export * from './store.js'; diff --git a/packages/i18n/dist/lib/index.js b/packages/i18n/dist/lib/index.js new file mode 100644 index 00000000..622d91cb --- /dev/null +++ b/packages/i18n/dist/lib/index.js @@ -0,0 +1,5 @@ +export * from './deepl.js'; +export * from './codes.js'; +export * from './filters.js'; +export * from './store.js'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsWUFBWSxDQUFBO0FBQzFCLGNBQWMsWUFBWSxDQUFBO0FBQzFCLGNBQWMsY0FBYyxDQUFBO0FBQzVCLGNBQWMsWUFBWSxDQUFBIn0= \ No newline at end of file diff --git a/packages/i18n/dist/lib/store.d.ts b/packages/i18n/dist/lib/store.d.ts new file mode 100644 index 00000000..b9d20a5c --- /dev/null +++ b/packages/i18n/dist/lib/store.d.ts @@ -0,0 +1,4 @@ +export declare const clean: (text?: string) => string; +export declare const sortObjectKeysAlpha: (obj: Record) => Record; +export declare const store: (storePath: string, text: string, translation: string, options?: any) => string; +export declare const get: (storePath: string, text: string, options?: any) => any; diff --git a/packages/i18n/dist/lib/store.js b/packages/i18n/dist/lib/store.js new file mode 100644 index 00000000..43fe1e24 --- /dev/null +++ b/packages/i18n/dist/lib/store.js @@ -0,0 +1,37 @@ +import { sync as write } from '@polymech/fs/write'; +import { sync as read } from '@polymech/fs/read'; +import { resolve } from '@polymech/commons'; +import * as path from 'path'; +const removeNonPrintableCharacters = (text) => text.replace(/[^\x20-\x7E]/g, ''); +export const clean = (text = "") => text.trim(); +export const sortObjectKeysAlpha = (obj) => { + const sortedKeys = Object.keys(obj).sort(); + const sortedObj = {}; + sortedKeys.forEach((key) => { + sortedObj[key] = obj[key]; + }); + return sortedObj; +}; +export const store = (storePath, text, translation, options = {}) => { + if (storePath && options && options.store) { + storePath = path.resolve(resolve(options.store, options.alt, { + DST_LANG: options.dstLang + })); + } + const store = read(storePath, 'json') || {}; + store[text] = clean(translation); + write(storePath, sortObjectKeysAlpha(store)); + return translation; +}; +export const get = (storePath, text, options = {}) => { + if (storePath && options && options.store) { + storePath = path.resolve(resolve(options.store, options.alt, { + DST_LANG: options.dstLang + })); + } + const store = read(storePath, 'json') || {}; + if (store[text]) { + return store[text]; + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDbEQsT0FBTyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUE7QUFFNUIsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLElBQVksRUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUE7QUFFaEcsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsT0FBZSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtBQUV2RCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEdBQXdCLEVBQXVCLEVBQUU7SUFDcEYsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzQyxNQUFNLFNBQVMsR0FBd0IsRUFBRSxDQUFDO0lBQzFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUMxQixTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxTQUFTLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsU0FBZ0IsRUFBRSxJQUFZLEVBQUUsV0FBa0IsRUFBRSxVQUFjLEVBQUUsRUFBRSxFQUFFO0lBQzdGLElBQUksU0FBUyxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO1FBQ3BDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUU7WUFDekQsUUFBUSxFQUFFLE9BQU8sQ0FBQyxPQUFPO1NBQzVCLENBQUMsQ0FBQyxDQUFBO0tBQ047SUFDSixNQUFNLEtBQUssR0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUMvQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQ2hDLEtBQUssQ0FBQyxTQUFTLEVBQUUsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtJQUM1QyxPQUFPLFdBQVcsQ0FBQTtBQUNuQixDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxTQUFnQixFQUFFLElBQVksRUFBRSxVQUFjLEVBQUUsRUFBRSxFQUFFO0lBQ3ZFLElBQUksU0FBUyxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO1FBQ3BDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUU7WUFDekQsUUFBUSxFQUFFLE9BQU8sQ0FBQyxPQUFPO1NBQzVCLENBQUMsQ0FBQyxDQUFBO0tBQ047SUFDSixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUMzQyxJQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBQztRQUNkLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO0tBQ2xCO0FBQ0YsQ0FBQyxDQUFBIn0= \ No newline at end of file diff --git a/packages/i18n/dist/lib/strings.d.ts b/packages/i18n/dist/lib/strings.d.ts new file mode 100644 index 00000000..0e963c0a --- /dev/null +++ b/packages/i18n/dist/lib/strings.d.ts @@ -0,0 +1,2 @@ +export declare const clean: (text?: string) => string; +export declare const hash: (text: string) => string; diff --git a/packages/i18n/dist/lib/strings.js b/packages/i18n/dist/lib/strings.js new file mode 100644 index 00000000..ebfd04ef --- /dev/null +++ b/packages/i18n/dist/lib/strings.js @@ -0,0 +1,4 @@ +import { createHash } from 'crypto'; +export const clean = (text = "") => text.trim(); +export const hash = (text) => createHash('md5').update(clean(text)).digest('base64'); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvc3RyaW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQ25DLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLE9BQWUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUE7QUFDdkQsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQSJ9 \ No newline at end of file diff --git a/packages/i18n/dist/lib/test_data.d.ts b/packages/i18n/dist/lib/test_data.d.ts new file mode 100644 index 00000000..a763f140 --- /dev/null +++ b/packages/i18n/dist/lib/test_data.d.ts @@ -0,0 +1 @@ +export declare const xls2Cols: () => string[][]; diff --git a/packages/i18n/dist/lib/test_data.js b/packages/i18n/dist/lib/test_data.js new file mode 100644 index 00000000..e51635ff --- /dev/null +++ b/packages/i18n/dist/lib/test_data.js @@ -0,0 +1,129 @@ +export const xls2Cols = () => { + return [ + [ + "", + "", + ], + [ + "Model Number", + "WSGP-230", + ], + [ + "Plastic Processed", + "HDPE/PP", + ], + [ + "Plastic Processed", + "PE/PP", + ], + [ + "Plastic Processed", + "LDPE", + ], + [ + "Plastic Processed", + "ABS", + ], + [ + "Condition", + "random2" + ], + [ + "Output (kg/h)", + "100 - 150 kg/h", + ], + [ + "Video outgoing-inspection", + "Provided", + ], + [ + "Machinery Test Report", + "Provided", + ], + [ + "Warranty of core components", + "1 Year", + ], + [ + "Core Components", + "PLC", + ], + [ + "Core Components", + "Motor", + ], + [ + "Place of Origin", + "Guangdong, China", + ], + [ + "Brand Name", + "Wensui", + ], + [ + "Type", + "Recycling Granulator", + ], + [ + "Screw Design", + "Single", + ], + [ + "Voltage", + "380V", + ], + [ + "Dimension(L*W*H)", + "97*61*120cm", + ], + [ + "Power (kW)", + "4kw", + ], + [ + "Weight", + "290", + ], + [ + "Warranty", + "1 Year", + ], + [ + "Showroom Location", + "Canada", + ], + [ + "Applicable Industries", + "Plastic Industry", + ], + [ + "Material Processed", + "PP/PE", + ], + [ + "Fixed Blade", + "2pcs", + ], + [ + "Rotary Blade", + "6pcs", + ], + [ + "Chamber Size", + "230*215 mm", + ], + [ + "Capacity", + "150 kg/h", + ], + [ + "Keywords", + "pe pipe recycling machine", + ], + [ + "Application", + "Recycling Extrusion Pelletizing", + ], + ]; +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF9kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi90ZXN0X2RhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRTtJQUN6QixPQUFPO1FBQ0g7WUFDSSxFQUFFO1lBQ0YsRUFBRTtTQUNMO1FBQ0Q7WUFDSSxjQUFjO1lBQ2QsVUFBVTtTQUNiO1FBQ0Q7WUFDSSxtQkFBbUI7WUFDbkIsU0FBUztTQUNaO1FBQ0Q7WUFDSSxtQkFBbUI7WUFDbkIsT0FBTztTQUNWO1FBQ0Q7WUFDSSxtQkFBbUI7WUFDbkIsTUFBTTtTQUNUO1FBQ0Q7WUFDSSxtQkFBbUI7WUFDbkIsS0FBSztTQUNSO1FBQ0Q7WUFDSSxXQUFXO1lBQ1gsU0FBUztTQUNaO1FBQ0Q7WUFDSSxlQUFlO1lBQ2YsZ0JBQWdCO1NBQ25CO1FBQ0Q7WUFDSSwyQkFBMkI7WUFDM0IsVUFBVTtTQUNiO1FBQ0Q7WUFDSSx1QkFBdUI7WUFDdkIsVUFBVTtTQUNiO1FBQ0Q7WUFDSSw2QkFBNkI7WUFDN0IsUUFBUTtTQUNYO1FBQ0Q7WUFDSSxpQkFBaUI7WUFDakIsS0FBSztTQUNSO1FBQ0Q7WUFDSSxpQkFBaUI7WUFDakIsT0FBTztTQUNWO1FBQ0Q7WUFDSSxpQkFBaUI7WUFDakIsa0JBQWtCO1NBQ3JCO1FBQ0Q7WUFDSSxZQUFZO1lBQ1osUUFBUTtTQUNYO1FBQ0Q7WUFDSSxNQUFNO1lBQ04sc0JBQXNCO1NBQ3pCO1FBQ0Q7WUFDSSxjQUFjO1lBQ2QsUUFBUTtTQUNYO1FBQ0Q7WUFDSSxTQUFTO1lBQ1QsTUFBTTtTQUNUO1FBQ0Q7WUFDSSxrQkFBa0I7WUFDbEIsYUFBYTtTQUNoQjtRQUNEO1lBQ0ksWUFBWTtZQUNaLEtBQUs7U0FDUjtRQUNEO1lBQ0ksUUFBUTtZQUNSLEtBQUs7U0FDUjtRQUNEO1lBQ0ksVUFBVTtZQUNWLFFBQVE7U0FDWDtRQUNEO1lBQ0ksbUJBQW1CO1lBQ25CLFFBQVE7U0FDWDtRQUNEO1lBQ0ksdUJBQXVCO1lBQ3ZCLGtCQUFrQjtTQUNyQjtRQUNEO1lBQ0ksb0JBQW9CO1lBQ3BCLE9BQU87U0FDVjtRQUNEO1lBQ0ksYUFBYTtZQUNiLE1BQU07U0FDVDtRQUNEO1lBQ0ksY0FBYztZQUNkLE1BQU07U0FDVDtRQUNEO1lBQ0ksY0FBYztZQUNkLFlBQVk7U0FDZjtRQUNEO1lBQ0ksVUFBVTtZQUNWLFVBQVU7U0FDYjtRQUNEO1lBQ0ksVUFBVTtZQUNWLDJCQUEyQjtTQUM5QjtRQUNEO1lBQ0ksYUFBYTtZQUNiLGlDQUFpQztTQUNwQztLQUNKLENBQUE7QUFDTCxDQUFDLENBQUEifQ== \ No newline at end of file diff --git a/packages/i18n/dist/lib/translate.d.ts b/packages/i18n/dist/lib/translate.d.ts new file mode 100644 index 00000000..0d63983a --- /dev/null +++ b/packages/i18n/dist/lib/translate.d.ts @@ -0,0 +1,28 @@ +import { IOptions } from '../types.js'; +import * as deepl from './deepl.js'; +export declare const clean: (text?: string) => string; +export declare const hash: (text: string) => string; +export declare const translateObjectAIT: (obj: any, src: string, options: IOptions) => Promise; +export declare const translateXLS: (src: string, dst: string, options: IOptions) => Promise; +export declare const translateDeepL: (text: string, srcLang: string, dstLang: string, dOptions: deepl.IDeepLOptions, options?: IOptions, file?: string) => Promise; +export declare const translateObject: (obj: any, src: string, options: IOptions) => Promise; +export declare const getTranslation: (translations: any, all?: boolean) => any; +export declare const translateMarkup: (src: string, dst: string, options: IOptions) => Promise; +export declare const translateJSON: (src: string, dst: string, options: IOptions) => Promise; +export declare const translateTOML: (src: string, dst: string, options: IOptions) => Promise; +export declare const translateYAML: (src: string, dst: string, options: IOptions) => Promise; +export declare const translateFiles: (file: any, targets: string[], options: IOptions) => Promise; +export declare const translate: (opts: IOptions) => Promise; +export declare const translateText: (text: string, srcLang: string, dstLang: string, options?: IOptions) => Promise; +export declare const storeSet: (storePath: string, text: string, translation: string, file?: string) => void; +export declare const storeGet: (storePath: string, text: string, file?: string) => any; +export declare const TRANSLATORS: { + '.md': (src: string, dst: string, options: IOptions) => Promise; + '.html': (src: string, dst: string, options: IOptions) => Promise; + '.json': (src: string, dst: string, options: IOptions) => Promise; + '.toml': (src: string, dst: string, options: IOptions) => Promise; + '.yaml': (src: string, dst: string, options: IOptions) => Promise; + '.xlsx': (src: string, dst: string, options: IOptions) => Promise; + '.xls': (src: string, dst: string, options: IOptions) => Promise; +}; +export declare const getTranslator: (file: string) => any; diff --git a/packages/i18n/dist/lib/translate.js b/packages/i18n/dist/lib/translate.js new file mode 100644 index 00000000..59e21b5d --- /dev/null +++ b/packages/i18n/dist/lib/translate.js @@ -0,0 +1,438 @@ +import * as path from 'path'; +import { JSONPath } from 'jsonpath-plus'; +import { createHash } from 'crypto'; +import { get_cached, set_cached } from '@polymech/osr-cache/lib'; +import { OSR_CACHE } from '@polymech/commons'; +import { CONFIG_DEFAULT } from '@polymech/commons'; +import { resolve } from '@polymech/commons'; +import { isString, isArray, isObject, isNumber } from '@polymech/core/primitives'; +import { sync as read } from "@polymech/fs/read"; +import { sync as write } from "@polymech/fs/write"; +import { sync as exists } from "@polymech/fs/exists"; +import { sync as mkdir } from "@polymech/fs/dir"; +import * as XLSX from 'xlsx'; +import { parse, stringify } from 'yaml'; +import pMap from 'p-map'; +import { minify as minify_html } from 'html-minifier-terser'; +const TOML = require('@iarna/toml'); +const globBase = require('glob-base'); +import { targets, parse as parseOptions } from '../options.js'; +import { MODULE_NAME } from '../constants.js'; +import { store, get } from './store.js'; +import * as deepl from './deepl.js'; +import { logger as loggerDefault } from '../index.js'; +let logger = loggerDefault; +const minify = false; +const extension = (file) => path.parse(file).ext; +import { defaultFilters, defaultOptions, transformObject, testFilters } from './async-iterator.js'; +import { update } from './glossary.js'; +export const clean = (text = "") => text.trim(); +export const hash = (text) => createHash('md5').update(clean(text)).digest('base64'); +export const translateObjectAIT = async (obj, src, options) => { + const opts = defaultOptions({ + throttleDelay: 100, + concurrentTasks: 1, + path: options.query, + filterCallback: testFilters(defaultFilters([ + async (input) => !options.keys.includes(input) + ])), + transform: async (input, path) => { + if ((isNumber(input) || parseInt(input))) { + return input; + } + const stored = get(options.store, input, options); + if (stored) { + return stored; + } + else { + const translated = await _translate(input, src, options); + if (translated) { + if (options.store) { + store(options.store, input, translated, options); + } + return translated; + } + return input; + } + }, + errorCallback: (path, value, error) => { + logger.error(`Error at path: ${path}, value: ${value}, error: ${error}`); + return value; + } + }); + try { + await transformObject(obj, opts.transform, opts.path, opts.throttleDelay, opts.concurrentTasks, opts.errorCallback, opts.filterCallback); + return obj; + } + catch (error) { + logger.error('Translation failed:', error); + } +}; +export const translateXLS = async (src, dst, options) => { + logger.debug(`Translating ${src} to ${dst}`); + if (!exists(src)) { + logger.error('File not found : ' + src); + return; + } + const dstDir = path.parse(dst).dir; + mkdir(dstDir); + const osr_cache = OSR_CACHE(); + const cached = await get_cached(src, { + keys: options.keys + }, MODULE_NAME); + if (osr_cache && cached && options.cache && exists(dst)) { + return cached; + } + const workbook = XLSX.readFile(src); + const worksheet = workbook.Sheets[workbook.SheetNames[0]]; + const raw_data = XLSX.utils.sheet_to_json(worksheet, { header: 1, blankrows: false, raw: false, skipHidden: true }); + const queryResult = JSONPath({ + path: options.query, + json: raw_data, + }); + let translated; + try { + translated = await translateObjectAIT(raw_data, src, { + ...options, + keys: queryResult + }); + } + catch (error) { + logger.error('Error translating XLSX', error); + return; + } + if (!translated) { + logger.error('Error translating XLSX', src); + return; + } + const sheetOut = XLSX.utils.json_to_sheet(translated, { skipHeader: true }); + const workbookOut = XLSX.utils.book_new(); + XLSX.utils.book_append_sheet(workbookOut, sheetOut, workbook.SheetNames[0]); + XLSX.writeFileXLSX(workbookOut, dst); + if (osr_cache && options.cache) { + await set_cached(src, { keys: options.keys }, MODULE_NAME, translated); + } + return translated; +}; +export const translateDeepL = async (text, srcLang = 'EN', dstLang = 'DE', dOptions, options = {}, file = '') => { + if (minify) { + text = await minify_html(text, { + collapseWhitespace: true + }); + } + const glossary = await update(srcLang.toLowerCase(), dstLang.toLowerCase(), options); + const deeplOptions = { + preserve_formatting: '1', + tag_handling: ["xml"], + ...dOptions, + text: text, + target_lang: dstLang, + source_lang: srcLang, + glossary_id: glossary?.glossaryId, + formality: options.formality || 'default', + }; + let ret = await deepl.translate_deepl(deeplOptions); + if (!ret) { + logger.error('Translate failed : ' + text, file); + return false; + } + ret = ret?.data; + if (options.filters) { + (ret.translations).forEach((t, i) => { + options.filters.forEach((f) => { + ret.translations[i].text = f(text, t.text, file); + }); + }); + } + return ret.translations; +}; +const _translate = async (value, src, options) => { + const translations = await translateDeepL(value, options.srcLang, options.dstLang, { + auth_key: options.api_key, + formality: options.formality || 'default', + free_api: false + }, options, src); + return getTranslation(translations); +}; +export const translateObject = async (obj, src, options) => { + if (isNumber(obj)) { + return obj; + } + if (isString(obj) && !obj.trim().length) { + return obj; + } + if (isString(obj) && options.store) { + const stored = get(options.store, obj, options); + if (stored && options.cache) { + return stored; + } + const ret = await _translate(obj, src, options); + if (ret && options.store) { + store(options.store, obj, ret, options); + return ret; + } + else { + console.error('Error translating : ', obj); + } + return obj; + } + if (isObject(obj) || isArray(obj)) { + for await (const [key, value] of Object.entries(obj)) { + if (!obj[key]) { + continue; + } + if (!isString(key)) { + continue; + } + if (isString(value) && options.keys && !options.keys.includes(key)) { + continue; + } + if (isString(value)) { + const stored = get(options.store, value, options); + if (stored && options.cache) { + obj[key] = stored; + } + else { + obj[key] = await _translate(value, src, options); + if (options.store) { + store(options.store, value, obj[key], options); + } + } + } + else if (isObject(value)) { + obj[key] = await translateObject(value, src, options); + } + else if (isArray(value)) { + let i = 0; + for await (const v of value) { + if (!v) + continue; + value[i] = await translateObject(v, src, options); + i++; + } + } + } + } + return obj; +}; +export const getTranslation = (translations, all = false) => { + if (!all) { + if (translations && translations[0] && translations[0].text) { + return translations[0].text; + } + } + else { + return translations; + } + return false; +}; +export const translateMarkup = async (src, dst, options) => { + logger.info(`Translating ${src} to ${dst}`); + const osr_cache = OSR_CACHE(); + const cached = await get_cached(src, { keys: options.keys, filters: options.filters }, MODULE_NAME); + if (osr_cache && cached && options.cache) { + return cached; + } + const srcContent = read(src); + let translations = await translateDeepL(srcContent, options.srcLang, options.dstLang, { + free_api: false, + auth_key: options.api_key + }, options, src); + translations = getTranslation(translations); + if (osr_cache && options.cache) { + await set_cached(src, { keys: options.keys, filters: options.filters }, MODULE_NAME, translations); + } + if (translations) { + write(dst, translations); + } + else { + return false; + } + return translations; +}; +export const translateJSON = async (src, dst, options) => { + logger.info(`Translating ${src} to ${dst}`); + const osr_cache = OSR_CACHE(); + const cached = await get_cached(src, { keys: options.keys }, MODULE_NAME); + if (osr_cache && cached && options.cache) { + return cached; + } + let object = read(src, 'json'); + object = await translateObject(object, src, options); + if (osr_cache && options.cache) { + await set_cached(src, { keys: options.keys }, MODULE_NAME, object); + } + write(dst, object); + return object; +}; +export const translateTOML = async (src, dst, options) => { + logger.info(`Translating ${src} to ${dst}`); + const osr_cache = OSR_CACHE(); + const cached = await get_cached(src, { keys: options.keys }, MODULE_NAME); + if (osr_cache && cached && options.cache) { + return cached; + } + let srcContent = read(src); + let toml = TOML.parse(srcContent); + toml = await translateObject(toml, src, options); + if (osr_cache && options.cache) { + try { + await set_cached(src, { keys: options.keys }, MODULE_NAME, TOML.stringify(toml)); + } + catch (e) { + logger.error(`Error caching ${src} TOML : ${e.message}`, toml); + } + } + write(dst, TOML.stringify(toml)); +}; +export const translateYAML = async (src, dst, options) => { + logger.debug(`Translating ${src} to ${dst}`); + const osr_cache = OSR_CACHE(); + const cached = await get_cached(src, { keys: options.keys }, MODULE_NAME); + if (osr_cache && cached && options.cache) { + return TOML.parse(cached.translations); + } + let srcContent = read(src); + let yaml = parse(srcContent); + yaml = await translateObject(yaml, src, options); + // yaml = await translateObjectAIT(yaml, src, options) + if (osr_cache && options.cache) { + try { + await set_cached(src, { keys: options.keys }, MODULE_NAME, TOML.stringify({ translations: yaml })); + } + catch (e) { + logger.error(`Error caching YAML ${src} : ${e.message}`, yaml); + } + } + const ret = stringify(yaml); + write(dst, ret); + options.stdout && process.stdout.write(ret); + return ret; +}; +export const translateFiles = async (file, targets, options) => { + const translator = getTranslator(file); + if (!translator) { + logger.error(`Can't find a translator for ${file}`); + return false; + } + if (options.dry) { + logger.info(`Abort translating, dry option is on!`); + return Promise.resolve([]); + } + return await pMap(targets, async (target) => getTranslator(file)(file, target, options), { concurrency: 1 }); +}; +export const translate = async (opts) => { + opts = parseOptions(opts, {}); + logger = opts.logger || loggerDefault; + logger.settings.minLevel = opts.logLevel || 'warn'; + if (!opts.api_key) { + logger.error('i18n : No API key provided'); + return; + } + if (!opts.dstLang || !opts.srcLang) { + logger.error('i18n : No source or destination language provided'); + return; + } + if (opts.dstLang === opts.srcLang) { + logger.info(`Source and destination language are the same : ${opts.dstLang}`); + return; + } + if (opts.srcInfo && opts.srcInfo.IS_GLOB) { + const glob_base = globBase(opts.src); + opts.pathVariables.ROOT = path.resolve(glob_base.base); + } + else { + opts.pathVariables.ROOT = path.resolve(opts.cwd); + } + if (!opts.text && (opts.srcInfo && !opts.srcInfo.FILES)) { + logger.info(`Nothing to translate, --text or --src required`); + return; + } + const translateLang = async (lang) => { + opts.dstLang = lang; + opts.pathVariables['DST_LANG'] = opts.dstLang.toLowerCase(); + opts.pathVariables['SRC_LANG'] = opts.srcLang.toLowerCase(); + opts.pathVariables['CWD'] = path.resolve(opts.cwd); + if (opts.text) { + const ret = await translateDeepL(opts.text, opts.srcLang, lang, { + free_api: true, + auth_key: opts.api_key, + formality: opts.formality + }, opts, ""); + const translations = getTranslation(ret, opts.all); + process.stdout.write(opts.all ? JSON.stringify(translations, null, 2) : translations); + logger.info(`Translated ${opts.text} to ${lang}`, translations); + return ret; + } + logger.debug(`Translate ${opts.src} to ${lang}`); + return pMap(opts.srcInfo.FILES, async (f) => translateFiles(f, targets(f, opts), opts), { concurrency: 1 }); + }; + let languages = opts.dstLang.split(','); + const translated = await pMap(languages, async (lang) => translateLang(lang), { concurrency: 1 }); + logger.debug(`Translated all: ${opts.text ? opts.text : opts.src} to ${languages}`); + return translated; +}; +export const translateText = async (text, srcLang, dstLang, options = {}) => { + if (!text || text.length === 0) { + return ''; + } + if (srcLang === dstLang) { + return text; + } + if (!options.store) { + logger.error('No store provided'); + return text; + } + const store = path.resolve(resolve(options.store, false)); + if (!exists(store)) { + logger.warn(`Invalid store root : ${store}`); + } + const config = CONFIG_DEFAULT(); + text = clean(text); + if (exists(options.store)) { + const stored = storeGet(options.store, text); + if (stored) { + return stored; + } + } + if (!options.storeRoot) { + options.storeRoot = "${OSR_ROOT}/i18n-store"; + } + if (!options.api_key) { + options.api_key = config.deepl.auth_key; + } + const out = await translateDeepL(text, srcLang, dstLang, { + ...config.deepl + }, options, ""); + const translation = getTranslation(out, false); + if (translation) { + storeSet(options.store, text, translation); + return translation; + } + else { + logger.warn('Error translating : ', text); + } + return text; +}; +export const storeSet = (storePath, text, translation, file = '') => { + const store = read(storePath, 'json') || {}; + store[text] = clean(translation); + write(storePath, store); +}; +export const storeGet = (storePath, text, file = '') => { + const db = read(storePath, 'json') || {}; + if (db[text]) { + return db[text]; + } +}; +export const TRANSLATORS = { + '.md': translateMarkup, + '.html': translateMarkup, + '.json': translateJSON, + '.toml': translateTOML, + '.yaml': translateYAML, + '.xlsx': translateXLS, + '.xls': translateXLS +}; +export const getTranslator = (file) => TRANSLATORS[extension(file)]; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi90cmFuc2xhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUE7QUFDNUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQ25DLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQ2pGLE9BQU8sRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDaEQsT0FBTyxFQUFFLElBQUksSUFBSSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDaEQsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUE7QUFDNUIsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDdkMsT0FBTyxJQUFJLE1BQU0sT0FBTyxDQUFBO0FBQ3hCLE9BQU8sRUFBRSxNQUFNLElBQUksV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFFNUQsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ25DLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQTtBQUVyQyxPQUFPLEVBQ0gsT0FBTyxFQUNQLEtBQUssSUFBSSxZQUFZLEVBQ3hCLE1BQU0sZUFBZSxDQUFBO0FBRXRCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUc3QyxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUN2QyxPQUFPLEtBQUssS0FBSyxNQUFNLFlBQVksQ0FBQTtBQUNuQyxPQUFPLEVBQUUsTUFBTSxJQUFJLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUVyRCxJQUFJLE1BQU0sR0FBRyxhQUFhLENBQUE7QUFDMUIsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFBO0FBQ3BCLE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQTtBQUV4RCxPQUFPLEVBQ0gsY0FBYyxFQUNkLGNBQWMsRUFDZCxlQUFlLEVBRWYsV0FBVyxFQUNkLE1BQU0scUJBQXFCLENBQUE7QUFFNUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUV0QyxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO0FBQ3ZELE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUE7QUFDNUYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxFQUFFLEdBQVEsRUFBRSxHQUFXLEVBQUUsT0FBaUIsRUFBRSxFQUFFO0lBQ2pGLE1BQU0sSUFBSSxHQUFxQixjQUFjLENBQUM7UUFDMUMsYUFBYSxFQUFFLEdBQUc7UUFDbEIsZUFBZSxFQUFFLENBQUM7UUFDbEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxLQUFLO1FBQ25CLGNBQWMsRUFBRSxXQUFXLENBQ3ZCLGNBQWMsQ0FBQztZQUNYLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1NBQ2pELENBQUMsQ0FDTDtRQUNELFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBYSxFQUFFLElBQVksRUFBRSxFQUFFO1lBQzdDLElBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUM7Z0JBQ3BDLE9BQU8sS0FBSyxDQUFBO2FBQ2Y7WUFDRCxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFlLEVBQUUsT0FBTyxDQUFDLENBQUE7WUFDM0QsSUFBSSxNQUFNLEVBQUU7Z0JBQ1IsT0FBTyxNQUFNLENBQUE7YUFDaEI7aUJBQU07Z0JBQ0gsTUFBTSxVQUFVLEdBQUcsTUFBTSxVQUFVLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQTtnQkFDeEQsSUFBSSxVQUFVLEVBQUU7b0JBQ1osSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO3dCQUNmLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUE7cUJBQ25EO29CQUNELE9BQU8sVUFBVSxDQUFBO2lCQUNwQjtnQkFDRCxPQUFPLEtBQUssQ0FBQTthQUNmO1FBQ0wsQ0FBQztRQUNELGFBQWEsRUFBRSxDQUFDLElBQVksRUFBRSxLQUFhLEVBQUUsS0FBVSxFQUFFLEVBQUU7WUFDdkQsTUFBTSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsSUFBSSxZQUFZLEtBQUssWUFBWSxLQUFLLEVBQUUsQ0FBQyxDQUFBO1lBQ3hFLE9BQU8sS0FBSyxDQUFBO1FBQ2hCLENBQUM7S0FDZ0IsQ0FBQyxDQUFBO0lBQ3RCLElBQUk7UUFDQSxNQUFNLGVBQWUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQTtRQUN4SSxPQUFPLEdBQUcsQ0FBQTtLQUNiO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDWixNQUFNLENBQUMsS0FBSyxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxDQUFBO0tBQzdDO0FBQ0wsQ0FBQyxDQUFBO0FBQ0QsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLEtBQUssRUFDN0IsR0FBVyxFQUNYLEdBQVcsRUFDWCxPQUFpQixFQUFFLEVBQUU7SUFDckIsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsT0FBTyxHQUFHLEVBQUUsQ0FBQyxDQUFBO0lBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDZCxNQUFNLENBQUMsS0FBSyxDQUFDLG1CQUFtQixHQUFHLEdBQUcsQ0FBQyxDQUFBO1FBQ3ZDLE9BQU07S0FDVDtJQUNELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFBO0lBQ2xDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNiLE1BQU0sU0FBUyxHQUFHLFNBQVMsRUFBRSxDQUFBO0lBQzdCLE1BQU0sTUFBTSxHQUFHLE1BQU0sVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNqQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7S0FDckIsRUFBRSxXQUFXLENBQUMsQ0FBQTtJQUVmLElBQUksU0FBUyxJQUFJLE1BQU0sSUFBSSxPQUFPLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNyRCxPQUFPLE1BQU0sQ0FBQTtLQUNoQjtJQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDbkMsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUQsTUFBTSxRQUFRLEdBQVUsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDM0gsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUN4QjtRQUNJLElBQUksRUFBRSxPQUFPLENBQUMsS0FBSztRQUNuQixJQUFJLEVBQUUsUUFBUTtLQUVqQixDQUFDLENBQUE7SUFDTixJQUFJLFVBQVUsQ0FBQTtJQUNkLElBQUk7UUFDQSxVQUFVLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO1lBQ2pELEdBQUcsT0FBTztZQUNWLElBQUksRUFBRSxXQUFXO1NBQ3BCLENBQUMsQ0FBQTtLQUNMO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDWixNQUFNLENBQUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQzdDLE9BQU07S0FDVDtJQUNELElBQUksQ0FBQyxVQUFVLEVBQUU7UUFDYixNQUFNLENBQUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLEdBQUcsQ0FBQyxDQUFBO1FBQzNDLE9BQU07S0FDVDtJQUNELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQzNFLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDekMsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUMzRSxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUNwQyxJQUFJLFNBQVMsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO1FBQzVCLE1BQU0sVUFBVSxDQUFDLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFBO0tBQ3pFO0lBRUQsT0FBTyxVQUFVLENBQUE7QUFDckIsQ0FBQyxDQUFBO0FBQ0QsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEtBQUssRUFDL0IsSUFBWSxFQUNaLFVBQWtCLElBQUksRUFDdEIsVUFBa0IsSUFBSSxFQUN0QixRQUE2QixFQUM3QixVQUFvQixFQUFFLEVBQ3RCLE9BQWUsRUFBRSxFQUFFLEVBQUU7SUFFckIsSUFBSSxNQUFNLEVBQUU7UUFDUixJQUFJLEdBQUcsTUFBTSxXQUFXLENBQUMsSUFBSSxFQUFFO1lBQzNCLGtCQUFrQixFQUFFLElBQUk7U0FDM0IsQ0FBQyxDQUFBO0tBQ0w7SUFDRCxNQUFNLFFBQVEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEVBQUUsT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ3BGLE1BQU0sWUFBWSxHQUFHO1FBQ2pCLG1CQUFtQixFQUFFLEdBQUc7UUFDeEIsWUFBWSxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ3JCLEdBQUcsUUFBUTtRQUNYLElBQUksRUFBRSxJQUFJO1FBQ1YsV0FBVyxFQUFFLE9BQStCO1FBQzVDLFdBQVcsRUFBRSxPQUErQjtRQUM1QyxXQUFXLEVBQUUsUUFBUSxFQUFFLFVBQVU7UUFDakMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTLElBQUksU0FBUztLQUNyQixDQUFBO0lBRXhCLElBQUksR0FBRyxHQUFRLE1BQU0sS0FBSyxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQXlCLENBQUE7SUFDaEYsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNOLE1BQU0sQ0FBQyxLQUFLLENBQUMscUJBQXFCLEdBQUcsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ2hELE9BQU8sS0FBSyxDQUFBO0tBQ2Y7SUFDRCxHQUFHLEdBQUcsR0FBRyxFQUFFLElBQUksQ0FBQTtJQUNmLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRTtRQUNqQixDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDL0IsT0FBTyxDQUFDLE9BQTZCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2pELEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQTtZQUNwRCxDQUFDLENBQUMsQ0FBQTtRQUNOLENBQUMsQ0FBQyxDQUFBO0tBQ0w7SUFDRCxPQUFPLEdBQUcsQ0FBQyxZQUFZLENBQUE7QUFDM0IsQ0FBQyxDQUFBO0FBQ0QsTUFBTSxVQUFVLEdBQUcsS0FBSyxFQUFFLEtBQWEsRUFBRSxHQUFXLEVBQUUsT0FBaUIsRUFBRSxFQUFFO0lBRXZFLE1BQU0sWUFBWSxHQUFHLE1BQU0sY0FBYyxDQUFDLEtBQWUsRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQ3ZGO1FBQ0ksUUFBUSxFQUFFLE9BQU8sQ0FBQyxPQUFPO1FBQ3pCLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUyxJQUFJLFNBQVM7UUFDekMsUUFBUSxFQUFFLEtBQUs7S0FDWCxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUUzQixPQUFPLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQTtBQUN2QyxDQUFDLENBQUE7QUFDRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsS0FBSyxFQUFFLEdBQVEsRUFBRSxHQUFXLEVBQUUsT0FBaUIsRUFBRSxFQUFFO0lBQzlFLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ2YsT0FBTyxHQUFHLENBQUE7S0FDYjtJQUNELElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRTtRQUNyQyxPQUFPLEdBQUcsQ0FBQTtLQUNiO0lBRUQsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRTtRQUNoQyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFhLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDekQsSUFBSSxNQUFNLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRTtZQUN6QixPQUFPLE1BQU0sQ0FBQTtTQUNoQjtRQUNELE1BQU0sR0FBRyxHQUFHLE1BQU0sVUFBVSxDQUFDLEdBQWEsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDekQsSUFBSSxHQUFHLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRTtZQUN0QixLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1lBQ3ZDLE9BQU8sR0FBRyxDQUFBO1NBQ2I7YUFBTTtZQUNILE9BQU8sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxDQUFDLENBQUE7U0FDN0M7UUFDRCxPQUFPLEdBQUcsQ0FBQTtLQUNiO0lBQ0QsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQy9CLElBQUksS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNsRCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNYLFNBQVE7YUFDWDtZQUNELElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2hCLFNBQVE7YUFDWDtZQUNELElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDaEUsU0FBUTthQUNYO1lBQ0QsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ2pCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQTtnQkFDM0QsSUFBSSxNQUFNLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRTtvQkFDekIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQTtpQkFDcEI7cUJBQU07b0JBQ0gsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sVUFBVSxDQUFDLEtBQWUsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUE7b0JBQzFELElBQUksT0FBTyxDQUFDLEtBQUssRUFBRTt3QkFDZixLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFBO3FCQUNqRDtpQkFDSjthQUNKO2lCQUFNLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUN4QixHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxlQUFlLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQTthQUN4RDtpQkFBTSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUNULElBQUksS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEtBQUssRUFBRTtvQkFDekIsSUFBSSxDQUFDLENBQUM7d0JBQUUsU0FBUTtvQkFDaEIsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sZUFBZSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUE7b0JBQ2pELENBQUMsRUFBRSxDQUFBO2lCQUNOO2FBQ0o7U0FDSjtLQUNKO0lBQ0QsT0FBTyxHQUFHLENBQUE7QUFDZCxDQUFDLENBQUE7QUFDRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxZQUFpQixFQUFFLE1BQWUsS0FBSyxFQUFFLEVBQUU7SUFDdEUsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNOLElBQUksWUFBWSxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFO1lBQ3pELE9BQU8sWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtTQUM5QjtLQUNKO1NBQU07UUFDSCxPQUFPLFlBQVksQ0FBQTtLQUN0QjtJQUNELE9BQU8sS0FBSyxDQUFBO0FBQ2hCLENBQUMsQ0FBQTtBQUNELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxLQUFLLEVBQ2hDLEdBQVcsRUFDWCxHQUFXLEVBQ1gsT0FBaUIsRUFBRSxFQUFFO0lBRXJCLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQztJQUU1QyxNQUFNLFNBQVMsR0FBRyxTQUFTLEVBQUUsQ0FBQTtJQUM3QixNQUFNLE1BQU0sR0FBRyxNQUFNLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3BHLElBQUksU0FBUyxJQUFJLE1BQU0sSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO1FBQ3RDLE9BQU8sTUFBTSxDQUFBO0tBQ2hCO0lBQ0QsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBVyxDQUFBO0lBQ3RDLElBQUksWUFBWSxHQUFHLE1BQU0sY0FBYyxDQUFDLFVBQVUsRUFDOUMsT0FBTyxDQUFDLE9BQU8sRUFDZixPQUFPLENBQUMsT0FBTyxFQUNmO1FBQ0ksUUFBUSxFQUFFLEtBQUs7UUFDZixRQUFRLEVBQUUsT0FBTyxDQUFDLE9BQU87S0FDckIsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFRLENBQUE7SUFFbEMsWUFBWSxHQUFHLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUMzQyxJQUFJLFNBQVMsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO1FBQzVCLE1BQU0sVUFBVSxDQUFDLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFBO0tBQ3JHO0lBQ0QsSUFBSSxZQUFZLEVBQUU7UUFDZCxLQUFLLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFBO0tBQzNCO1NBQU07UUFDSCxPQUFPLEtBQUssQ0FBQTtLQUNmO0lBQ0QsT0FBTyxZQUFZLENBQUE7QUFDdkIsQ0FBQyxDQUFBO0FBQ0QsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEtBQUssRUFDOUIsR0FBVyxFQUNYLEdBQVcsRUFDWCxPQUFpQixFQUFFLEVBQUU7SUFFckIsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLEdBQUcsT0FBTyxHQUFHLEVBQUUsQ0FBQyxDQUFBO0lBRTNDLE1BQU0sU0FBUyxHQUFHLFNBQVMsRUFBRSxDQUFBO0lBQzdCLE1BQU0sTUFBTSxHQUFHLE1BQU0sVUFBVSxDQUFDLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUE7SUFDekUsSUFBSSxTQUFTLElBQUksTUFBTSxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7UUFDdEMsT0FBTyxNQUFNLENBQUE7S0FDaEI7SUFFRCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBUSxDQUFBO0lBQ3JDLE1BQU0sR0FBRyxNQUFNLGVBQWUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBRXBELElBQUksU0FBUyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7UUFDNUIsTUFBTSxVQUFVLENBQUMsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUE7S0FDckU7SUFDRCxLQUFLLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBQ2xCLE9BQU8sTUFBTSxDQUFBO0FBQ2pCLENBQUMsQ0FBQTtBQUNELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxLQUFLLEVBQzlCLEdBQVcsRUFDWCxHQUFXLEVBQ1gsT0FBaUIsRUFBRSxFQUFFO0lBRXJCLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQTtJQUMzQyxNQUFNLFNBQVMsR0FBRyxTQUFTLEVBQUUsQ0FBQTtJQUM3QixNQUFNLE1BQU0sR0FBRyxNQUFNLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFBO0lBQ3pFLElBQUksU0FBUyxJQUFJLE1BQU0sSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO1FBQ3RDLE9BQU8sTUFBTSxDQUFBO0tBQ2hCO0lBRUQsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBVyxDQUFBO0lBQ3BDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUE7SUFFakMsSUFBSSxHQUFHLE1BQU0sZUFBZSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFFaEQsSUFBSSxTQUFTLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRTtRQUM1QixJQUFJO1lBQ0EsTUFBTSxVQUFVLENBQUMsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1NBQ25GO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDUixNQUFNLENBQUMsS0FBSyxDQUFDLGlCQUFpQixHQUFHLFdBQVcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ2xFO0tBQ0o7SUFDRCxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtBQUNwQyxDQUFDLENBQUE7QUFDRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsS0FBSyxFQUFFLEdBQVcsRUFBRSxHQUFXLEVBQUUsT0FBaUIsRUFBRSxFQUFFO0lBQy9FLE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxHQUFHLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQTtJQUM1QyxNQUFNLFNBQVMsR0FBRyxTQUFTLEVBQUUsQ0FBQTtJQUM3QixNQUFNLE1BQU0sR0FBRyxNQUFNLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFBO0lBQ3pFLElBQUksU0FBUyxJQUFJLE1BQU0sSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUE7S0FDekM7SUFDRCxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFXLENBQUE7SUFDcEMsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQzVCLElBQUksR0FBRyxNQUFNLGVBQWUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ2hELHNEQUFzRDtJQUN0RCxJQUFJLFNBQVMsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO1FBQzVCLElBQUk7WUFDQSxNQUFNLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQTtTQUNyRztRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1IsTUFBTSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsR0FBRyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNsRTtLQUNKO0lBQ0QsTUFBTSxHQUFHLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzNCLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUE7SUFDZixPQUFPLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzNDLE9BQU8sR0FBRyxDQUFBO0FBQ2QsQ0FBQyxDQUFBO0FBQ0QsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEtBQUssRUFDL0IsSUFBSSxFQUFFLE9BQWlCLEVBQUUsT0FBaUIsRUFBRSxFQUFFO0lBQzlDLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN0QyxJQUFJLENBQUMsVUFBVSxFQUFFO1FBQ2IsTUFBTSxDQUFDLEtBQUssQ0FBQywrQkFBK0IsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUNuRCxPQUFPLEtBQUssQ0FBQTtLQUNmO0lBQ0QsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFO1FBQ2IsTUFBTSxDQUFDLElBQUksQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQTtLQUM3QjtJQUNELE9BQU8sTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUE7QUFDaEgsQ0FBQyxDQUFBO0FBQ0QsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLEtBQUssRUFBRSxJQUFjLEVBQUUsRUFBRTtJQUM5QyxJQUFJLEdBQUcsWUFBWSxDQUFDLElBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUNwQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxhQUFhLENBQUE7SUFDckMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQWUsSUFBSSxNQUFNLENBQUE7SUFDekQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7UUFDZixNQUFNLENBQUMsS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUE7UUFDMUMsT0FBTTtLQUNUO0lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1FBQ2hDLE1BQU0sQ0FBQyxLQUFLLENBQUMsbURBQW1ELENBQUMsQ0FBQTtRQUNqRSxPQUFNO0tBQ1Q7SUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLE9BQU8sRUFBRTtRQUMvQixNQUFNLENBQUMsSUFBSSxDQUFDLGtEQUFrRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtRQUM3RSxPQUFNO0tBQ1Q7SUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUU7UUFDdEMsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtLQUN6RDtTQUFNO1FBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7S0FDbkQ7SUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ3JELE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0RBQWdELENBQUMsQ0FBQTtRQUM3RCxPQUFNO0tBQ1Q7SUFDRCxNQUFNLGFBQWEsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7UUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUE7UUFDbkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBQzNELElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUMzRCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ2xELElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNYLE1BQU0sR0FBRyxHQUFHLE1BQU0sY0FBYyxDQUM1QixJQUFJLENBQUMsSUFBSSxFQUNULElBQUksQ0FBQyxPQUFPLEVBQ1osSUFBSSxFQUNKO2dCQUNJLFFBQVEsRUFBRSxJQUFJO2dCQUNkLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTztnQkFDdEIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFnQjthQUM1QixFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQTtZQUV2QixNQUFNLFlBQVksR0FBRyxjQUFjLENBQUUsR0FBVyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUMzRCxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFBO1lBQ3JGLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxPQUFPLElBQUksRUFBRSxFQUFFLFlBQVksQ0FBQyxDQUFBO1lBQy9ELE9BQU8sR0FBRyxDQUFBO1NBQ2I7UUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsSUFBSSxDQUFDLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQ2hELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQy9HLENBQUMsQ0FBQTtJQUNELElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3ZDLE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUNqRyxNQUFNLENBQUMsS0FBSyxDQUFDLG1CQUFtQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLFNBQVMsRUFBRSxDQUFDLENBQUE7SUFDbkYsT0FBTyxVQUFVLENBQUE7QUFDckIsQ0FBQyxDQUFBO0FBQ0QsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEtBQUssRUFBRSxJQUFZLEVBQUUsT0FBZSxFQUFFLE9BQWUsRUFBRSxVQUFvQixFQUFFLEVBQUUsRUFBRTtJQUMxRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQzVCLE9BQU8sRUFBRSxDQUFBO0tBQ1o7SUFDRCxJQUFJLE9BQU8sS0FBSyxPQUFPLEVBQUU7UUFDckIsT0FBTyxJQUFJLENBQUE7S0FDZDtJQUNELElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO1FBQ2hCLE1BQU0sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtRQUNqQyxPQUFPLElBQUksQ0FBQTtLQUNkO0lBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBQ3pELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDaEIsTUFBTSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsS0FBSyxFQUFFLENBQUMsQ0FBQTtLQUMvQztJQUNELE1BQU0sTUFBTSxHQUFRLGNBQWMsRUFBRSxDQUFBO0lBQ3BDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7SUFFbEIsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQzVDLElBQUksTUFBTSxFQUFFO1lBQ1IsT0FBTyxNQUFNLENBQUE7U0FDaEI7S0FDSjtJQUNELElBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFDO1FBQ2xCLE9BQU8sQ0FBQyxTQUFTLEdBQUcsd0JBQXdCLENBQUE7S0FDL0M7SUFDRCxJQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBQztRQUNoQixPQUFPLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFBO0tBQzFDO0lBQ0QsTUFBTSxHQUFHLEdBQWEsTUFBTSxjQUFjLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQzdEO1FBQ0ksR0FBRyxNQUFNLENBQUMsS0FBSztLQUNsQixFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUVuQixNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQzlDLElBQUksV0FBVyxFQUFFO1FBQ2IsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFBO1FBQzFDLE9BQU8sV0FBVyxDQUFBO0tBQ3JCO1NBQU07UUFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLElBQUksQ0FBQyxDQUFBO0tBQzVDO0lBQ0QsT0FBTyxJQUFJLENBQUE7QUFDZixDQUFDLENBQUE7QUFDRCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxTQUFpQixFQUFFLElBQVksRUFBRSxXQUFtQixFQUFFLE9BQWUsRUFBRSxFQUFFLEVBQUU7SUFDaEcsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDM0MsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUNoQyxLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFBO0FBQzNCLENBQUMsQ0FBQTtBQUNELE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLFNBQWlCLEVBQUUsSUFBWSxFQUFFLE9BQWUsRUFBRSxFQUFFLEVBQUU7SUFDM0UsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDeEMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDVixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtLQUNsQjtBQUNMLENBQUMsQ0FBQTtBQUNELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FDeEI7SUFDSSxLQUFLLEVBQUUsZUFBZTtJQUN0QixPQUFPLEVBQUUsZUFBZTtJQUN4QixPQUFPLEVBQUUsYUFBYTtJQUN0QixPQUFPLEVBQUUsYUFBYTtJQUN0QixPQUFPLEVBQUUsYUFBYTtJQUN0QixPQUFPLEVBQUUsWUFBWTtJQUNyQixNQUFNLEVBQUUsWUFBWTtDQUN2QixDQUFBO0FBQ0QsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUEifQ== \ No newline at end of file diff --git a/packages/i18n/dist/lib/types.d.ts b/packages/i18n/dist/lib/types.d.ts new file mode 100644 index 00000000..509db186 --- /dev/null +++ b/packages/i18n/dist/lib/types.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/packages/i18n/dist/lib/types.js b/packages/i18n/dist/lib/types.js new file mode 100644 index 00000000..8a7dab1e --- /dev/null +++ b/packages/i18n/dist/lib/types.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ== \ No newline at end of file diff --git a/packages/i18n/dist/main.d.ts b/packages/i18n/dist/main.d.ts new file mode 100644 index 00000000..d1ebc9c7 --- /dev/null +++ b/packages/i18n/dist/main.d.ts @@ -0,0 +1,2 @@ +#!/usr/bin/env node +export {}; diff --git a/packages/i18n/dist/main.js b/packages/i18n/dist/main.js new file mode 100644 index 00000000..eb10964b --- /dev/null +++ b/packages/i18n/dist/main.js @@ -0,0 +1,19 @@ +#!/usr/bin/env node +import { defaults } from './_cli.js'; +defaults(); +import * as cli from 'yargs'; +import { register as registerInfo } from './commands/info.js'; +registerInfo(cli); +import { register as registerTranslate } from './commands/translate.js'; +registerTranslate(cli); +import { register as registerGlossary } from './commands/glossary.js'; +registerGlossary(cli); +const argv = cli.argv; +if (argv.help) { + cli.showHelp(); + process.exit(); +} +else if (argv.v || argv.version) { + process.exit(); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQUMsUUFBUSxFQUFFLENBQUE7QUFDaEQsT0FBTyxLQUFLLEdBQUcsTUFBTSxPQUFPLENBQUE7QUFDNUIsT0FBTyxFQUFFLFFBQVEsSUFBSSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNoRixPQUFPLEVBQUUsUUFBUSxJQUFJLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUMvRixPQUFPLEVBQUUsUUFBUSxJQUFJLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUU1RixNQUFNLElBQUksR0FBUSxHQUFHLENBQUMsSUFBSSxDQUFBO0FBRTFCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtJQUNYLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNmLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztDQUNsQjtLQUFNLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO0lBQy9CLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztDQUNsQiJ9 \ No newline at end of file diff --git a/packages/i18n/dist/options.d.ts b/packages/i18n/dist/options.d.ts new file mode 100644 index 00000000..7d4caa82 --- /dev/null +++ b/packages/i18n/dist/options.d.ts @@ -0,0 +1,4 @@ +import { IOptions } from './types.js'; +export declare const clone: (obj: any) => any; +export declare const targets: (f: string, options: IOptions) => any[]; +export declare const parse: (options: IOptions, argv: any) => IOptions; diff --git a/packages/i18n/dist/options.js b/packages/i18n/dist/options.js new file mode 100644 index 00000000..80fe31c8 --- /dev/null +++ b/packages/i18n/dist/options.js @@ -0,0 +1,143 @@ +import * as path from 'path'; +import { resolve, resolveConfig } from '@polymech/commons'; +import { isString } from '@polymech/core/primitives'; +import { pathInfo, DEFAULT_ROOTS } from '@polymech/commons'; +import { Filters } from './lib/filters.js'; +export const clone = (obj) => { + if (null == obj || "object" != typeof obj) + return obj; + var copy = obj.constructor(); + for (var attr in obj) { + if (obj.hasOwnProperty(attr)) + copy[attr] = obj[attr]; + } + return copy; +}; +export const targets = (f, options) => { + const srcParts = path.parse(f); + const variables = { + ...clone(options.pathVariables), + ...DEFAULT_ROOTS + }; + const targets = []; + variables.SRC_NAME = srcParts.name; + variables.SRC_DIR = srcParts.dir; + variables.SRC_EXT = srcParts.ext; + if (variables.ROOT) { + variables.SRC_REL = path.relative(variables.ROOT, srcParts.dir); + } + const dashed = srcParts.name.split('-'); + if (dashed.length > 1) { + for (let i = 0; i < dashed.length; i++) { + variables[`SRC_NAME-${i}`] = dashed[i]; + } + } + const dotted = srcParts.name.split('.'); + if (dotted.length > 1) { + for (let i = 0; i < dotted.length; i++) { + variables[`SRC_NAME.${i}`] = dotted[i]; + } + } + const underscored = srcParts.name.split('_'); + if (underscored.length > 1) { + for (let i = 0; i < underscored.length; i++) { + variables[`SRC_NAME_${i}`] = underscored[i]; + } + } + if (options.targetInfo.IS_GLOB) { + options.targetInfo.GLOB_EXTENSIONS.forEach((e) => { + let targetPath = resolve(options.pathVariables.DST_PATH, options.alt, variables); + targetPath = path.resolve(targetPath.replace(options.pathVariables.DST_FILE_EXT, '') + e); + targets.push(targetPath); + }); + } + else { + let targetPath = resolve(options.pathVariables.DST_PATH, options.alt, variables); + //targetPath = path.resolve(targetPath.replace(options.pathVariables.DST_FILE_EXT, '')); + targets.push(targetPath); + } + return targets; +}; +export const parse = (options, argv) => { + for (const k in argv) { + if (!(k in options.variables) && k !== '_' + && k !== '$0' + && k !== 'variables' + && k !== 'source' + && k !== 'language' + && k !== 'envVariables' + && k !== 'format' + && k !== 'profile' + && k !== 'output' + && k !== 'plugins' + && k !== 'dry' + && k !== 'stdout' + && k !== 'filters' + && k !== 'cache' + && k !== 'text' + && k !== 'keys' + && k !== 'glossary' + && k !== 'logLevel' + && k !== 'bootstrap') { + options.variables[k] = argv[k]; + } + } + options.variables['cwd'] = path.resolve(options.variables['cwd'] ? options.variables['cwd'] : options.cwd); + resolveConfig(options.variables); + let variables = {}; + let srcInfo; + if (options.src) { + srcInfo = pathInfo(resolve(options.src, options.alt, options.variables)); + //we have glob patterns: + if (srcInfo && srcInfo.FILES && srcInfo.FILES.length) { + options.srcInfo = srcInfo; + for (const key in srcInfo) { + if (Object.prototype.hasOwnProperty.call(srcInfo, key)) { + variables['SRC_' + key] = srcInfo[key]; + } + } + } + else { + options.src = resolve(options.src, options.alt, options.variables); + options.srcInfo = srcInfo; + options.srcInfo.FILES = [options.src]; + } + } + if (options.dst) { + const out = resolve(options.dst, options.alt, options.variables); + let targetInfo = pathInfo(out); + //we have glob patterns: + if (options.srcInfo && targetInfo) { + targetInfo.PATH = options.dst; + for (const key in targetInfo) { + if (Object.prototype.hasOwnProperty.call(targetInfo, key)) { + variables['DST_' + key] = targetInfo[key]; + } + } + options.targetInfo = targetInfo; + } + else { + options.dst = resolve(options.dst || '', options.alt, options.variables); + } + } + else { + options.stdout = true; + } + options.pathVariables = variables; + if (isString(argv.filters)) { + const filters = argv.filters.split(','); + options.filters = []; + filters.forEach((f) => { + if (Filters[f]) { + options.filters.push(Filters[f]); + } + }); + } + if (isString(argv.keys)) { + options.keys = argv.keys.split(','); + } + options.logLevel = options.logLevel || 'warn'; + options.storeRoot = options.storeRoot || '${OSR_ROOT}/i18n-store/'; + return options; +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBRTVCLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDMUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFHM0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRTFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFO0lBQ3pCLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxRQUFRLElBQUksT0FBTyxHQUFHO1FBQUUsT0FBTyxHQUFHLENBQUM7SUFDdEQsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzdCLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFO1FBQ2xCLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7WUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3hEO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBUyxFQUFFLE9BQWlCLEVBQUUsRUFBRTtJQUNwRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzlCLE1BQU0sU0FBUyxHQUFHO1FBQ2QsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUMvQixHQUFHLGFBQWE7S0FDbkIsQ0FBQTtJQUNELE1BQU0sT0FBTyxHQUFHLEVB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 \ No newline at end of file diff --git a/packages/i18n/dist/speech/google.d.ts b/packages/i18n/dist/speech/google.d.ts new file mode 100644 index 00000000..9b44deff --- /dev/null +++ b/packages/i18n/dist/speech/google.d.ts @@ -0,0 +1 @@ +export declare const speak: (text: string, options: any) => void; diff --git a/packages/i18n/src/speech/google.ts b/packages/i18n/dist/speech/google.js similarity index 59% rename from packages/i18n/src/speech/google.ts rename to packages/i18n/dist/speech/google.js index cc5dda8a..62408364 100644 --- a/packages/i18n/src/speech/google.ts +++ b/packages/i18n/dist/speech/google.js @@ -7,24 +7,14 @@ // pcm player example : https://gist.github.com/anaptfox/64951815358ba545f94ff864c02887da // ssml specs: https://www.w3.org/TR/speech-synthesis11/ // ssml specs@google: https://cloud.google.com/text-to-speech/docs/ssml - // google - api - types: node_modules\@google-cloud\speech\build\protos\protos.d.ts // google list of voices: https://cloud.google.com/text-to-speech/docs/voices | GET https://texttospeech.googleapis.com/v1beta1/voices - // HTTP and gRPC Transcoding, https://google.aip.dev/127 - // gg - auth flows : https://cloud.google.com/docs/authentication/ // gg auth samples : https://cloud.google.com/text-to-speech/docs/libraries - - // gg dialogflow, https://cloud.google.com/dialogflow/es/docs/video - - const speech = require('@google-cloud/speech'); - -import { SpeechClient, v1p1beta1 } from '@google-cloud/speech'; - - +import { v1p1beta1 } from '@google-cloud/speech'; ` Request Body, to https://texttospeech.googleapis.com/v1beta1/text:synthesize { "audioConfig": { @@ -40,22 +30,16 @@ import { SpeechClient, v1p1beta1 } from '@google-cloud/speech'; "name": "en-US-Wavenet-D" } } -` - - -export const speak = (text: string, options: any) => { +`; +export const speak = (text, options) => { //const client = new SpeechClient(); const betaClient = new v1p1beta1.SpeechClient(); - -} - +}; // Creates a client const client = new speech.SpeechClient(); - async function quickstart() { // The path to the remote LINEAR16 file const gcsUri = 'gs://cloud-samples-data/speech/brooklyn_bridge.raw'; - // The audio file's encoding, sample rate in hertz, and BCP-47 language code const audio = { uri: gcsUri, @@ -69,7 +53,6 @@ async function quickstart() { audio: audio, config: config, }; - // Detects speech in the audio file const [response] = await client.recognize(request); const transcription = response.results @@ -77,4 +60,5 @@ async function quickstart() { .join('\n'); console.log(`Transcription: ${transcription}`); } -// quickstart(); \ No newline at end of file +// quickstart(); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NwZWVjaC9nb29nbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0JBQXdCO0FBQ3hCLDhFQUE4RTtBQUM5RSx1REFBdUQ7QUFDdkQsNEdBQTRHO0FBQzVHLHlFQUF5RTtBQUN6RSxrRkFBa0Y7QUFDbEYseUZBQXlGO0FBQ3pGLHdEQUF3RDtBQUN4RCx1RUFBdUU7QUFFdkUsbUZBQW1GO0FBQ25GLHNJQUFzSTtBQUV0SSx3REFBd0Q7QUFFeEQsa0VBQWtFO0FBQ2xFLDJFQUEyRTtBQUczRSxvRUFBb0U7QUFHcEUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUM7QUFFL0MsT0FBTyxFQUFnQixTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUcvRDs7Ozs7Ozs7Ozs7Ozs7O0NBZUMsQ0FBQTtBQUdELE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLElBQVksRUFBRSxPQUFZLEVBQUUsRUFBRTtJQUNoRCxvQ0FBb0M7SUFDcEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7QUFFcEQsQ0FBQyxDQUFBO0FBRUQsbUJBQW1CO0FBQ25CLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO0FBRXpDLEtBQUssVUFBVSxVQUFVO0lBQ3JCLHVDQUF1QztJQUN2QyxNQUFNLE1BQU0sR0FBRyxvREFBb0QsQ0FBQztJQUVwRSw0RUFBNEU7SUFDNUUsTUFBTSxLQUFLLEdBQUc7UUFDVixHQUFHLEVBQUUsTUFBTTtLQUNkLENBQUM7SUFDRixNQUFNLE1BQU0sR0FBRztRQUNYLFFBQVEsRUFBRSxVQUFVO1FBQ3BCLGVBQWUsRUFBRSxLQUFLO1FBQ3RCLFlBQVksRUFBRSxPQUFPO0tBQ3hCLENBQUM7SUFDRixNQUFNLE9BQU8sR0FBRztRQUNaLEtBQUssRUFBRSxLQUFLO1FBQ1osTUFBTSxFQUFFLE1BQU07S0FDakIsQ0FBQztJQUVGLG1DQUFtQztJQUNuQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25ELE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxPQUFPO1NBQ2pDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1NBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQixPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixhQUFhLEVBQUUsQ0FBQyxDQUFDO0FBQ25ELENBQUM7QUFDRCxnQkFBZ0IifQ== \ No newline at end of file diff --git a/packages/i18n/dist/types.d.ts b/packages/i18n/dist/types.d.ts new file mode 100644 index 00000000..726bee78 --- /dev/null +++ b/packages/i18n/dist/types.d.ts @@ -0,0 +1,37 @@ +import { Hash } from '@polymech/core'; +import { PATH_INFO } from '@polymech/commons/types'; +import { Logger } from 'tslog'; +export type TranslateFilter = (raw: string, translated: string, file?: string) => string; +export type IOptions = { + src?: string; + dst?: string; + variables?: Hash; + cwd?: string; + env?: string; + debug?: boolean; + dry?: boolean; + skip?: boolean; + all?: boolean; + alt?: boolean; + stdout?: boolean; + srcInfo?: PATH_INFO; + targetInfo?: PATH_INFO; + pathVariables?: Hash; + dstLang?: string; + srcLang?: string; + config?: any; + formality?: string; + text?: string; + filters?: TranslateFilter[] | string; + keys?: string[] | string; + query?: string; + glossary?: string | boolean; + createGlossary?: boolean; + cache?: boolean; + dumpJSON?: boolean; + store?: string; + storeRoot?: string; + api_key?: string; + logLevel?: string; + logger?: Logger; +}; diff --git a/packages/i18n/dist/types.js b/packages/i18n/dist/types.js new file mode 100644 index 00000000..b22f0a6d --- /dev/null +++ b/packages/i18n/dist/types.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9 \ No newline at end of file diff --git a/packages/i18n/dist/zod_schema.d.ts b/packages/i18n/dist/zod_schema.d.ts new file mode 100644 index 00000000..b3f314c9 --- /dev/null +++ b/packages/i18n/dist/zod_schema.d.ts @@ -0,0 +1,7 @@ +import { z } from 'zod'; +export declare const CommonLanguageCodeSchema: z.ZodEnum<["en", "pt", "bg", "cs", "da", "de", "el", "es", "et", "fi", "fr", "hu", "id", "it", "ja", "ko", "lt", "lv", "nb", "nl", "pl", "ro", "ru", "sk", "sl", "sv", "tr", "uk", "zh"]>; +export type CommonLanguageCode = z.infer; +export declare const TargetLanguageCodeSchema: z.ZodUnion<[z.ZodEnum<["en", "pt", "bg", "cs", "da", "de", "el", "es", "et", "fi", "fr", "hu", "id", "it", "ja", "ko", "lt", "lv", "nb", "nl", "pl", "ro", "ru", "sk", "sl", "sv", "tr", "uk", "zh"]>, z.ZodEnum<["en-GB", "en-US", "pt-BR", "pt-PT"]>]>; +export type TargetLanguageCode = z.infer; +export declare const SourceGlossaryLanguageCode: z.ZodEnum<["de", "en", "es", "fr", "ja"]>; +export type SourceGlossaryLanguageCode = z.infer; diff --git a/packages/i18n/dist/zod_schema.js b/packages/i18n/dist/zod_schema.js new file mode 100644 index 00000000..ba6a9906 --- /dev/null +++ b/packages/i18n/dist/zod_schema.js @@ -0,0 +1,10 @@ +import { z } from 'zod'; +export const CommonLanguageCodeSchema = z.enum([ + 'en', 'pt', + 'bg', 'cs', 'da', 'de', 'el', 'es', 'et', 'fi', 'fr', + 'hu', 'id', 'it', 'ja', 'ko', 'lt', 'lv', 'nb', 'nl', + 'pl', 'ro', 'ru', 'sk', 'sl', 'sv', 'tr', 'uk', 'zh' +]); +export const TargetLanguageCodeSchema = z.union([CommonLanguageCodeSchema, z.enum(['en-GB', 'en-US', 'pt-BR', 'pt-PT'])]); +export const SourceGlossaryLanguageCode = z.enum(['de', 'en', 'es', 'fr', 'ja']); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9kX3NjaGVtYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy96b2Rfc2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUE7QUFFdkIsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMzQyxJQUFJLEVBQUUsSUFBSTtJQUNWLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUNwRCxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDcEQsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0NBQ3ZELENBQUMsQ0FBQTtBQUlGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBSyx3QkFBd0IsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFHN0gsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBIn0= \ No newline at end of file diff --git a/packages/i18n/dist/zod_types.d.ts b/packages/i18n/dist/zod_types.d.ts new file mode 100644 index 00000000..b4900090 --- /dev/null +++ b/packages/i18n/dist/zod_types.d.ts @@ -0,0 +1 @@ +export declare const foo = "bar"; diff --git a/packages/i18n/dist/zod_types.js b/packages/i18n/dist/zod_types.js new file mode 100644 index 00000000..ead6c47e --- /dev/null +++ b/packages/i18n/dist/zod_types.js @@ -0,0 +1,2 @@ +export const foo = 'bar'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9kX3R5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3pvZF90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFBIn0= \ No newline at end of file diff --git a/packages/i18n/docs/Integration.md b/packages/i18n/docs/Integration.md index 045f0c3d..39ccb930 100644 --- a/packages/i18n/docs/Integration.md +++ b/packages/i18n/docs/Integration.md @@ -6,7 +6,7 @@ To use OSR-i18n in custom menus, as follows ![](./assets/integration-as-custom-menu.PNG) -1. install osr-cad via ```npm i -g @plastichub/osr-cad``` +1. install osr-cad via ```npm i -g @polymech/osr-cad``` 2. Register a new custom menu (press F9 on any file) ![](./assets/integration-as-custom-menu-register.PNG) diff --git a/packages/i18n/package-lock.json b/packages/i18n/package-lock.json index 08b58dda..16b6b2fa 100644 --- a/packages/i18n/package-lock.json +++ b/packages/i18n/package-lock.json @@ -1,21 +1,21 @@ { - "name": "@plastichub/osr-i18n", + "name": "@polymech/osr-i18n", "version": "0.2.5", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "@plastichub/osr-i18n", + "name": "@polymech/osr-i18n", "version": "0.2.5", "license": "BSD-3-Clause", "dependencies": { "@iarna/toml": "^2.2.5", - "@plastichub/fs": "^0.13.39", - "@plastichub/osr-cache": "file:../osr-cache", - "@plastichub/osr-cli-commons": "file:../osr-cli-commons", - "@plastichub/osr-commons": "file:../osr-commons", - "@plastichub/osr-log": "file:../osr-log", - "@plastichub/osr-sync": "^0.3.8", + "@polymech/fs": "^0.13.39", + "@polymech/osr-cache": "file:../osr-cache", + "@polymech/osr-cli-commons": "file:../osr-cli-commons", + "@polymech/commons": "file:../commons", + "@polymech/osr-log": "file:../osr-log", + "@polymech/osr-sync": "^0.3.8", "@types/html-minifier-terser": "^7.0.2", "@types/node": "^20.14.9", "axios": "^0.27.2", @@ -51,14 +51,14 @@ } }, "../osr-cache": { - "name": "@plastichub/osr-cache", + "name": "@polymech/osr-cache", "version": "0.4.7", "license": "BSD-3-Clause", "dependencies": { - "@plastichub/core": "^0.2.6", - "@plastichub/fs": "^0.13.32", - "@plastichub/osr-cli-commons": "^0.5.1", - "@plastichub/osr-commons": "file:../osr-commons", + "@polymech/core": "^0.2.6", + "@polymech/fs": "^0.13.32", + "@polymech/osr-cli-commons": "^0.5.1", + "@polymech/commons": "file:../commons", "@types/node": "^20.14.9", "@types/yargs": "^17.0.32", "cacache": "^18.0.3", @@ -73,15 +73,15 @@ } }, "../osr-cli-commons": { - "name": "@plastichub/osr-cli-commons", + "name": "@polymech/osr-cli-commons", "version": "0.5.2", "license": "BSD-3-Clause", "dependencies": { "@asteasolutions/zod-to-openapi": "github:asteasolutions/zod-to-openapi", - "@plastichub/core": "^0.2.6", - "@plastichub/fs": "^0.13.32", - "@plastichub/osr-commons": "file:../osr-commons", - "@plastichub/osr-log": "file:../osr-log", + "@polymech/core": "^0.2.6", + "@polymech/fs": "^0.13.32", + "@polymech/commons": "file:../commons", + "@polymech/osr-log": "file:../osr-log", "ansi-regex": "^5.0.0", "cryptr": "^6.0.3", "env-var": "^7.1.1", @@ -113,15 +113,15 @@ "node": ">= 14.0.0" } }, - "../osr-commons": { - "name": "@plastichub/osr-commons", + "../commons": { + "name": "@polymech/commons", "version": "0.3.4", "license": "BSD-3-Clause", "dependencies": { "@asteasolutions/zod-to-openapi": "^7.2.0", - "@plastichub/core": "^0.2.6", - "@plastichub/fs": "^0.13.39", - "@plastichub/osr-log": "file:../osr-log", + "@polymech/core": "^0.2.6", + "@polymech/fs": "^0.13.39", + "@polymech/osr-log": "file:../osr-log", "cryptr": "^6.0.3", "env-var": "^7.1.1", "fast-glob": "^3.3.2", @@ -138,7 +138,7 @@ "zod-to-ts": "^1.2.0" }, "bin": { - "osr-commons": "main.js" + "commons": "main.js" }, "devDependencies": { "@types/download": "^8.0.1", @@ -149,12 +149,12 @@ } }, "../osr-log": { - "name": "@plastichub/osr-log", + "name": "@polymech/osr-log", "version": "0.0.1", "dependencies": { - "@plastichub/core": "^0.1.9", - "@plastichub/fs": "^0.13.39", - "@plastichub/osr-cli-commons": "^0.5.2", + "@polymech/core": "^0.1.9", + "@polymech/fs": "^0.13.39", + "@polymech/osr-cli-commons": "^0.5.2", "@types/chokidar": "^2.1.3", "@types/grunt": "^0.4.31", "@types/lodash": "^4.14.148", @@ -423,16 +423,16 @@ "node": ">=14" } }, - "node_modules/@plastichub/core": { + "node_modules/@polymech/core": { "version": "0.2.6", - "resolved": "https://registry.npmjs.org/@plastichub/core/-/core-0.2.6.tgz", + "resolved": "https://registry.npmjs.org/@polymech/core/-/core-0.2.6.tgz", "integrity": "sha512-DF2IUZu6cw8+iVnFv2BFvd+s/7DYfrfXh7o3Uhg0IjbZ/QOIXY21URarnMQoTl9NEwUKN8ZZIHJmOIulT8helg==", "dependencies": { "deepmerge": "^4.3.1", "tslog": "^3.3.3" } }, - "node_modules/@plastichub/core/node_modules/tslog": { + "node_modules/@polymech/core/node_modules/tslog": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/tslog/-/tslog-3.3.4.tgz", "integrity": "sha512-N0HHuHE0e/o75ALfkioFObknHR5dVchUad4F0XyFf3gXJYB++DewEzwGI/uIOM216E5a43ovnRNEeQIq9qgm4Q==", @@ -444,12 +444,12 @@ "node": ">=10" } }, - "node_modules/@plastichub/fs": { + "node_modules/@polymech/fs": { "version": "0.13.39", - "resolved": "https://registry.npmjs.org/@plastichub/fs/-/fs-0.13.39.tgz", + "resolved": "https://registry.npmjs.org/@polymech/fs/-/fs-0.13.39.tgz", "integrity": "sha512-Q96zN5LAlTmtj6gIbHbVM0erp2NgP+P4izRzdhqnMz/WopAvD7ZJxjQ/J44e67R6WKQuvcxt/eXPNaFBB5ehlg==", "dependencies": { - "@plastichub/core": "^0.2.1", + "@polymech/core": "^0.2.1", "@types/denodeify": "^1.2.31", "@types/glob": "^8.1.0", "@types/minimatch": "^3.0.3", @@ -473,13 +473,13 @@ "node": ">= 8.0.0" } }, - "node_modules/@plastichub/fs/node_modules/@types/node": { + "node_modules/@polymech/fs/node_modules/@types/node": { "version": "14.18.63", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==", "license": "MIT" }, - "node_modules/@plastichub/fs/node_modules/brace-expansion": { + "node_modules/@polymech/fs/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", @@ -487,7 +487,7 @@ "balanced-match": "^1.0.0" } }, - "node_modules/@plastichub/fs/node_modules/glob": { + "node_modules/@polymech/fs/node_modules/glob": { "version": "10.4.2", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz", "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==", @@ -509,7 +509,7 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@plastichub/fs/node_modules/glob/node_modules/minimatch": { + "node_modules/@polymech/fs/node_modules/glob/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", @@ -523,7 +523,7 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@plastichub/fs/node_modules/minipass": { + "node_modules/@polymech/fs/node_modules/minipass": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", @@ -531,30 +531,30 @@ "node": ">=16 || 14 >=14.17" } }, - "node_modules/@plastichub/osr-cache": { + "node_modules/@polymech/osr-cache": { "resolved": "../osr-cache", "link": true }, - "node_modules/@plastichub/osr-cli-commons": { + "node_modules/@polymech/osr-cli-commons": { "resolved": "../osr-cli-commons", "link": true }, - "node_modules/@plastichub/osr-commons": { - "resolved": "../osr-commons", + "node_modules/@polymech/commons": { + "resolved": "../commons", "link": true }, - "node_modules/@plastichub/osr-log": { + "node_modules/@polymech/osr-log": { "resolved": "../osr-log", "link": true }, - "node_modules/@plastichub/osr-sync": { + "node_modules/@polymech/osr-sync": { "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@plastichub/osr-sync/-/osr-sync-0.3.8.tgz", + "resolved": "https://registry.npmjs.org/@polymech/osr-sync/-/osr-sync-0.3.8.tgz", "integrity": "sha512-xoud6GBkWioeTKs8Hsojvt9f0iTJYlJGWKv8owAOZ/djvrHdVCcuLITzHULsIpIDAQY/wt4bHcsJdQGLWg/+QA==", "dependencies": { - "@plastichub/core": "^0.2.6", - "@plastichub/fs": "^0.13.39", - "@plastichub/osr-cli-commons": "^0.4.9", + "@polymech/core": "^0.2.6", + "@polymech/fs": "^0.13.39", + "@polymech/osr-cli-commons": "^0.4.9", "archiver": "^5.3.1", "bluebird": "^3.5.1", "escape-html": "^1.0.3", @@ -577,7 +577,7 @@ "osr-sync": "main.js" } }, - "node_modules/@plastichub/osr-sync/node_modules/@npmcli/fs": { + "node_modules/@polymech/osr-sync/node_modules/@npmcli/fs": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", @@ -590,15 +590,15 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/@plastichub/osr-sync/node_modules/@plastichub/osr-cli-commons": { + "node_modules/@polymech/osr-sync/node_modules/@polymech/osr-cli-commons": { "version": "0.4.9", - "resolved": "https://registry.npmjs.org/@plastichub/osr-cli-commons/-/osr-cli-commons-0.4.9.tgz", + "resolved": "https://registry.npmjs.org/@polymech/osr-cli-commons/-/osr-cli-commons-0.4.9.tgz", "integrity": "sha512-/cVXEqMp1T4n8njCnzzSqchTdSyPmzcqiucjCiR8Jc27uvzNAtTE+8pOxnmyibUqjkKijFV2CoJ2jVGguthAyA==", "license": "BSD-3-Clause", "dependencies": { - "@plastichub/core": "^0.2.6", - "@plastichub/fs": "^0.13.32", - "@plastichub/osr-commons": "^0.3.3", + "@polymech/core": "^0.2.6", + "@polymech/fs": "^0.13.32", + "@polymech/commons": "^0.3.3", "@types/cacache": "^15.0.1", "@types/node": "^14.17.5", "@types/which": "^3.0.3", @@ -626,13 +626,13 @@ "node": ">= 14.0.0" } }, - "node_modules/@plastichub/osr-sync/node_modules/@types/node": { + "node_modules/@polymech/osr-sync/node_modules/@types/node": { "version": "14.18.63", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==", "license": "MIT" }, - "node_modules/@plastichub/osr-sync/node_modules/brace-expansion": { + "node_modules/@polymech/osr-sync/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", @@ -641,7 +641,7 @@ "balanced-match": "^1.0.0" } }, - "node_modules/@plastichub/osr-sync/node_modules/cacache": { + "node_modules/@polymech/osr-sync/node_modules/cacache": { "version": "16.1.3", "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", @@ -670,7 +670,7 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/@plastichub/osr-sync/node_modules/cacache/node_modules/glob": { + "node_modules/@polymech/osr-sync/node_modules/cacache/node_modules/glob": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", @@ -690,7 +690,7 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@plastichub/osr-sync/node_modules/cacache/node_modules/minimatch": { + "node_modules/@polymech/osr-sync/node_modules/cacache/node_modules/minimatch": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", @@ -702,7 +702,7 @@ "node": ">=10" } }, - "node_modules/@plastichub/osr-sync/node_modules/cacache/node_modules/minipass": { + "node_modules/@polymech/osr-sync/node_modules/cacache/node_modules/minipass": { "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", @@ -714,7 +714,7 @@ "node": ">=8" } }, - "node_modules/@plastichub/osr-sync/node_modules/cacache/node_modules/mkdirp": { + "node_modules/@polymech/osr-sync/node_modules/cacache/node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", @@ -726,7 +726,7 @@ "node": ">=10" } }, - "node_modules/@plastichub/osr-sync/node_modules/glob": { + "node_modules/@polymech/osr-sync/node_modules/glob": { "version": "10.4.2", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz", "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==", @@ -749,7 +749,7 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@plastichub/osr-sync/node_modules/is-extglob": { + "node_modules/@polymech/osr-sync/node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", @@ -758,7 +758,7 @@ "node": ">=0.10.0" } }, - "node_modules/@plastichub/osr-sync/node_modules/is-glob": { + "node_modules/@polymech/osr-sync/node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", @@ -770,7 +770,7 @@ "node": ">=0.10.0" } }, - "node_modules/@plastichub/osr-sync/node_modules/isexe": { + "node_modules/@polymech/osr-sync/node_modules/isexe": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", @@ -779,7 +779,7 @@ "node": ">=16" } }, - "node_modules/@plastichub/osr-sync/node_modules/lru-cache": { + "node_modules/@polymech/osr-sync/node_modules/lru-cache": { "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", @@ -788,7 +788,7 @@ "node": ">=12" } }, - "node_modules/@plastichub/osr-sync/node_modules/minimatch": { + "node_modules/@polymech/osr-sync/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", @@ -803,7 +803,7 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@plastichub/osr-sync/node_modules/minipass": { + "node_modules/@polymech/osr-sync/node_modules/minipass": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", @@ -812,7 +812,7 @@ "node": ">=16 || 14 >=14.17" } }, - "node_modules/@plastichub/osr-sync/node_modules/minipass-collect": { + "node_modules/@polymech/osr-sync/node_modules/minipass-collect": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", @@ -824,7 +824,7 @@ "node": ">= 8" } }, - "node_modules/@plastichub/osr-sync/node_modules/minipass-collect/node_modules/minipass": { + "node_modules/@polymech/osr-sync/node_modules/minipass-collect/node_modules/minipass": { "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", @@ -836,7 +836,7 @@ "node": ">=8" } }, - "node_modules/@plastichub/osr-sync/node_modules/rimraf": { + "node_modules/@polymech/osr-sync/node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", @@ -852,7 +852,7 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@plastichub/osr-sync/node_modules/rimraf/node_modules/brace-expansion": { + "node_modules/@polymech/osr-sync/node_modules/rimraf/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", @@ -862,7 +862,7 @@ "concat-map": "0.0.1" } }, - "node_modules/@plastichub/osr-sync/node_modules/rimraf/node_modules/glob": { + "node_modules/@polymech/osr-sync/node_modules/rimraf/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", @@ -883,7 +883,7 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@plastichub/osr-sync/node_modules/rimraf/node_modules/minimatch": { + "node_modules/@polymech/osr-sync/node_modules/rimraf/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", @@ -895,7 +895,7 @@ "node": "*" } }, - "node_modules/@plastichub/osr-sync/node_modules/semver": { + "node_modules/@polymech/osr-sync/node_modules/semver": { "version": "7.6.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", @@ -907,7 +907,7 @@ "node": ">=10" } }, - "node_modules/@plastichub/osr-sync/node_modules/ssri": { + "node_modules/@polymech/osr-sync/node_modules/ssri": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", @@ -919,7 +919,7 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/@plastichub/osr-sync/node_modules/ssri/node_modules/minipass": { + "node_modules/@polymech/osr-sync/node_modules/ssri/node_modules/minipass": { "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", @@ -931,7 +931,7 @@ "node": ">=8" } }, - "node_modules/@plastichub/osr-sync/node_modules/unique-filename": { + "node_modules/@polymech/osr-sync/node_modules/unique-filename": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", @@ -943,7 +943,7 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/@plastichub/osr-sync/node_modules/unique-slug": { + "node_modules/@polymech/osr-sync/node_modules/unique-slug": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", @@ -955,7 +955,7 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/@plastichub/osr-sync/node_modules/which": { + "node_modules/@polymech/osr-sync/node_modules/which": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", @@ -5386,9 +5386,9 @@ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "optional": true }, - "@plastichub/core": { + "@polymech/core": { "version": "0.2.6", - "resolved": "https://registry.npmjs.org/@plastichub/core/-/core-0.2.6.tgz", + "resolved": "https://registry.npmjs.org/@polymech/core/-/core-0.2.6.tgz", "integrity": "sha512-DF2IUZu6cw8+iVnFv2BFvd+s/7DYfrfXh7o3Uhg0IjbZ/QOIXY21URarnMQoTl9NEwUKN8ZZIHJmOIulT8helg==", "requires": { "deepmerge": "^4.3.1", @@ -5405,12 +5405,12 @@ } } }, - "@plastichub/fs": { + "@polymech/fs": { "version": "0.13.39", - "resolved": "https://registry.npmjs.org/@plastichub/fs/-/fs-0.13.39.tgz", + "resolved": "https://registry.npmjs.org/@polymech/fs/-/fs-0.13.39.tgz", "integrity": "sha512-Q96zN5LAlTmtj6gIbHbVM0erp2NgP+P4izRzdhqnMz/WopAvD7ZJxjQ/J44e67R6WKQuvcxt/eXPNaFBB5ehlg==", "requires": { - "@plastichub/core": "^0.2.1", + "@polymech/core": "^0.2.1", "@types/denodeify": "^1.2.31", "@types/glob": "^8.1.0", "@types/minimatch": "^3.0.3", @@ -5474,13 +5474,13 @@ } } }, - "@plastichub/osr-cache": { + "@polymech/osr-cache": { "version": "file:../osr-cache", "requires": { - "@plastichub/core": "^0.2.6", - "@plastichub/fs": "^0.13.32", - "@plastichub/osr-cli-commons": "^0.5.1", - "@plastichub/osr-commons": "file:../osr-commons", + "@polymech/core": "^0.2.6", + "@polymech/fs": "^0.13.32", + "@polymech/osr-cli-commons": "^0.5.1", + "@polymech/commons": "file:../commons", "@types/node": "^20.14.9", "@types/yargs": "^17.0.32", "cacache": "^18.0.3", @@ -5488,14 +5488,14 @@ "yargs": "^17.7.2" } }, - "@plastichub/osr-cli-commons": { + "@polymech/osr-cli-commons": { "version": "file:../osr-cli-commons", "requires": { "@asteasolutions/zod-to-openapi": "github:asteasolutions/zod-to-openapi", - "@plastichub/core": "^0.2.6", - "@plastichub/fs": "^0.13.32", - "@plastichub/osr-commons": "file:../osr-commons", - "@plastichub/osr-log": "file:../osr-log", + "@polymech/core": "^0.2.6", + "@polymech/fs": "^0.13.32", + "@polymech/commons": "file:../commons", + "@polymech/osr-log": "file:../osr-log", "@types/jest": "^29.5.14", "@types/node": "^20.17.6", "@types/yargs": "^17.0.33", @@ -5519,13 +5519,13 @@ "zod-to-ts": "^1.2.0" } }, - "@plastichub/osr-commons": { - "version": "file:../osr-commons", + "@polymech/commons": { + "version": "file:../commons", "requires": { "@asteasolutions/zod-to-openapi": "^7.2.0", - "@plastichub/core": "^0.2.6", - "@plastichub/fs": "^0.13.39", - "@plastichub/osr-log": "file:../osr-log", + "@polymech/core": "^0.2.6", + "@polymech/fs": "^0.13.39", + "@polymech/osr-log": "file:../osr-log", "@types/download": "^8.0.1", "@types/node": "^22.8.6", "cryptr": "^6.0.3", @@ -5544,12 +5544,12 @@ "zod-to-ts": "^1.2.0" } }, - "@plastichub/osr-log": { + "@polymech/osr-log": { "version": "file:../osr-log", "requires": { - "@plastichub/core": "^0.1.9", - "@plastichub/fs": "^0.13.39", - "@plastichub/osr-cli-commons": "^0.5.2", + "@polymech/core": "^0.1.9", + "@polymech/fs": "^0.13.39", + "@polymech/osr-cli-commons": "^0.5.2", "@types/chokidar": "^2.1.3", "@types/grunt": "^0.4.31", "@types/lodash": "^4.14.148", @@ -5577,14 +5577,14 @@ "zod": "^3.23.8" } }, - "@plastichub/osr-sync": { + "@polymech/osr-sync": { "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@plastichub/osr-sync/-/osr-sync-0.3.8.tgz", + "resolved": "https://registry.npmjs.org/@polymech/osr-sync/-/osr-sync-0.3.8.tgz", "integrity": "sha512-xoud6GBkWioeTKs8Hsojvt9f0iTJYlJGWKv8owAOZ/djvrHdVCcuLITzHULsIpIDAQY/wt4bHcsJdQGLWg/+QA==", "requires": { - "@plastichub/core": "^0.2.6", - "@plastichub/fs": "^0.13.39", - "@plastichub/osr-cli-commons": "^0.4.9", + "@polymech/core": "^0.2.6", + "@polymech/fs": "^0.13.39", + "@polymech/osr-cli-commons": "^0.4.9", "archiver": "^5.3.1", "bluebird": "^3.5.1", "escape-html": "^1.0.3", @@ -5613,14 +5613,14 @@ "semver": "^7.3.5" } }, - "@plastichub/osr-cli-commons": { + "@polymech/osr-cli-commons": { "version": "0.4.9", - "resolved": "https://registry.npmjs.org/@plastichub/osr-cli-commons/-/osr-cli-commons-0.4.9.tgz", + "resolved": "https://registry.npmjs.org/@polymech/osr-cli-commons/-/osr-cli-commons-0.4.9.tgz", "integrity": "sha512-/cVXEqMp1T4n8njCnzzSqchTdSyPmzcqiucjCiR8Jc27uvzNAtTE+8pOxnmyibUqjkKijFV2CoJ2jVGguthAyA==", "requires": { - "@plastichub/core": "^0.2.6", - "@plastichub/fs": "^0.13.32", - "@plastichub/osr-commons": "^0.3.3", + "@polymech/core": "^0.2.6", + "@polymech/fs": "^0.13.32", + "@polymech/commons": "^0.3.3", "@types/cacache": "^15.0.1", "@types/node": "^14.17.5", "@types/which": "^3.0.3", diff --git a/packages/i18n/package.json b/packages/i18n/package.json index aeabaab4..0b920ceb 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -11,10 +11,13 @@ }, "dependencies": { "@iarna/toml": "^2.2.5", - "@plastichub/osr-sync": "^0.3.8", + "@polymech/commons": "link:..\\commons", + "@polymech/core": "link:..\\core", + "@polymech/fs": "link:..\\fs", + "@polymech/log": "link:..\\log", "@types/html-minifier-terser": "^7.0.2", "@types/node": "^20.14.9", - "axios": "^0.27.2", + "axios": "^1.7.9", "convert-units": "^2.3.4", "cryptr": "^6.0.3", "deepl-node": "^1.8.0", @@ -27,8 +30,8 @@ "keyv": "^4.5.4", "keyv-file": "^0.3.1", "link-dev": "^1.0.4", - "p-map": "^4.0.0", - "p-throttle": "^v4.1.1", + "p-map": "^7.0.3", + "p-throttle": "^4.1.1", "querystring": "^0.2.1", "ssri": "^10.0.1", "tslog": "^4.9.3", @@ -37,7 +40,7 @@ "xlsx": "^0.18.5", "yaml": "^2.4.1", "yargs": "^17.7.2", - "zod": "^3.23.8" + "zod": "^3.24.1" }, "scripts": { "test": "tsc; mocha --full-trace mocha \"spec/**/*.spec.js\"", diff --git a/packages/i18n/scripts/create-glossary-de.sh b/packages/i18n/scripts/create-glossary-de.sh index fc0f8f28..1596f08e 100644 --- a/packages/i18n/scripts/create-glossary-de.sh +++ b/packages/i18n/scripts/create-glossary-de.sh @@ -1,5 +1,5 @@ node ./dist/main.js glossary create \ --srcLang='EN' \ --dstLang='DE' \ ---src='${OSR_ROOT}/osr-commons/i18n/glossary/en/de/*.csv' +--src='${OSR_ROOT}/commons/i18n/glossary/en/de/*.csv' diff --git a/packages/i18n/src/_cli.ts b/packages/i18n/src/_cli.ts index 3eb7214d..ee536ffb 100644 --- a/packages/i18n/src/_cli.ts +++ b/packages/i18n/src/_cli.ts @@ -1,7 +1,7 @@ import * as path from 'path' -import { sync as exists } from '@plastichub/fs/exists' -import { IOptions } from './types' -import { logger } from './' +import { sync as exists } from '@polymech/fs/exists' +import { IOptions } from './types.js' +import { logger } from './index.js' export const defaults = () => { const DefaultCommand = 'info'; diff --git a/packages/i18n/src/commands/glossary.ts b/packages/i18n/src/commands/glossary.ts index b8ad246a..b0931838 100644 --- a/packages/i18n/src/commands/glossary.ts +++ b/packages/i18n/src/commands/glossary.ts @@ -2,16 +2,16 @@ import * as CLI from 'yargs' import * as path from 'path' const globBase = require('glob-base') -import { pairs } from '../lib/glossary' +import { pairs } from '../lib/glossary.js' -import { defaults, sanitize } from '../_cli' -import { parse } from '../options' -import { IOptions } from '../types' -import { logger } from '../' +import { defaults, sanitize } from '../_cli.js' +import { parse } from '../options.js' +import { IOptions } from '../types.js' +import { logger } from '../index.js' -import { CONFIG_DEFAULT } from '@plastichub/osr-commons' -import { resolve } from "@plastichub/osr-commons/variables" -import * as pMap from 'p-map' +import { CONFIG_DEFAULT } from '@polymech/commons' +import { resolve } from "@polymech/commons/variables" +import pMap from 'p-map' const defaultOptions = (yargs: CLI.Argv) => { return yargs.option('debug', { diff --git a/packages/i18n/src/commands/info.ts b/packages/i18n/src/commands/info.ts index ea76b55e..13f3527c 100644 --- a/packages/i18n/src/commands/info.ts +++ b/packages/i18n/src/commands/info.ts @@ -1,6 +1,6 @@ -import * as CLI from 'yargs'; -import { CONFIG_DEFAULT } from '@plastichub/osr-commons'; -import { logger } from '../' +import * as CLI from 'yargs' +import { CONFIG_DEFAULT } from '@polymech/commons' +import { logger } from '../index.js' const defaultOptions = (yargs: CLI.Argv) => { return yargs.option('debug', { diff --git a/packages/i18n/src/commands/translate.ts b/packages/i18n/src/commands/translate.ts index 07d69f6b..e96a0ca2 100644 --- a/packages/i18n/src/commands/translate.ts +++ b/packages/i18n/src/commands/translate.ts @@ -1,10 +1,10 @@ import * as CLI from 'yargs' -import { CONFIG_DEFAULT } from '@plastichub/osr-commons' +import { CONFIG_DEFAULT } from '@polymech/commons' -import { translate } from '../lib/translate' -import { defaults, sanitize } from '../_cli' -import { IOptions } from '../types' -import { logger } from '../' +import { translate } from '../lib/translate.js' +import { defaults, sanitize } from '../_cli.js' +import { IOptions } from '../types.js' +import { logger } from '../index.js' const defaultOptions = (yargs: CLI.Argv) => { return yargs.option('debug', { diff --git a/packages/i18n/src/index.ts b/packages/i18n/src/index.ts index 9b8c9d80..015b1908 100644 --- a/packages/i18n/src/index.ts +++ b/packages/i18n/src/index.ts @@ -1,15 +1,16 @@ -export * from './lib' -export { MODULE_NAME } from './constants' -export * from './options' export { Logger } from 'tslog' -import { createLogger } from '@plastichub/osr-log' +import { createLogger } from '@polymech/log' import { Logger } from 'tslog' -export const logger:Logger = createLogger('OSR-Commons') -export { sanitize } from './_cli' -export * from './types' -export * from './zod_schema' -export * from './zod_types' +export { MODULE_NAME } from './constants.js' +export { sanitize } from './_cli.js' +export * from './lib/index.js' +export * from './options.js' +export * from './types.js' +export * from './zod_schema.js' +export * from './zod_types.js' + +export const logger:any = createLogger('commons') diff --git a/packages/i18n/src/lib/async-iterator.ts b/packages/i18n/src/lib/async-iterator.ts index cca0b6e1..ac42aab8 100644 --- a/packages/i18n/src/lib/async-iterator.ts +++ b/packages/i18n/src/lib/async-iterator.ts @@ -1,8 +1,6 @@ import { JSONPath } from 'jsonpath-plus' -import * as pThrottle from 'p-throttle' -import * as pMap from 'p-map' - -// import { logger } from '../../index' +import pThrottle from 'p-throttle' +import pMap from 'p-map' export type AsyncTransformer = (input: string, path: string) => Promise export type ErrorCallback = (path: string, value: string, error: any) => void diff --git a/packages/i18n/src/lib/cache.ts b/packages/i18n/src/lib/cache.ts index 81ea2313..e69de29b 100644 --- a/packages/i18n/src/lib/cache.ts +++ b/packages/i18n/src/lib/cache.ts @@ -1,7 +0,0 @@ -import * as cache from '@plastichub/osr-cache' - -/* -return cacache.get.info(CACHE, 'vendor-instagram').then((cache)=>{ - -}); -*/ \ No newline at end of file diff --git a/packages/i18n/src/lib/deepl.ts b/packages/i18n/src/lib/deepl.ts index 1fbfafa8..fcfc30cf 100644 --- a/packages/i18n/src/lib/deepl.ts +++ b/packages/i18n/src/lib/deepl.ts @@ -1,6 +1,6 @@ -import axios from 'axios' +//import axios, { AxiosError} from 'axios'; import { stringify } from 'querystring' - +import { default as axios } from 'axios'; // https://github.com/DeepLcom/deepl-node/tree/main/src export interface IGlossary { glossaryId: string; @@ -47,9 +47,9 @@ export const translate_deeplT = async ( // const sub_domain = parameters.free_api ? 'api-free' : 'api'; try { const params = "preserve_formatting=1&tag_handling=xml&auth_key=4f6441ab-8e09-48d3-9031-3ca5cd463f79&formality=default&free_api=false&text=Variant&target_lang=de&source_lang=en" - const ret = axios.post( + const ret = axios ( `https://api.deepl.com/v2/translate`, - params, {}) as any + params as any) as any return ret // return (ret as any).data diff --git a/packages/i18n/src/lib/filters.ts b/packages/i18n/src/lib/filters.ts index ffa741c7..283e49fe 100644 --- a/packages/i18n/src/lib/filters.ts +++ b/packages/i18n/src/lib/filters.ts @@ -1,5 +1,5 @@ -import { logger } from "../index" -import { sync as write } from "@plastichub/fs/write" +import { logger } from "../index.js" +import { sync as write } from "@polymech/fs/write" const frontMatter = require('front-matter') const YAML = require('json-to-pretty-yaml') diff --git a/packages/i18n/src/lib/glossary.ts b/packages/i18n/src/lib/glossary.ts index 39e9ed3a..89a8f7b6 100644 --- a/packages/i18n/src/lib/glossary.ts +++ b/packages/i18n/src/lib/glossary.ts @@ -1,20 +1,20 @@ import * as path from 'path' import * as deeplN from 'deepl-node' -import { isFile, resolve } from "@plastichub/osr-commons" -import { sync as read } from "@plastichub/fs/read" -import { sync as exists } from "@plastichub/fs/exists" +import { isFile, resolve } from "@polymech/commons" +import { sync as read } from "@polymech/fs/read" +import { sync as exists } from "@polymech/fs/exists" -import * as deepl from './deepl' -import { sync as write } from "@plastichub/fs/write" +import * as deepl from './deepl.js' +import { sync as write } from "@polymech/fs/write" import { GLOSSARY_INFO_FILE, GLOSSARY_FILE_NAME -} from '../constants' +} from '../constants.js' -import { IOptions } from '../types' -import { hash as md5 } from './strings' -import { logger } from '../' +import { IOptions } from '../types.js' +import { hash as md5 } from './strings.js' +import { logger } from '../index.js' export const name = (srcLang, dstLang) => `OSR-${srcLang}-${dstLang}` @@ -126,7 +126,7 @@ export const id = (root: string) => { return (read(root, 'json') as deeplN.GlossaryInfo || {}).glossaryId } } -export const _data = (storeRoot: string, srcLang: string, dstLang: string) => { +export const _data = (storeRoot: string, srcLang: string, dstLang: string): any => { storeRoot = path.resolve(resolve(storeRoot)) if (!id(storeRoot)) { const filePath = glossaryMetaPath(storeRoot, srcLang, dstLang) diff --git a/packages/i18n/src/lib/index.ts b/packages/i18n/src/lib/index.ts index 2c4dc385..b05c4369 100644 --- a/packages/i18n/src/lib/index.ts +++ b/packages/i18n/src/lib/index.ts @@ -1,4 +1,4 @@ -export * from './deepl' -export * from './codes' -export * from './filters' -export * from './store' +export * from './deepl.js' +export * from './codes.js' +export * from './filters.js' +export * from './store.js' diff --git a/packages/i18n/src/lib/store.ts b/packages/i18n/src/lib/store.ts index db06ccb2..2a4c8d07 100644 --- a/packages/i18n/src/lib/store.ts +++ b/packages/i18n/src/lib/store.ts @@ -1,6 +1,6 @@ -import { sync as write } from '@plastichub/fs/write' -import { sync as read } from '@plastichub/fs/read' -import { resolve } from '@plastichub/osr-commons' +import { sync as write } from '@polymech/fs/write' +import { sync as read } from '@polymech/fs/read' +import { resolve } from '@polymech/commons' import * as path from 'path' const removeNonPrintableCharacters = (text: string): string => text.replace(/[^\x20-\x7E]/g, '') diff --git a/packages/i18n/src/lib/translate.ts b/packages/i18n/src/lib/translate.ts index a9a3cbab..15074fe6 100644 --- a/packages/i18n/src/lib/translate.ts +++ b/packages/i18n/src/lib/translate.ts @@ -1,18 +1,18 @@ import * as path from 'path' import { JSONPath } from 'jsonpath-plus' import { createHash } from 'crypto' -import { get_cached, set_cached } from '@plastichub/osr-cache/lib' -import { OSR_CACHE } from '@plastichub/osr-commons' -import { CONFIG_DEFAULT } from '@plastichub/osr-commons' -import { resolve } from '@plastichub/osr-commons' -import { isString, isArray, isObject, isNumber } from '@plastichub/core/primitives' -import { sync as read } from "@plastichub/fs/read" -import { sync as write } from "@plastichub/fs/write" -import { sync as exists } from "@plastichub/fs/exists" -import { sync as mkdir } from "@plastichub/fs/dir" +import { get_cached, set_cached } from '@polymech/osr-cache/lib' +import { OSR_CACHE } from '@polymech/commons' +import { CONFIG_DEFAULT } from '@polymech/commons' +import { resolve } from '@polymech/commons' +import { isString, isArray, isObject, isNumber } from '@polymech/core/primitives' +import { sync as read } from "@polymech/fs/read" +import { sync as write } from "@polymech/fs/write" +import { sync as exists } from "@polymech/fs/exists" +import { sync as mkdir } from "@polymech/fs/dir" import * as XLSX from 'xlsx' import { parse, stringify } from 'yaml' -import * as pMap from 'p-map' +import pMap from 'p-map' import { minify as minify_html } from 'html-minifier-terser' const TOML = require('@iarna/toml') @@ -21,16 +21,14 @@ const globBase = require('glob-base') import { targets, parse as parseOptions -} from '../options' +} from '../options.js' -import { - MODULE_NAME} from '../constants' +import { MODULE_NAME } from '../constants.js' -import { IOptions, TranslateFilter } from '../types' -import { store, get } from './store' -import * as deepl from './deepl' - -import { logger as loggerDefault } from '../' +import { IOptions, TranslateFilter } from '../types.js' +import { store, get } from './store.js' +import * as deepl from './deepl.js' +import { logger as loggerDefault } from '../index.js' let logger = loggerDefault const minify = false @@ -42,9 +40,9 @@ import { transformObject, TransformOptions, testFilters -} from './async-iterator' +} from './async-iterator.js' -import { update } from './glossary' +import { update } from './glossary.js' export const clean = (text: string = "") => text.trim() export const hash = (text: string) => createHash('md5').update(clean(text)).digest('base64') diff --git a/packages/i18n/src/main.ts b/packages/i18n/src/main.ts index fae00345..e13eae77 100644 --- a/packages/i18n/src/main.ts +++ b/packages/i18n/src/main.ts @@ -1,9 +1,9 @@ #!/usr/bin/env node -import { defaults } from './_cli'; defaults() +import { defaults } from './_cli.js'; defaults() import * as cli from 'yargs' -import { register as registerInfo } from './commands/info'; registerInfo(cli) -import { register as registerTranslate } from './commands/translate'; registerTranslate(cli) -import { register as registerGlossary } from './commands/glossary'; registerGlossary(cli) +import { register as registerInfo } from './commands/info.js'; registerInfo(cli) +import { register as registerTranslate } from './commands/translate.js'; registerTranslate(cli) +import { register as registerGlossary } from './commands/glossary.js'; registerGlossary(cli) const argv: any = cli.argv diff --git a/packages/i18n/src/options.ts b/packages/i18n/src/options.ts index faddcf19..a4aab642 100644 --- a/packages/i18n/src/options.ts +++ b/packages/i18n/src/options.ts @@ -1,14 +1,11 @@ import * as path from 'path' -import { resolve } from '@plastichub/osr-commons' -import { resolveConfig } from '@plastichub/core' -import { isString } from '@plastichub/core/primitives' -import { pathInfo, DEFAULT_ROOTS } from '@plastichub/osr-commons' +import { resolve, resolveConfig } from '@polymech/commons' +import { isString } from '@polymech/core/primitives' +import { pathInfo, DEFAULT_ROOTS } from '@polymech/commons' -export * from './lib' - -import { IOptions, TranslateFilter } from './types' -import { Filters } from './lib/filters' +import { IOptions, TranslateFilter } from './types.js' +import { Filters } from './lib/filters.js' export const clone = (obj) => { if (null == obj || "object" != typeof obj) return obj; diff --git a/packages/i18n/src/types.ts b/packages/i18n/src/types.ts index 5143a8a7..d4886f20 100644 --- a/packages/i18n/src/types.ts +++ b/packages/i18n/src/types.ts @@ -1,5 +1,5 @@ -import { Hash } from '@plastichub/core' -import { PATH_INFO } from '@plastichub/osr-commons' +import { Hash } from '@polymech/core' +import { PATH_INFO } from '@polymech/commons/types' import { Logger } from 'tslog' export type TranslateFilter = (raw: string, translated: string, file?: string) => string