From 346f8b4baec632895ee9534fe921b34e078cf009 Mon Sep 17 00:00:00 2001 From: Oliver Date: Wed, 27 Dec 2023 11:53:29 -0800 Subject: [PATCH] add all build files --- .gitignore | 1 - build/entitlements.mac.plist | 1 - build/index.js | 2604 ++ build/index.js.map | 1 + build/indexing_pipeline/index.js | 310 + build/indexing_pipeline/index.js.map | 1 + build/indexing_pipeline/markdown_indexing.js | 391 + .../markdown_indexing.js.map | 1 + build/indexing_pipeline/pdf_indexing.js | 550 + build/indexing_pipeline/pdf_indexing.js.map | 1 + build/indexing_pipeline/rssFeeds/index.js | 758 + build/indexing_pipeline/rssFeeds/index.js.map | 1 + build/indexing_pipeline/utils.js | 22278 ++++++++++++++++ build/indexing_pipeline/utils.js.map | 1 + build/preload.js | 15 + build/preload.js.map | 1 + build/renderer.js | 32 + build/renderer.js.map | 1 + build/search/find_similar.js | 343 + build/search/find_similar.js.map | 1 + package.json | 4 +- 21 files changed, 27292 insertions(+), 4 deletions(-) delete mode 100644 build/entitlements.mac.plist create mode 100644 build/index.js create mode 100644 build/index.js.map create mode 100644 build/indexing_pipeline/index.js create mode 100644 build/indexing_pipeline/index.js.map create mode 100644 build/indexing_pipeline/markdown_indexing.js create mode 100644 build/indexing_pipeline/markdown_indexing.js.map create mode 100644 build/indexing_pipeline/pdf_indexing.js create mode 100644 build/indexing_pipeline/pdf_indexing.js.map create mode 100644 build/indexing_pipeline/rssFeeds/index.js create mode 100644 build/indexing_pipeline/rssFeeds/index.js.map create mode 100644 build/indexing_pipeline/utils.js create mode 100644 build/indexing_pipeline/utils.js.map create mode 100644 build/preload.js create mode 100644 build/preload.js.map create mode 100644 build/renderer.js create mode 100644 build/renderer.js.map create mode 100644 build/search/find_similar.js create mode 100644 build/search/find_similar.js.map diff --git a/.gitignore b/.gitignore index b375d75..d2e9c46 100644 --- a/.gitignore +++ b/.gitignore @@ -110,4 +110,3 @@ afterSignHook.js buildAPIkeys.js AuthKey_7LNRLB4RZ6.p8 -build/ diff --git a/build/entitlements.mac.plist b/build/entitlements.mac.plist deleted file mode 100644 index 1cb07b7..0000000 --- a/build/entitlements.mac.plist +++ /dev/null @@ -1 +0,0 @@ - com.apple.security.cs.allow-jit com.apple.security.cs.allow-unsigned-executable-memory com.apple.security.cs.allow-dyld-environment-variables \ No newline at end of file diff --git a/build/index.js b/build/index.js new file mode 100644 index 0000000..e7a7c43 --- /dev/null +++ b/build/index.js @@ -0,0 +1,2604 @@ +var __awaiter = + (this && this.__awaiter) || + function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P + ? value + : new P(function (resolve) { + resolve(value) + }) + } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)) + } catch (e) { + reject(e) + } + } + function rejected(value) { + try { + step(generator['throw'](value)) + } catch (e) { + reject(e) + } + } + function step(result) { + result.done + ? resolve(result.value) + : adopt(result.value).then(fulfilled, rejected) + } + step( + (generator = generator.apply(thisArg, _arguments || [])).next(), + ) + }) + } +var __generator = + (this && this.__generator) || + function (thisArg, body) { + var _ = { + label: 0, + sent: function () { + if (t[0] & 1) throw t[1] + return t[1] + }, + trys: [], + ops: [], + }, + f, + y, + t, + g + return ( + (g = { next: verb(0), throw: verb(1), return: verb(2) }), + typeof Symbol === 'function' && + (g[Symbol.iterator] = function () { + return this + }), + g + ) + function verb(n) { + return function (v) { + return step([n, v]) + } + } + function step(op) { + if (f) throw new TypeError('Generator is already executing.') + while ((g && ((g = 0), op[0] && (_ = 0)), _)) + try { + if ( + ((f = 1), + y && + (t = + op[0] & 2 + ? y['return'] + : op[0] + ? y['throw'] || + ((t = y['return']) && t.call(y), 0) + : y.next) && + !(t = t.call(y, op[1])).done) + ) + return t + if (((y = 0), t)) op = [op[0] & 2, t.value] + switch (op[0]) { + case 0: + case 1: + t = op + break + case 4: + _.label++ + return { value: op[1], done: false } + case 5: + _.label++ + y = op[1] + op = [0] + continue + case 7: + op = _.ops.pop() + _.trys.pop() + continue + default: + if ( + !((t = _.trys), + (t = t.length > 0 && t[t.length - 1])) && + (op[0] === 6 || op[0] === 2) + ) { + _ = 0 + continue + } + if ( + op[0] === 3 && + (!t || (op[1] > t[0] && op[1] < t[3])) + ) { + _.label = op[1] + break + } + if (op[0] === 6 && _.label < t[1]) { + _.label = t[1] + t = op + break + } + if (t && _.label < t[2]) { + _.label = t[2] + _.ops.push(op) + break + } + if (t[2]) _.ops.pop() + _.trys.pop() + continue + } + op = body.call(thisArg, _) + } catch (e) { + op = [6, e] + y = 0 + } finally { + f = t = 0 + } + if (op[0] & 5) throw op[1] + return { value: op[0] ? op[1] : void 0, done: true } + } + } +var __spreadArray = + (this && this.__spreadArray) || + function (to, from, pack) { + if (pack || arguments.length === 2) + for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i) + ar[i] = from[i] + } + } + return to.concat(ar || Array.prototype.slice.call(from)) + } +// +import { indexDocument } from './indexing_pipeline/index.js' +import { findSimilar } from './search/find_similar.js' +import { + addFeedSource, + getAllRSSSources, +} from './indexing_pipeline/rssFeeds/index.js' +//////////////////////////////// +/// GENERAL SETUP /// +//////////////////////////////// +import { fileURLToPath } from 'url' +import { dirname } from 'path' +import { shell } from 'electron' +var __filename = fileURLToPath(import.meta.url) +var __dirname = dirname(__filename) +import express from 'express' +import electron, { + app, + BrowserWindow, + Tray, + Menu, + nativeImage, + dialog, + Notification, +} from 'electron' +import url from 'url' +import xml2js from 'xml2js' +import pkg from 'electron-updater' +var autoUpdater = pkg.autoUpdater +import { AsyncDatabase } from 'promised-sqlite3' +import axios from 'axios' +import Store from 'electron-store' +import fs from 'fs' +import path from 'path' +import log from 'electron-log' +import * as lancedb from 'vectordb' +import dotEnv from 'dotenv' +import cors from 'cors' +import chokidar from 'chokidar' +dotEnv.config() +var isPackaged = app.isPackaged +var tray = null +var mainWindow +var downloadProgress = 0 +var EXPRESS_PORT +if (isPackaged) { + EXPRESS_PORT = 11922 // Different from common React port 3000 to avoid conflicts +} else { + EXPRESS_PORT = 11923 // Different from common React port 3000 to avoid conflicts +} +var expressApp = express() +expressApp.use(cors({ origin: '*' })) +//////////////////////////////// +/// DATATBASE SETUP STUFF /// +//////////////////////////////// +import settings from 'electron-settings' +if (!isPackaged) { + settings.configure({ + dir: path.join(electron.app.getAppPath(), '..', 'MemexDesktopData'), + }) +} +var store = isPackaged + ? new Store() + : new Store({ + cwd: path.join(electron.app.getAppPath(), '..', 'MemexDesktopData'), + }) +var sourcesDB = null +var vectorDBuri = app.isPackaged + ? path.join(app.getPath('userData'), 'data/vectorDB') + : path.join('../MemexDesktopData/vectorDB') +var vectorDocsTable = null +var vectorDocsTableName = 'vectordocstable' +var allTables = { + sourcesDB: sourcesDB, + vectorDocsTable: vectorDocsTable, +} +//////////////////////////////// +/// FOLDERWATCHING SETUP/// +//////////////////////////////// +import { processPDF } from './indexing_pipeline/pdf_indexing.js' +import { processMarkdown } from './indexing_pipeline/markdown_indexing.js' +var pdfJS = null +var processingQueue = Promise.resolve() +var folderWatchers = {} +//////////////////////////////// +/// TRANSFORMER JS STUFF /// +//////////////////////////////// +// Setup +var modelPipeline +var modelEnvironment +// embedding functions +var embedTextFunction +var generateEmbeddings +var extractEntities +var entityExtractionFunction +//////////////////////////////// +/// ELECTRON APP BASIC SETUP /// +//////////////////////////////// +if (app.dock) { + // Check if the dock API is available (macOS specific) + app.dock.hide() +} +if (!settings.has('userPref.startOnStartup')) { + settings.set('userPref.startOnStartup', true) + app.setLoginItemSettings({ + openAtLogin: true, + }) +} +// if (require('electron-squirrel-startup')) { +// app.quit() +// } +expressApp.use(express.json({ limit: '50mb' })) // adjust the limit as required +expressApp.use(express.urlencoded({ extended: true, limit: '50mb' })) // adjust the limit as required +process.on('uncaughtException', function (err) { + log.error('There was an uncaught error', err) +}) +process.on('unhandledRejection', function (reason, promise) { + log.error('Unhandled Rejection at:', promise, 'reason:', reason) +}) +// Example route 1: Simple Hello World +expressApp.get('/hello', function (req, res) { + res.send("Hello World from Electron's Express server!") +}) +// Example route 2: Send back query params +expressApp.get('/echo', function (req, res) { + res.json(req.query) +}) +// Example route 3other functionality you want to add +var server = null +function startExpress() { + if (!server || !server.listening) { + server = expressApp.listen(EXPRESS_PORT, function () { + log.info( + 'Express server started on http://localhost:'.concat( + EXPRESS_PORT, + ), + ) + console.log( + 'Express server started on http://localhost:'.concat( + EXPRESS_PORT, + ), + ) + }) + server.keepAliveTimeout = 300000000000000000 + server.timeout = 0 + server.on('close', function () { + console.log('Express server has shut down') + log.info('Express server has shut down') + }) + } else { + console.log( + 'Express server is already running on http://localhost:'.concat( + EXPRESS_PORT, + ), + ) + } +} +function checkSyncKey(inputKey) { + var storedKey = store.get('syncKey') + if (!storedKey) { + store.set('syncKey', inputKey) + return true + } else if (storedKey === inputKey) { + return true + } else { + return false + } +} +function stopExpress() { + return new Promise(function (resolve, reject) { + if (server) { + server.close(function (err) { + if (err) { + log.error('Error stopping Express server:', err) + reject(err) + } else { + console.log('Express server stopped.') + server = null // Nullify the server + resolve() + } + process.exit(0) + }) + } else { + resolve() + } + }) +} +function pickDirectory(type) { + console.log('pickDirectory', type) + try { + var directories = dialog.showOpenDialogSync({ + properties: ['openDirectory'], + }) + if (directories && directories.length > 0) { + var path = directories[0] + store.set(type, path) + return path // Return the first selected directory + } + } catch (error) { + var err = error + if (err.code === 'EACCES') { + dialog.showErrorBox( + 'Permission Denied', + 'You do not have permission to access this directory. Please select a different directory or change your permission settings.', + ) + } else { + dialog.showErrorBox( + 'An error occurred', + 'An error occurred while selecting the directory. Please try again.', + ) + } + log.error(error) + } + return null +} +function createWindow() { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + return [ + 2 /*return*/, + new Promise(function (resolve, reject) { + mainWindow = new BrowserWindow({ + height: 600, + width: 800, + webPreferences: { + preload: path.join(__dirname, 'preload.js'), + nodeIntegration: true, + }, + }) + var indexPath + if (isPackaged) { + indexPath = path.join( + electron.app.getAppPath(), + 'src', + 'loading.html', + ) + } else { + indexPath = path.join( + electron.app.getAppPath(), + 'src', + 'loading.html', + ) + } + // mainWindow.webContents.openDevTools() + mainWindow.on('close', function (event) { + event.preventDefault() + mainWindow.hide() + }) + mainWindow + .loadURL( + url.format({ + pathname: indexPath, + protocol: 'file:', + slashes: true, + }), + ) + .then(function () { + resolve() // Resolve the promise when the window is loaded + }) + ['catch'](function (error) { + reject(error) // Reject the promise if there's an error + }) + }), + ] + }) + }) +} +app.on('before-quit', function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + tray === null || tray === void 0 ? void 0 : tray.destroy() + if (!server) return [3 /*break*/, 2] + log.info('Stopping Express server as parto of quit process') + return [4 /*yield*/, stopExpress()] + case 1: + _a.sent() + _a.label = 2 + case 2: + log.info('before-quit') + return [2 /*return*/] + } + }) + }) +}) +app.on('ready', function () { + return __awaiter(void 0, void 0, void 0, function () { + var trayIconPath, trayIcon, updateMenuItem, contextMenu + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + return [4 /*yield*/, settings.get('hasOnboarded')] + case 1: + if (!(_a.sent() === undefined)) return [3 /*break*/, 6] + return [4 /*yield*/, createWindow()] + case 2: + _a.sent() + new Notification({ + title: 'Memex Rabbit Hole Ready!', + body: 'Go back to the extension sidebar to continue', + }).show() + return [4 /*yield*/, initializeDatabase()] + case 3: + _a.sent() + return [4 /*yield*/, initializeModels()] + case 4: + embedTextFunction = _a.sent() + mainWindow.loadURL( + url.format({ + pathname: path.join( + electron.app.getAppPath(), + 'src', + 'index.html', + ), + protocol: 'file:', + slashes: true, + }), + ) + if (!mainWindow || !mainWindow.isFocused()) { + new Notification({ + title: 'Memex Rabbit Hole Ready!', + body: 'Go back to the extension sidebar to continue', + }).show() + } + return [4 /*yield*/, settings.set('hasOnboarded', true)] + case 5: + _a.sent() + return [3 /*break*/, 9] + case 6: + return [4 /*yield*/, initializeDatabase()] + case 7: + _a.sent() + return [4 /*yield*/, initializeModels()] + case 8: + embedTextFunction = _a.sent() + _a.label = 9 + case 9: + if (!allTables.sourcesDB || !allTables.vectorDocsTable) { + return [2 /*return*/] + } + // await initializeFileSystemWatchers() + try { + startExpress() // Start Express server first + log.catchErrors() + trayIconPath = null + if (isPackaged) { + trayIconPath = path.join( + process.resourcesPath, + 'src/img/tray_icon.png', + ) + } else { + trayIconPath = path.join( + electron.app.getAppPath(), + 'src', + 'img', + 'tray_icon_dev.png', + ) + } + trayIcon = nativeImage.createFromPath(trayIconPath) + if (!fs.existsSync(trayIconPath)) { + log.error('Tray icon not found:', trayIconPath) + return [2 /*return*/] + } + tray = new Tray(trayIcon) + tray.setImage(trayIcon) + updateMenuItem = { + label: 'Check for Updates', + click: function () { + autoUpdater.checkForUpdates() + }, + } + contextMenu = Menu.buildFromTemplate([ + { + label: 'Memex Local Sync - v'.concat( + app.getVersion(), + ), + enabled: false, + }, + { + label: 'Start on Startup', + type: 'checkbox', + checked: app.getLoginItemSettings().openAtLogin, + click: function (item) { + var startOnStartup = item.checked + app.setLoginItemSettings({ + openAtLogin: startOnStartup, + }) + }, + }, + { + label: 'Refresh Sync Key', + click: function () { + store['delete']('syncKey') + }, + }, + { + label: 'Add Local folder', + click: function () { + return __awaiter( + this, + void 0, + void 0, + function () { + return __generator( + this, + function (_a) { + switch (_a.label) { + case 0: + return [ + 4 /*yield*/, + watchNewFolder(), + ] + case 1: + _a.sent() + return [ + 2 /*return*/, + ] + } + }, + ) + }, + ) + }, + }, + updateMenuItem, + { + label: 'Exit', + click: function () { + console.log('exit clicked before') + app.quit() + console.log('exit clicked') + }, + }, + ]) + // Set the context menu to the Tray + tray.setContextMenu(contextMenu) + // Optional: Add a tooltip to the Tray + tray.setToolTip('Memex Local Sync Helper') + try { + autoUpdater + .checkForUpdates() + .then(function () {}) + ['catch'](function (err) { + log.error('err', err) + }) + autoUpdater.on('update-available', function () { + return __awaiter( + this, + void 0, + void 0, + function () { + return __generator(this, function (_a) { + log.info('update available') + log.info( + autoUpdater.downloadUpdate(), + ) + return [2 /*return*/] + }) + }, + ) + }) + autoUpdater.on('update-downloaded', function () { + log.info('update downloaded') + autoUpdater.quitAndInstall() + }) + } catch (error) { + console.log('error', error) + } + } catch (error) { + log.error('error', error) + app.quit() + } + return [2 /*return*/] + } + }) + }) +}) +function generateEmbeddingFromText(text2embed) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + return [ + 4 /*yield*/, + generateEmbeddings(text2embed, { + pooling: 'mean', + normalize: true, + }), + ] + case 1: + return [2 /*return*/, _a.sent()] + } + }) + }) +} +function initializeDatabase() { + return __awaiter(this, void 0, void 0, function () { + var dbPath, + createRSSsourcesTable, + createWebPagesTable, + createAnnotationsTable, + vectorDB, + generateZeroVector, + defaultVectorDocument, + _a, + error_1 + var _this = this + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + dbPath = null + if (isPackaged) { + if ( + !fs.existsSync( + path.join(app.getPath('userData'), 'data'), + ) + ) { + fs.mkdirSync( + path.join(app.getPath('userData'), 'data'), + { + recursive: true, + }, + ) + } + dbPath = path.join( + app.getPath('userData'), + 'data/sourcesDB.db', + ) + log.log('dbPath', app.getPath('userData')) + fs.access( + app.getPath('userData'), + fs.constants.R_OK | fs.constants.W_OK, + function (err) { + return __awaiter( + _this, + void 0, + void 0, + function () { + var dir + return __generator(this, function (_a) { + if (err) { + log.error( + 'No access to database file:', + err, + ) + } else { + log.log( + 'Read/Write access is available for the database file', + ) + dir = path.join( + app.getPath('userData'), + 'data', + ) + if (!fs.existsSync(dir)) { + fs.mkdirSync(dir, { + recursive: true, + }) + } + } + return [2 /*return*/] + }) + }, + ) + }, + ) + } else { + if ( + !fs.existsSync( + path.join(__dirname, '..', 'MemexDesktopData'), + ) + ) { + fs.mkdirSync( + path.join(__dirname, '..', 'MemexDesktopData'), + { + recursive: true, + }, + ) + } + dbPath = '../MemexDesktopData/sourcesDB.db' + } + return [ + 4 /*yield*/, + AsyncDatabase.open(dbPath), + // create Tables + ] + case 1: + sourcesDB = _b.sent() + createRSSsourcesTable = + 'CREATE TABLE IF NOT EXISTS rssSourcesTable(\n feedUrl STRING PRIMARY KEY, \n feedTitle STRING, \n type STRING, \n lastSynced INTEGER)\n ' + return [ + 4 /*yield*/, + sourcesDB.run(createRSSsourcesTable), + // create the websites table + ] + case 2: + _b.sent() + createWebPagesTable = + 'CREATE TABLE IF NOT EXISTS webPagesTable(\n fullUrl STRING PRIMARY KEY, \n pageTitle STRING, \n fullHTML STRING, \n contentType STRING, \n createdWhen INTEGER, \n sourceApplication STRING, \n creatorId STRING, \n metaDataJSON STRING)\n ' + return [ + 4 /*yield*/, + sourcesDB.run(createWebPagesTable), + // create the annotations table + ] + case 3: + _b.sent() + createAnnotationsTable = + 'CREATE TABLE IF NOT EXISTS annotationsTable(\n fullUrl STRING PRIMARY KEY, \n pageTitle STRING, \n fullHTML STRING, \n contentType STRING, \n createdWhen INTEGER, \n sourceApplication STRING, \n creatorId STRING)\n ' + return [ + 4 /*yield*/, + sourcesDB.run(createAnnotationsTable), + // create the pdf document table + // let createPDFTable = `CREATE TABLE IF NOT EXISTS pdfTable( + // id INTEGER PRIMARY KEY, + // path STRING, + // fingerPrint STRING, + // pageTitle STRING, + // extractedContent STRING, + // createdWhen INTEGER, + // sourceApplication STRING, + // creatorId STRING, + // metaDataJSON STRING + // ) + // ` + // await sourcesDB.run(createPDFTable) + // let createIndexQuery = `CREATE INDEX IF NOT EXISTS idx_pdfTable_fingerPrint ON pdfTable(fingerPrint)` + // await sourcesDB.run(createIndexQuery) + // let createIndexQueryForPath = `CREATE INDEX IF NOT EXISTS idx_pdfTable_path ON pdfTable(path)` + // await sourcesDB.run(createIndexQueryForPath) + // // Create the folders to watch table + // let createFoldersTable = `CREATE TABLE IF NOT EXISTS watchedFoldersTable( + // id INTEGER PRIMARY KEY, + // path STRING, + // type STRING + // metaDataJSON STRING + // ) + // ` + // let createIndexQueryForType = `CREATE INDEX IF NOT EXISTS idx_watchedFoldersTable_type ON watchedFoldersTable(type)` + // await sourcesDB.run(createIndexQueryForType) + // await sourcesDB.run(createFoldersTable) + // // create the markdown table + // let createMarkdownTable = `CREATE TABLE IF NOT EXISTS markdownDocsTable( + // id INTEGER PRIMARY KEY, + // path STRING, + // fingerPrint STRING, + // pageTitle STRING, + // content STRING, + // sourceApplication STRING, + // createdWhen INTEGER, + // creatorId STRING, + // metaDataJSON STRING + // ) + // ` + // await sourcesDB.run(createMarkdownTable) + // let createIndexForMarkdownPath = `CREATE INDEX IF NOT EXISTS idx_markdownDocsTable_path ON markdownDocsTable(path)` + // await sourcesDB.run(createIndexForMarkdownPath) + // let createIndexForMarkdownFingerPrint = `CREATE INDEX IF NOT EXISTS idx_markdownDocsTable_fingerPrint ON markdownDocsTable(fingerPrint)` + // await sourcesDB.run(createIndexForMarkdownFingerPrint) + ] + case 4: + _b.sent() + // create the pdf document table + // let createPDFTable = `CREATE TABLE IF NOT EXISTS pdfTable( + // id INTEGER PRIMARY KEY, + // path STRING, + // fingerPrint STRING, + // pageTitle STRING, + // extractedContent STRING, + // createdWhen INTEGER, + // sourceApplication STRING, + // creatorId STRING, + // metaDataJSON STRING + // ) + // ` + // await sourcesDB.run(createPDFTable) + // let createIndexQuery = `CREATE INDEX IF NOT EXISTS idx_pdfTable_fingerPrint ON pdfTable(fingerPrint)` + // await sourcesDB.run(createIndexQuery) + // let createIndexQueryForPath = `CREATE INDEX IF NOT EXISTS idx_pdfTable_path ON pdfTable(path)` + // await sourcesDB.run(createIndexQueryForPath) + // // Create the folders to watch table + // let createFoldersTable = `CREATE TABLE IF NOT EXISTS watchedFoldersTable( + // id INTEGER PRIMARY KEY, + // path STRING, + // type STRING + // metaDataJSON STRING + // ) + // ` + // let createIndexQueryForType = `CREATE INDEX IF NOT EXISTS idx_watchedFoldersTable_type ON watchedFoldersTable(type)` + // await sourcesDB.run(createIndexQueryForType) + // await sourcesDB.run(createFoldersTable) + // // create the markdown table + // let createMarkdownTable = `CREATE TABLE IF NOT EXISTS markdownDocsTable( + // id INTEGER PRIMARY KEY, + // path STRING, + // fingerPrint STRING, + // pageTitle STRING, + // content STRING, + // sourceApplication STRING, + // createdWhen INTEGER, + // creatorId STRING, + // metaDataJSON STRING + // ) + // ` + // await sourcesDB.run(createMarkdownTable) + // let createIndexForMarkdownPath = `CREATE INDEX IF NOT EXISTS idx_markdownDocsTable_path ON markdownDocsTable(path)` + // await sourcesDB.run(createIndexForMarkdownPath) + // let createIndexForMarkdownFingerPrint = `CREATE INDEX IF NOT EXISTS idx_markdownDocsTable_fingerPrint ON markdownDocsTable(fingerPrint)` + // await sourcesDB.run(createIndexForMarkdownFingerPrint) + console.log('SourcesDB initialized at: ', dbPath) + return [4 /*yield*/, lancedb.connect(vectorDBuri)] + case 5: + vectorDB = _b.sent() + generateZeroVector = function (size) { + return new Array(size).fill(0) + } + defaultVectorDocument = { + fullurl: 'null', + pagetitle: 'null', + sourceapplication: 'null', + createdwhen: 0, + creatorid: 'null', + contenttype: 'null', + contenttext: 'null', + entities: 'null', + vector: generateZeroVector(768), + } + _b.label = 6 + case 6: + _b.trys.push([6, 14, , 15]) + _b.label = 7 + case 7: + _b.trys.push([7, 9, , 12]) + return [ + 4 /*yield*/, + vectorDB.openTable(vectorDocsTableName), + ] + case 8: + vectorDocsTable = _b.sent() + return [3 /*break*/, 12] + case 9: + _a = _b.sent() + if (!(vectorDocsTable == null)) return [3 /*break*/, 11] + return [ + 4 /*yield*/, + vectorDB.createTable(vectorDocsTableName, [ + defaultVectorDocument, + ]), + ] + case 10: + vectorDocsTable = _b.sent() + _b.label = 11 + case 11: + return [3 /*break*/, 12] + case 12: + return [4 /*yield*/, vectorDocsTable.countRows()] + case 13: + if (_b.sent() === 0) { + vectorDocsTable.add([defaultVectorDocument]) + } + return [3 /*break*/, 15] + case 14: + error_1 = _b.sent() + console.log('error', error_1) + return [3 /*break*/, 15] + case 15: + allTables = { + sourcesDB: sourcesDB, + vectorDocsTable: vectorDocsTable, + } + console.log('VectorDB initialized at: ', vectorDBuri) + return [2 /*return*/] + } + }) + }) +} +function initializeFileSystemWatchers() { + return __awaiter(this, void 0, void 0, function () { + var folderFetch, folders + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + return [ + 4 /*yield*/, + sourcesDB === null || sourcesDB === void 0 + ? void 0 + : sourcesDB.all( + 'SELECT * FROM watchedFoldersTable', + function (err, rows) { + if (err) { + return console.log(err.message) + } + // rows contains all entries in the table + console.log(rows) + }, + ), + ] + case 1: + folderFetch = _a.sent() + folders = + (folderFetch === null || folderFetch === void 0 + ? void 0 + : folderFetch.map(function (folder) { + var obsidianFolder = path.join( + folder.path, + '.obsidian', + ) + var logseqFolder = path.join( + folder.path, + 'logseq', + ) + if (fs.existsSync(obsidianFolder)) { + folder.sourceApplication = 'obsidian' + } else if (fs.existsSync(logseqFolder)) { + folder.sourceApplication = 'logseq' + folder.path = logseqFolder + '/pages' + } else { + folder.sourceApplication = 'local' + } + return folder + })) || [] + if (folderFetch) { + startWatchers(folders, allTables) + } + return [2 /*return*/] + } + }) + }) +} +function initializeModels() { + return __awaiter(this, void 0, void 0, function () { + var _a, + pipeline, + env, + modelsDir, + modelFilePath, + modelUrl, + writer_1, + response_1, + totalLength_1 + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + return [4 /*yield*/, import('@xenova/transformers')] + case 1: + ;(_a = _b.sent()), (pipeline = _a.pipeline), (env = _a.env) + modelPipeline = pipeline + modelEnvironment = env + modelEnvironment.allowLocalModels = true + if (isPackaged) { + modelsDir = path.join(app.getPath('userData'), 'models') + } else { + modelsDir = '../MemexDesktopData/models' + } + if (!fs.existsSync(modelsDir)) { + fs.mkdirSync(modelsDir, { recursive: true }) + } + modelFilePath = path.join( + modelsDir, + 'all-mpnet-base-v2_quantized.onnx', + ) + if (!!fs.existsSync(modelFilePath)) return [3 /*break*/, 3] + modelUrl = + 'https://huggingface.co/Xenova/all-mpnet-base-v2/resolve/main/onnx/model_quantized.onnx' + writer_1 = fs.createWriteStream(modelFilePath) + return [ + 4 /*yield*/, + axios({ + url: modelUrl, + method: 'GET', + responseType: 'stream', + }), + ] + case 2: + response_1 = _b.sent() + totalLength_1 = response_1.headers['content-length'] + console.log('Starting download') + response_1.data.pipe(writer_1) + new Promise(function (resolve, reject) { + var bytesDownloaded = 0 + response_1.data.on('data', function (chunk) { + bytesDownloaded += chunk.length + downloadProgress = Math.floor( + (bytesDownloaded / totalLength_1) * 100, + ) + mainWindow.webContents.send( + 'download-progress', + ''.concat(downloadProgress, '%'), + ) + }) + response_1.data.on('end', function () { + console.log('Download complete') + resolve() + }) + writer_1.on('error', reject) + }) + _b.label = 3 + case 3: + modelEnvironment.localModelPath = modelFilePath + console.log('Model file path1: '.concat(modelFilePath)) + return [ + 4 /*yield*/, + modelPipeline( + 'feature-extraction', + 'Xenova/all-mpnet-base-v2', + ), + ] + case 4: + generateEmbeddings = _b.sent() + embedTextFunction = generateEmbeddingFromText + //general setup of model pipeline needs to be on highest level to be consistent in chunking size for vectors + /// + // // prepare NER extraction model, needs to be on highest level to be consistent in chunking size for vectors + // // modelEnvironment.allowRemoteModels = false; + // modelEnvironment.localModelPath = + // "./models/bert-base-multilingual-cased-ner-hrl_quantized.onnx"; + // extractEntities = await modelPipeline( + // "token-classification", + // "Xenova/bert-base-multilingual-cased-ner-hrl" + // ); + // entityExtractionFunction = await extractEntitiesFromText; + // console.log( + // await entityExtractionFunction( + // "To wean their country off imported oil and gas, and in the hope of retiring dirty coal-fired power stations, China’s leaders have poured money into wind and solar energy. But they are also turning to one of the most sustainable forms of non-renewable power. Over the past decade China has added 37 nuclear reactors, for a total of 55, according to the International Atomic Energy Agency, a UN body. During that same period America, which leads the world with 93 reactors, added two." + // ) + // ); + // entityExtractionFunction( + // "In 1945, to wean their country off imported oil and gas, and in the hope of retiring dirty coal-fired power stations, China’s leaders and in particular Xi Xinping and John malcovich have poured money into wind and solar energy and using chemical substances like H20 and co2. But they are also turning to one of the most sustainable forms of non-renewable power. Over the past decade China has added 37 nuclear reactors, for a total of 55, according to the International Atomic Energy Agency, a UN body. During that same period America, which leads the world with 93 reactors, added two." + // ); + // setting up all databases and tables + return [2 /*return*/, embedTextFunction] + } + }) + }) +} +// async function extractEntitiesFromText(text2analzye) { +// return await extractEntities(text2analzye) +// } +function isPathComponentValid(component) { + if ( + typeof component !== 'string' || + !component.match(/^[a-z0-9\-]{2,20}$/) + ) { + return false + } else { + return true + } +} +/////////////////////////// +/// RABBIT HOLE ENDPOINTS /// +///////////////////////// +expressApp.put('/add_page', function (req, res) { + return __awaiter(this, void 0, void 0, function () { + var fullUrl, + pageTitle, + fullHTML, + createdWhen, + contentType, + creatorId, + sourceApplication, + metadataJSON, + error_2 + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (!checkSyncKey(req.body.syncKey)) { + return [ + 2 /*return*/, + res + .status(403) + .send('Only one app instance allowed'), + ] + } + fullUrl = req.body.fullUrl + pageTitle = req.body.pageTitle + fullHTML = req.body.fullHTML + createdWhen = req.body.createdWhen + contentType = req.body.contentType + creatorId = req.body.creatorId + sourceApplication = req.body.sourceApplication + metadataJSON = '' + _a.label = 1 + case 1: + _a.trys.push([1, 4, , 5]) + return [ + 4 /*yield*/, + allTables.sourcesDB.run( + 'INSERT INTO webPagesTable VALUES(?, ?, ?, ?, ?, ?, ?, ? )', + [ + fullUrl, + pageTitle, + fullHTML, + contentType, + createdWhen, + sourceApplication, + creatorId, + metadataJSON, + ], + ), + ] + case 2: + _a.sent() + return [ + 4 /*yield*/, + indexDocument({ + fullUrl: fullUrl, + pageTitle: pageTitle, + fullHTML: fullHTML, + createdWhen: createdWhen, + contentType: contentType, + sourceApplication: sourceApplication, + creatorId: creatorId, + embedTextFunction: embedTextFunction, + allTables: allTables, + entityExtractionFunction: entityExtractionFunction, + }), + ] + case 3: + _a.sent() + return [2 /*return*/, res.status(200).send(true)] + case 4: + error_2 = _a.sent() + log.error('Error in /index_document', error_2) + return [ + 2 /*return*/, + res + .status(500) + .json({ error: 'Internal server error' }), + ] + case 5: + return [2 /*return*/] + } + }) + }) +}) +expressApp.put('/add_annotation', function (req, res) { + var _a, _b, _c, _d, _e, _f, _g + return __awaiter(this, void 0, void 0, function () { + var fullUrl, + pageTitle, + fullHTML, + createdWhen, + contentType, + creatorId, + sourceApplication, + error_3 + return __generator(this, function (_h) { + switch (_h.label) { + case 0: + if (!checkSyncKey(req.body.syncKey)) { + return [ + 2 /*return*/, + res + .status(403) + .send('Only one app instance allowed'), + ] + } + fullUrl = + ((_a = req.body) === null || _a === void 0 + ? void 0 + : _a.fullUrl) || '' + pageTitle = + ((_b = req.body) === null || _b === void 0 + ? void 0 + : _b.pageTitle) || '' + fullHTML = + ((_c = req.body) === null || _c === void 0 + ? void 0 + : _c.fullHTML) || '' + createdWhen = + ((_d = req.body) === null || _d === void 0 + ? void 0 + : _d.createdWhen) || '' + contentType = + ((_e = req.body) === null || _e === void 0 + ? void 0 + : _e.contentType) || '' + creatorId = + ((_f = req.body) === null || _f === void 0 + ? void 0 + : _f.creatorId) || '' + sourceApplication = + ((_g = req.body) === null || _g === void 0 + ? void 0 + : _g.sourceApplication) || '' + _h.label = 1 + case 1: + _h.trys.push([1, 4, , 5]) + return [ + 4 /*yield*/, + sourcesDB === null || sourcesDB === void 0 + ? void 0 + : sourcesDB.run( + 'INSERT INTO annotationsTable VALUES(?, ?, ?, ?, ?, ?, ?)', + [ + fullUrl, + pageTitle, + fullHTML, + contentType, + createdWhen, + sourceApplication, + creatorId, + ], + ), + ] + case 2: + _h.sent() + return [ + 4 /*yield*/, + indexDocument({ + fullUrl: fullUrl, + pageTitle: pageTitle, + fullHTML: fullHTML, + createdWhen: createdWhen, + contentType: contentType, + sourceApplication: sourceApplication, + creatorId: creatorId, + embedTextFunction: embedTextFunction, + allTables: allTables, + entityExtractionFunction: entityExtractionFunction, + }), + ] + case 3: + _h.sent() + return [2 /*return*/, res.status(200).send(true)] + case 4: + error_3 = _h.sent() + log.error('Error in /index_annotation', error_3) + return [ + 2 /*return*/, + res + .status(500) + .json({ error: 'Internal server error' }), + ] + case 5: + return [2 /*return*/] + } + }) + }) +}) +expressApp.post('/get_similar', function (req, res) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (!checkSyncKey(req.body.syncKey)) { + return [ + 2 /*return*/, + res + .status(403) + .send('Only one app instance allowed'), + ] + } + console.log('find_similar', embedTextFunction) + return [ + 4 /*yield*/, + findSimilar( + req, + res, + embedTextFunction, + allTables, + entityExtractionFunction, + ), + ] + case 1: + return [2 /*return*/, _a.sent()] + } + }) + }) +}) +expressApp.post('/load_feed_sources', function (req, res) { + return __awaiter(this, void 0, void 0, function () { + var sourcesList, feedSourcesOutput, error_4 + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (!checkSyncKey(req.body.syncKey)) { + return [ + 2 /*return*/, + res + .status(403) + .send('Only one app instance allowed'), + ] + } + _a.label = 1 + case 1: + _a.trys.push([1, 3, , 4]) + return [ + 4 /*yield*/, + allTables.sourcesDB.all( + 'SELECT * FROM rssSourcesTable', + ), + // , function(err, rows) { + // if (err) { + // console.error(err); + // rturn; + // } + // console.log("rows", rows); + ] + case 2: + sourcesList = _a.sent() + feedSourcesOutput = sourcesList.map(function (source) { + return { + feedUrl: source.feedUrl, + feedTitle: source.feedTitle, + feedFavIcon: source.feedFavIcon, + type: source.type, + } + }) + console.log('feedSources', feedSourcesOutput) + return [ + 2 /*return*/, + res.status(200).send(feedSourcesOutput), + ] + case 3: + error_4 = _a.sent() + console.log( + 'Error loading feed sources in /load_feed_sources', + error_4, + ) + return [ + 2 /*return*/, + res.status(500).json({ error: error_4 }), + ] + case 4: + return [2 /*return*/] + } + }) + }) +}) +var feedSourceQueue = [] +expressApp.post('/add_feed_source', function (req, res) { + var _a, _b, _c, _d + return __awaiter(this, void 0, void 0, function () { + var feedSources, + _loop_1, + i, + state_1, + _i, + feedSourceQueue_1, + feedSource, + feedUrl, + feedTitle, + type, + error_5 + return __generator(this, function (_e) { + switch (_e.label) { + case 0: + log.log('called add_feed_source') + if (!checkSyncKey(req.body.syncKey)) { + console.log('sync key not valid') + return [ + 2 /*return*/, + res + .status(403) + .send('Only one app instance allowed'), + ] + } + feedSources = req.body.feedSources + console.log('feedSources', req.body) + feedSourceQueue = __spreadArray( + __spreadArray([], feedSourceQueue, true), + feedSources, + true, + ) + console.log('feedSourceQueue', feedSourceQueue) + _e.label = 1 + case 1: + _e.trys.push([1, 10, , 11]) + _loop_1 = function (i) { + var feedUrl, + feedTitle, + type, + response, + data, + parser, + parsedData_1, + sql + return __generator(this, function (_f) { + switch (_f.label) { + case 0: + feedUrl = + (_a = feedSources[i]) === null || + _a === void 0 + ? void 0 + : _a.feedUrl + feedTitle = + (_b = feedSources[i]) === null || + _b === void 0 + ? void 0 + : _b.feedTitle + type = + (_c = feedSources[i]) === null || + _c === void 0 + ? void 0 + : _c.type + if (!!feedTitle) return [3 /*break*/, 3] + return [4 /*yield*/, fetch(feedUrl)] + case 1: + response = _f.sent() + return [4 /*yield*/, response.text()] + case 2: + data = _f.sent() + parser = new xml2js.Parser() + parsedData_1 = null + parser.parseString( + data, + function (err, result) { + if (err) { + console.error( + 'Failed to parse RSS feed: ', + err, + ) + } else { + parsedData_1 = + result.rss.channel[0] + } + }, + ) + if (parsedData_1) { + feedTitle = + (_d = + parsedData_1 === null || + parsedData_1 === void 0 + ? void 0 + : parsedData_1.title[0]) !== + null && _d !== void 0 + ? _d + : '' + } + _f.label = 3 + case 3: + if (feedUrl && feedTitle) { + try { + sql = + 'INSERT OR REPLACE INTO rssSourcesTable VALUES (?, ?, ?, ?)' + sourcesDB === null || + sourcesDB === void 0 + ? void 0 + : sourcesDB.run(sql, [ + feedUrl, + feedTitle, + type || null, + null, + ]) + log.log( + 'Added feed '.concat(feedUrl), + ) + } catch (error) { + log.error('Error saving feed') + return [ + 2 /*return*/, + { value: void 0 }, + ] + } + } + return [2 /*return*/] + } + }) + } + i = 0 + _e.label = 2 + case 2: + if (!(i < feedSources.length)) return [3 /*break*/, 5] + return [5 /*yield**/, _loop_1(i)] + case 3: + state_1 = _e.sent() + if (typeof state_1 === 'object') + return [2 /*return*/, state_1.value] + _e.label = 4 + case 4: + i++ + return [3 /*break*/, 2] + case 5: + ;(_i = 0), (feedSourceQueue_1 = feedSourceQueue) + _e.label = 6 + case 6: + if (!(_i < feedSourceQueue_1.length)) + return [3 /*break*/, 9] + feedSource = feedSourceQueue_1[_i] + ;(feedUrl = feedSource.feedUrl), + (feedTitle = feedSource.feedTitle), + (type = feedSource.type) + console.log('Start indexing', feedUrl) + return [ + 4 /*yield*/, + addFeedSource( + feedUrl, + feedTitle, + embedTextFunction, + allTables, + type, + entityExtractionFunction, + ), + // if (success) { + // // TODO: Handle different outcomes + // } + ] + case 7: + _e.sent() + _e.label = 8 + case 8: + _i++ + return [3 /*break*/, 6] + case 9: + return [2 /*return*/, res.status(200).send(true)] + case 10: + error_5 = _e.sent() + log.error( + 'Error adding feed sources in /add_rss_feed', + error_5, + ) + return [ + 2 /*return*/, + res.status(500).json({ error: error_5 }), + ] + case 11: + return [2 /*return*/] + } + }) + }) +}) +expressApp.get('/get_all_rss_sources', function (req, res) { + return __awaiter(this, void 0, void 0, function () { + var rssSources, error_6 + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (!checkSyncKey(req.body.syncKey)) { + return [ + 2 /*return*/, + res + .status(403) + .send('Only one app instance allowed'), + ] + } + _a.label = 1 + case 1: + _a.trys.push([1, 3, , 4]) + return [4 /*yield*/, getAllRSSSources(allTables)] + case 2: + rssSources = _a.sent() + return [2 /*return*/, res.status(200).send(rssSources)] + case 3: + error_6 = _a.sent() + log.error( + 'Error adding '.concat( + req.body.feedUrl, + ' in /add_rss_feed', + ), + error_6, + ) + return [ + 2 /*return*/, + res.status(500).json({ error: error_6 }), + ] + case 4: + return [2 /*return*/] + } + }) + }) +}) +expressApp.put('/remove_feed_source', function (req, res) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + if (!checkSyncKey(req.body.syncKey)) { + return [ + 2 /*return*/, + res.status(403).send('Only one app instance allowed'), + ] + } + return [2 /*return*/] + }) + }) +}) +expressApp.post('/open_file', function (req, res) { + return __awaiter(this, void 0, void 0, function () { + var path, error_7 + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (!checkSyncKey(req.body.syncKey)) { + return [ + 2 /*return*/, + res.status(403).send('No access to open file'), + ] + } + path = req.body.path + if (!fs.existsSync(path)) { + return [ + 2 /*return*/, + res.status(404).send('File not found'), + ] + } + _a.label = 1 + case 1: + _a.trys.push([1, 3, , 4]) + return [4 /*yield*/, shell.openExternal(path)] + case 2: + _a.sent() + return [ + 2 /*return*/, + res.status(200).send('File opened successfully'), + ] + case 3: + error_7 = _a.sent() + return [ + 2 /*return*/, + res.status(500).send('Error opening file'), + ] + case 4: + return [2 /*return*/] + } + }) + }) +}) +expressApp.post('/fetch_all_folders', function (req, res) { + return __awaiter(this, void 0, void 0, function () { + var folders + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (!checkSyncKey(req.body.syncKey)) { + return [ + 2 /*return*/, + res.status(403).send('No access to open file'), + ] + } + return [ + 4 /*yield*/, + sourcesDB === null || sourcesDB === void 0 + ? void 0 + : sourcesDB.all( + 'SELECT * FROM watchedFoldersTable', + function (err, rows) { + if (err) { + return console.log(err.message) + } + // rows contains all entries in the table + console.log(rows) + }, + ), + ] + case 1: + folders = _a.sent() + console.log('folders', folders) + return [2 /*return*/, res.status(200).json(folders)] + } + }) + }) +}) +expressApp.post('/watch_new_folder', function (req, res) { + return __awaiter(this, void 0, void 0, function () { + var folder + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (!checkSyncKey(req.body.syncKey)) { + return [ + 2 /*return*/, + res.status(403).send('No access to open file'), + ] + } + return [4 /*yield*/, watchNewFolder()] + case 1: + folder = _a.sent() + return [2 /*return*/, res.status(200).json(folder)] + } + }) + }) +}) +// this is added as a global object so we can store all the watcher processes to cancel again later if needed +expressApp.post('/remove_folder_to_watch', function (req, res) { + return __awaiter(this, void 0, void 0, function () { + var body, id, originalDocument, watcherToKill + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (!checkSyncKey(req.body.syncKey)) { + return [ + 2 /*return*/, + res.status(403).send('No access to open file'), + ] + } + body = req.body + id = body.id + return [ + 4 /*yield*/, + sourcesDB === null || sourcesDB === void 0 + ? void 0 + : sourcesDB.get( + 'SELECT path FROM watchedFoldersTable WHERE id = ?', + [id], + ), + ] + case 1: + originalDocument = _a.sent() || { path: '' } + watcherToKill = + folderWatchers[ + originalDocument === null || + originalDocument === void 0 + ? void 0 + : originalDocument.path + ] + watcherToKill.close() + return [ + 4 /*yield*/, + sourcesDB === null || sourcesDB === void 0 + ? void 0 + : sourcesDB.run( + 'DELETE FROM watchedFoldersTable WHERE id = ?', + [id], + ), + ] + case 2: + _a.sent() + delete folderWatchers[originalDocument.path] + return [ + 2 /*return*/, + res.status(200).json({ success: true }), + ] + } + }) + }) +}) +function watchNewFolder() { + return __awaiter(this, void 0, void 0, function () { + var newWindow, + newFolderData, + newFolder, + sourceApplication, + obsidianFolder, + logseqFolder, + topLevelFolder, + folders, + folderPaths, + result, + id, + folder, + newFolderObject + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + newWindow = new BrowserWindow({ + height: 10, + width: 10, + transparent: true, + frame: false, + }) + newWindow.focus() + newWindow.on('close', function (event) { + event.preventDefault() + newWindow.hide() + }) + return [ + 4 /*yield*/, + dialog.showOpenDialog(newWindow, { + properties: ['openDirectory'], + }), + ] + case 1: + newFolderData = _a.sent() + newFolder = newFolderData.filePaths[0] + newWindow.close() + if (!newFolder) { + return [2 /*return*/, false] + } + sourceApplication = 'local' + obsidianFolder = path.join(newFolder, '.obsidian') + logseqFolder = path.join(newFolder, 'logseq') + topLevelFolder = newFolder.split('/').pop() + if (fs.existsSync(obsidianFolder)) { + sourceApplication = 'obsidian' + } else if (fs.existsSync(logseqFolder)) { + sourceApplication = 'logseq' + newFolder = logseqFolder + '/pages' + } + folders = [] + return [ + 4 /*yield*/, + sourcesDB === null || sourcesDB === void 0 + ? void 0 + : sourcesDB.all( + 'SELECT * FROM watchedFoldersTable', + function (err, rows) { + if (err) { + return console.log(err.message) + } + // rows contains all entries in the table + console.log(rows) + }, + ), + ] + case 2: + folders = _a.sent() + folderPaths = folders + ? folders.map(function (folder) { + return folder.path + }) + : [] + if (folderPaths.includes(newFolder)) { + return [2 /*return*/] + } + return [ + 4 /*yield*/, + sourcesDB === null || sourcesDB === void 0 + ? void 0 + : sourcesDB.run( + 'INSERT INTO watchedFoldersTable(path, type) VALUES(?, ?, ?)', + [newFolder, sourceApplication, ''], + ), + ] + case 3: + result = _a.sent() + id = + result === null || result === void 0 + ? void 0 + : result.lastID + try { + folder = { + path: newFolder, + sourceApplication: sourceApplication, + id: id, + } + startWatchers([folder], allTables) + } catch (error) { + log.error('Error in /watch_new_folder:', error) + } + newFolderObject = { + path: newFolder, + sourceApplication: sourceApplication, + id: id, + } + return [2 /*return*/, newFolderObject] + } + }) + }) +} +function startWatchers(folders, allTables) { + return __awaiter(this, void 0, void 0, function () { + var ignoredPathObsidian, ignoredPathLogseq, deletionInProgress + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (!!pdfJS) return [3 /*break*/, 2] + return [4 /*yield*/, import('pdfjs-dist')] + case 1: + pdfJS = _a.sent() + _a.label = 2 + case 2: + ignoredPathObsidian = store.get('obsidian') || null + ignoredPathLogseq = store.get('logseq') || null + console.log('ignoredPathObsidian', ignoredPathObsidian) + deletionInProgress = false + // take the given folderPath array and start watchers on each folder + ;(folders === null || folders === void 0 + ? void 0 + : folders.length) > 0 && + (folders === null || folders === void 0 + ? void 0 + : folders.forEach(function (folder) { + var watcher = chokidar.watch(folder.path, { + ignored: [ + /(^|[\/\\])\../, + ignoredPathObsidian, + ignoredPathLogseq, + ], + persistent: true, + }) + folderWatchers[folder.path] = watcher + watcher.on('add', function (path, stats) { + return __awaiter( + this, + void 0, + void 0, + function () { + var retryCount, + maxRetries, + waitForDeletion, + error_8 + var _this = this + return __generator( + this, + function (_a) { + switch (_a.label) { + case 0: + retryCount = 0 + maxRetries = 20 + waitForDeletion = + function () { + return new Promise( + function ( + resolve, + reject, + ) { + if ( + !deletionInProgress + ) { + resolve() + } else if ( + retryCount >= + maxRetries + ) { + reject( + new Error( + 'Max retries reached', + ), + ) + } else { + setTimeout( + function () { + retryCount++ + waitForDeletion() + .then( + resolve, + ) + [ + 'catch' + ]( + reject, + ) + }, + 500, + ) + } + }, + ) + } + _a.label = 1 + case 1: + _a.trys.push([ + 1, + 3, + , + 4, + ]) + return [ + 4 /*yield*/, + waitForDeletion(), + // Continue processing after deletion is complete + ] + case 2: + _a.sent() + return [ + 3 /*break*/, + 4, + ] + case 3: + error_8 = + _a.sent() + // Handle error if max retries reached + console.error( + error_8, + ) + return [ + 3 /*break*/, + 4, + ] + case 4: + processingQueue = + processingQueue.then( + function () { + return __awaiter( + _this, + void 0, + void 0, + function () { + return __generator( + this, + function ( + _a, + ) { + switch ( + _a.label + ) { + case 0: + // rename is a deletion and re-addition in the events, no rename unfortunately + return [ + 4 /*yield*/, + processFiles( + path, + folder.sourceApplication, + 'addOrRename', + pdfJS, + ), + ] + case 1: + // rename is a deletion and re-addition in the events, no rename unfortunately + return [ + 2 /*return*/, + _a.sent(), + ] + } + }, + ) + }, + ) + }, + ) + return [ + 2 /*return*/, + ] + } + }, + ) + }, + ) + }) + watcher.on('unlink', function (path, stats) { + return __awaiter( + this, + void 0, + void 0, + function () { + var fingerPrint + return __generator( + this, + function (_a) { + switch (_a.label) { + case 0: + console.log( + 'Deletion of file started: ', + path, + ) + deletionInProgress = true + if ( + !path.endsWith( + '.pdf', + ) + ) + return [ + 3 /*break*/, + 4, + ] + return [ + 4 /*yield*/, + sourcesDB === + null || + sourcesDB === + void 0 + ? void 0 + : sourcesDB.get( + 'SELECT fingerPrint FROM pdfTable WHERE path = ?', + [ + path, + ], + ), + ] + case 1: + fingerPrint = + _a.sent() || { + fingerPrint: + '', + } + return [ + 4 /*yield*/, + allTables.vectorDocsTable[ + 'delete' + ]( + "fullurl = '".concat( + fingerPrint === + null || + fingerPrint === + void 0 + ? void 0 + : fingerPrint.fingerPrint.toString(), + "'", + ), + ), + ] + case 2: + _a.sent() + return [ + 4 /*yield*/, + allTables.sourcesDB.run( + 'DELETE FROM pdfTable WHERE path = ?', + [path], + ), + ] + case 3: + _a.sent() + deletionInProgress = false + console.log( + 'deletion done: ', + path, + ) + _a.label = 4 + case 4: + if ( + !path.endsWith( + '.md', + ) + ) + return [ + 3 /*break*/, + 6, + ] + return [ + 4 /*yield*/, + allTables.sourcesDB.run( + 'DELETE FROM markdownDocsTable WHERE path = ?', + [path], + ), + ] + case 5: + _a.sent() + deletionInProgress = false + _a.label = 6 + case 6: + return [ + 2 /*return*/, + ] + } + }, + ) + }, + ) + }) + var debounceTimers = {} + watcher.on('change', function (path, stats) { + return __awaiter( + this, + void 0, + void 0, + function () { + var _this = this + return __generator( + this, + function (_a) { + // Clear the previous timer if it exists + if ( + debounceTimers[path] + ) { + clearTimeout( + debounceTimers[ + path + ], + ) + } + // Set a new timer + debounceTimers[path] = + setTimeout( + function () { + processingQueue = + processingQueue.then( + function () { + return __awaiter( + _this, + void 0, + void 0, + function () { + return __generator( + this, + function ( + _a, + ) { + switch ( + _a.label + ) { + case 0: + return [ + 4 /*yield*/, + processFiles( + path, + folder.sourceApplication, + 'contentChange', + pdfJS, + ), + // Once the processing is done, remove the timer from the map + ] + case 1: + _a.sent() + // Once the processing is done, remove the timer from the map + delete debounceTimers[ + path + ] + return [ + 2 /*return*/, + ] + } + }, + ) + }, + ) + }, + ) + }, + 300, + ) // 30 seconds + return [2 /*return*/] + }, + ) + }, + ) + }) + })) + console.log( + 'watchers setup: ', + Object.keys(folderWatchers).length, + ) + return [2 /*return*/] + } + }) + }) +} +function processFiles(file, sourceApplication, changeType, pdfJS) { + return __awaiter(this, void 0, void 0, function () { + var extension + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + extension = file.split('.').pop() + if (!(extension === 'pdf')) return [3 /*break*/, 2] + return [ + 4 /*yield*/, + processPDF(file, allTables, pdfJS, embedTextFunction), + ] + case 1: + _a.sent() + return [2 /*return*/] + case 2: + if (!(extension === 'md')) return [3 /*break*/, 4] + return [ + 4 /*yield*/, + processMarkdown( + file, + allTables, + embedTextFunction, + sourceApplication, + changeType, + ), + ] + case 3: + _a.sent() + return [2 /*return*/] + case 4: + if (extension === 'epub') { + } else if (extension === 'mobi') { + } + _a.label = 5 + case 5: + return [2 /*return*/] + } + }) + }) +} +/////////////////////////// +/// PKM SYNC ENDPOINTS /// +///////////////////////// +expressApp.post('/set-directory', function (req, res) { + return __awaiter(this, void 0, void 0, function () { + var directoryPath, pkmSyncType + return __generator(this, function (_a) { + if (!checkSyncKey(req.body.syncKey)) { + return [ + 2 /*return*/, + res.status(403).send('Only one app instance allowed'), + ] + } + try { + pkmSyncType = req.body.pkmSyncType + if (typeof pkmSyncType !== 'string') { + res.status(400).json({ error: 'Invalid pkmSyncType' }) + return [2 /*return*/] + } + directoryPath = pickDirectory(pkmSyncType) + if (directoryPath) { + store.set(pkmSyncType, directoryPath) + res.status(200).send(directoryPath) + return [2 /*return*/, path] + } else { + res.status(400).json({ error: 'No directory selected' }) + return [2 /*return*/, null] + } + } catch (error) { + log.error('Error in /set-directory:', error) + res.status(500).json({ + error: 'Internal server error', + }) + return [2 /*return*/, null] + } + return [2 /*return*/] + }) + }) +}) +expressApp.put('/update-file', function (req, res) { + return __awaiter(this, void 0, void 0, function () { + var body, pkmSyncType, pageTitle, fileContent, directoryPath, filePath + return __generator(this, function (_a) { + if (!checkSyncKey(req.body.syncKey)) { + return [ + 2 /*return*/, + res.status(403).send('Only one app instance allowed'), + ] + } + try { + body = req.body + pkmSyncType = body.pkmSyncType + pageTitle = body.pageTitle + fileContent = body.fileContent + if ( + typeof pkmSyncType !== 'string' || + typeof pageTitle !== 'string' || + typeof fileContent !== 'string' + ) { + res.status(400).json({ error: 'Invalid input' }) + return [2 /*return*/] + } + directoryPath = store.get(pkmSyncType) + if (!directoryPath) { + res.status(400).json({ + error: 'No directory found for given pkmSyncType', + }) + return [2 /*return*/] + } + filePath = '' + .concat(directoryPath, '/') + .concat(pageTitle, '.md') + fs.writeFileSync(filePath, fileContent) + res.status(200).send(filePath) + } catch (error) { + log.error('Error in /update-file:', error) + res.status(500).json({ error: 'Internal server error' }) + } + return [2 /*return*/] + }) + }) +}) +expressApp.post('/get-file-content', function (req, res) { + return __awaiter(this, void 0, void 0, function () { + var pkmSyncType, pageTitle, directoryPath, filePath, fileContent + return __generator(this, function (_a) { + if (!checkSyncKey(req.body.syncKey)) { + return [ + 2 /*return*/, + res.status(403).send('Only one app instance allowed'), + ] + } + try { + pkmSyncType = req.body.pkmSyncType + pageTitle = req.body.pageTitle + if ( + typeof pkmSyncType !== 'string' || + typeof pageTitle !== 'string' + ) { + res.status(400).json({ error: 'Invalid input' }) + return [2 /*return*/] + } + directoryPath = store.get(pkmSyncType) + if (!directoryPath) { + res.status(400).json({ + error: 'No directory found for given pkmSyncType', + }) + return [2 /*return*/] + } + filePath = directoryPath + '/' + pageTitle + '.md' + if (!fs.existsSync(filePath)) { + res.status(400).json({ error: 'File not found' }) + return [2 /*return*/] + } + fileContent = fs.readFileSync(filePath, 'utf-8') + res.status(200).send(fileContent) + } catch (error) { + log.error('Error in /get-file-content:', error) + res.status(500).json({ error: 'Internal server error' }) + } + return [2 /*return*/] + }) + }) +}) +/////////////////////////// +/// BACKUP ENDPOINTS /// +///////////////////////// +// Exposing Server Endpoints for BACKUPS +var backupPath = '' +expressApp.post('/status', function (req, res) { + console.log(' /status called') + if (!checkSyncKey(req.body.syncKey)) { + return res.status(403).send('Only one app instance allowed') + } + res.status(200).send('running') +}) +expressApp.get('/status', function (req, res) { + console.log(' /status called') + if (!checkSyncKey(req.body.syncKey)) { + return res.status(403).send('Only one app instance allowed') + } + res.status(200).send('running') +}) +expressApp.post('/pick-directory', function (req, res) { + if (!checkSyncKey(req.body.syncKey)) { + return res.status(403).send('Only one app instance allowed') + } + try { + var directoryPath = pickDirectory('backup') + if (directoryPath) { + res.json({ path: directoryPath }) + res.status(200).send(directoryPath) + } else { + res.status(400).json({ error: 'No directory selected' }) + } + } catch (error) { + log.error('Error in /pick-directory:', error) + res.status(500).json({ error: 'Internal server error' }) + } +}) +// get the backup folder location +expressApp.get('/backup/location', function (req, res) { + return __awaiter(void 0, void 0, void 0, function () { + var backupPath_1 + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (!!checkSyncKey(req.body.syncKey)) + return [3 /*break*/, 1] + res.status(403) + return [3 /*break*/, 4] + case 1: + backupPath_1 = store.get('backupPath') + if (!!backupPath_1) return [3 /*break*/, 3] + return [4 /*yield*/, pickDirectory('backup')] + case 2: + backupPath_1 = _a.sent() + _a.label = 3 + case 3: + store.set('backup', backupPath_1) + res.status(200).send(backupPath_1) + _a.label = 4 + case 4: + return [2 /*return*/] + } + }) + }) +}) +expressApp.get('/backup/start-change-location', function (req, res) { + return __awaiter(void 0, void 0, void 0, function () { + var _a, _b + return __generator(this, function (_c) { + switch (_c.label) { + case 0: + if (!checkSyncKey(req.body.syncKey)) { + return [ + 2 /*return*/, + res + .status(403) + .send('Only one app instance allowed'), + ] + } + _b = (_a = res.status(200)).send + return [4 /*yield*/, pickDirectory('backup')] + case 1: + _b.apply(_a, [_c.sent()]) + return [2 /*return*/] + } + }) + }) +}) +// listing files +expressApp.get('/backup/:collection', function (req, res) { + if (!checkSyncKey(req.body.syncKey)) { + return res.status(403).send('Only one app instance allowed') + } + var collection = req.params.collection + if (!isPathComponentValid(collection)) { + return res.status(400).send('Malformed collection parameter') + } + var dirpath = backupPath + '/backup/'.concat(collection) + try { + var filelist = fs.readdirSync(dirpath, 'utf-8') + filelist = filelist.filter(function (filename) { + // check if filename contains digits only to ignore system files like .DS_STORE + return /^\d+$/.test(filename) + }) + res.status(200).send(filelist.toString()) + } catch (err) { + if (err.code === 'ENOENT') { + res.status(404) + res.status(404).json({ error: 'Collection not found.' }) + } else throw err + } +}) +// getting files +expressApp.get('/backup/:collection/:timestamp', function (req, res) { + if (!checkSyncKey(req.body.syncKey)) { + return res.status(403).send('Only one app instance allowed') + } + var filename = req.params.timestamp + if (!isPathComponentValid(filename)) { + return res.status(400).send('Malformed timestamp parameter') + } + var collection = req.params.collection + if (!isPathComponentValid(collection)) { + return res.status(400).send('Malformed collection parameter') + } + var filepath = + backupPath + '/backup/'.concat(collection, '/') + filename + '.json' + try { + res.status(200).send(fs.readFileSync(filepath, 'utf-8')) + } catch (err) { + if (err.code === 'ENOENT') { + res.status(404) + req.body = 'File not found.' + } else throw err + } +}) +expressApp.put('/backup/:collection/:timestamp', function (req, res) { + return __awaiter(void 0, void 0, void 0, function () { + var filename, collection, dirpath, filepath + return __generator(this, function (_a) { + if (!checkSyncKey(req.body.syncKey)) { + return [ + 2 /*return*/, + res.status(403).send('Only one app instance allowed'), + ] + } + filename = req.params.timestamp + if (!isPathComponentValid(filename)) { + return [ + 2 /*return*/, + res.status(400).send('Malformed timestamp parameter'), + ] + } + collection = req.params.collection + if (!isPathComponentValid(collection)) { + return [ + 2 /*return*/, + res.status(400).send('Malformed collection parameter'), + ] + } + console.log('req.body', req.body, collection) + dirpath = req.body.backupPath + '/backup/'.concat(collection) + try { + fs.mkdirSync(dirpath, { recursive: true }) + } catch (err) { + log.error(err) + return [ + 2 /*return*/, + res.status(500).send('Failed to create directory.'), + ] + } + filepath = dirpath + '/'.concat(filename) + fs.writeFile(filepath, JSON.stringify(req.body), function (err) { + if (err) { + log.error(err) + return res.status(500).send('Failed to write to file.') + } + res.status(200).send('Data saved successfully.') + }) + return [2 /*return*/] + }) + }) +}) +//# sourceMappingURL=index.js.map diff --git a/build/index.js.map b/build/index.js.map new file mode 100644 index 0000000..d9c4f9d --- /dev/null +++ b/build/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,EAAE;AACF,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EACH,aAAa,EACb,gBAAgB,GACnB,MAAM,uCAAuC,CAAA;AAE9C,gCAAgC;AAChC,qBAAqB;AACrB,gCAAgC;AAEhC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAEhC,IAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACjD,IAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AAErC,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,QAAQ,EAAE,EACb,GAAG,EACH,aAAa,EACb,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,MAAM,EACN,YAAY,GACf,MAAM,UAAU,CAAA;AACjB,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,MAAM,MAAM,QAAQ,CAAA;AAC3B,OAAO,GAAG,MAAM,kBAAkB,CAAA;AAC1B,IAAA,WAAW,GAAK,GAAG,YAAR,CAAQ;AAE3B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,MAAM,gBAAgB,CAAA;AAClC,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,GAAG,MAAM,cAAc,CAAA;AAC9B,OAAO,KAAK,OAAO,MAAM,UAAU,CAAA;AACnC,OAAO,MAAM,MAAM,QAAQ,CAAA;AAC3B,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,QAAQ,MAAM,UAAU,CAAA;AAE/B,MAAM,CAAC,MAAM,EAAE,CAAA;AAEf,IAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAA;AACjC,IAAI,IAAI,GAAgB,IAAI,CAAA;AAC5B,IAAI,UAAyB,CAAA;AAC7B,IAAI,gBAAgB,GAAW,CAAC,CAAA;AAEhC,IAAI,YAAoB,CAAA;AACxB,IAAI,UAAU,EAAE;IACZ,YAAY,GAAG,KAAK,CAAA,CAAC,2DAA2D;CACnF;KAAM;IACH,YAAY,GAAG,KAAK,CAAA,CAAC,2DAA2D;CACnF;AACD,IAAI,UAAU,GAAoB,OAAO,EAAE,CAAA;AAC3C,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;AAErC,gCAAgC;AAChC,6BAA6B;AAC7B,gCAAgC;AAEhC,OAAO,QAAQ,MAAM,mBAAmB,CAAA;AAExC,IAAI,CAAC,UAAU,EAAE;IACb,QAAQ,CAAC,SAAS,CAAC;QACf,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,kBAAkB,CAAC;KACtE,CAAC,CAAA;CACL;AACD,IAAM,KAAK,GAAG,UAAU;IACpB,CAAC,CAAC,IAAI,KAAK,EAAE;IACb,CAAC,CAAC,IAAI,KAAK,CAAC;QACN,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,kBAAkB,CAAC;KACtE,CAAC,CAAA;AACR,IAAI,SAAS,GAAyB,IAAI,CAAA;AAC1C,IAAI,WAAW,GAAW,GAAG,CAAC,UAAU;IACpC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,eAAe,CAAC;IACrD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAA;AAE/C,IAAI,eAAe,GAAQ,IAAI,CAAA;AAC/B,IAAI,mBAAmB,GAAW,iBAAiB,CAAA;AACnD,IAAI,SAAS,GAAQ;IACjB,SAAS,EAAE,SAAS;IACpB,eAAe,EAAE,eAAe;CACnC,CAAA;AAED,gCAAgC;AAChC,2BAA2B;AAC3B,gCAAgC;AAEhC,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAA;AAC1E,IAAI,KAAK,GAAQ,IAAI,CAAA;AACrB,IAAI,eAAe,GAAiB,OAAO,CAAC,OAAO,EAAE,CAAA;AACrD,IAAI,cAAc,GAAQ,EAAE,CAAA;AAoB5B,gCAAgC;AAChC,4BAA4B;AAC5B,gCAAgC;AAEhC,QAAQ;AACR,IAAI,aAAkB,CAAA;AACtB,IAAI,gBAAqB,CAAA;AAEzB,sBAAsB;AACtB,IAAI,iBAAsB,CAAA;AAC1B,IAAI,kBAAuB,CAAA;AAC3B,IAAI,eAAoB,CAAA;AACxB,IAAI,wBAA6B,CAAA;AAEjC,gCAAgC;AAChC,gCAAgC;AAChC,gCAAgC;AAEhC,IAAI,GAAG,CAAC,IAAI,EAAE;IACV,sDAAsD;IACtD,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;CAClB;AAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAE;IAC1C,QAAQ,CAAC,GAAG,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAA;IAC7C,GAAG,CAAC,oBAAoB,CAAC;QACrB,WAAW,EAAE,IAAI;KACpB,CAAC,CAAA;CACL;AAED,8CAA8C;AAC9C,iBAAiB;AACjB,IAAI;AAEJ,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA,CAAC,+BAA+B;AAC/E,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA,CAAC,+BAA+B;AAErG,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,UAAC,GAAG;IAChC,GAAG,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAA;AACjD,CAAC,CAAC,CAAA;AAEF,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,UAAC,MAAM,EAAE,OAAO;IAC7C,GAAG,CAAC,KAAK,CAAC,yBAAyB,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;AACpE,CAAC,CAAC,CAAA;AAEF,sCAAsC;AACtC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAC,GAAG,EAAE,GAAG;IAC9B,GAAG,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAA;AAC3D,CAAC,CAAC,CAAA;AAEF,0CAA0C;AAC1C,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,UAAC,GAAG,EAAE,GAAG;IAC7B,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AACvB,CAAC,CAAC,CAAA;AAEF,qDAAqD;AACrD,IAAI,MAAM,GAAkB,IAAI,CAAA;AAEhC,SAAS,YAAY;IACjB,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;QAC9B,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,EAAE;YACrC,GAAG,CAAC,IAAI,CACJ,qDAA8C,YAAY,CAAE,CAC/D,CAAA;YACD,OAAO,CAAC,GAAG,CACP,qDAA8C,YAAY,CAAE,CAC/D,CAAA;QACL,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,gBAAgB,GAAG,kBAAkB,CAAA;QAC5C,MAAM,CAAC,OAAO,GAAG,CAAC,CAAA;QAElB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE;YACf,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAA;YAC3C,GAAG,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAA;QAC5C,CAAC,CAAC,CAAA;KACL;SAAM;QACH,OAAO,CAAC,GAAG,CACP,gEAAyD,YAAY,CAAE,CAC1E,CAAA;KACJ;AACL,CAAC;AAED,SAAS,YAAY,CAAC,QAAgB;IAClC,IAAI,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IAEpC,IAAI,CAAC,SAAS,EAAE;QACZ,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;QAC9B,OAAO,IAAI,CAAA;KACd;SAAM,IAAI,SAAS,KAAK,QAAQ,EAAE;QAC/B,OAAO,IAAI,CAAA;KACd;SAAM;QACH,OAAO,KAAK,CAAA;KACf;AACL,CAAC;AAED,SAAS,WAAW;IAChB,OAAO,IAAI,OAAO,CAAO,UAAC,OAAO,EAAE,MAAM;QACrC,IAAI,MAAM,EAAE;YACR,MAAM,CAAC,KAAK,CAAC,UAAC,GAAG;gBACb,IAAI,GAAG,EAAE;oBACL,GAAG,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAA;oBAChD,MAAM,CAAC,GAAG,CAAC,CAAA;iBACd;qBAAM;oBACH,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAA;oBACtC,MAAM,GAAG,IAAI,CAAA,CAAC,qBAAqB;oBACnC,OAAO,EAAE,CAAA;iBACZ;gBACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACnB,CAAC,CAAC,CAAA;SACL;aAAM;YACH,OAAO,EAAE,CAAA;SACZ;IACL,CAAC,CAAC,CAAA;AACN,CAAC;AAMD,SAAS,aAAa,CAAC,IAAY;IAC/B,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,CAAA;IAClC,IAAI;QACA,IAAI,WAAW,GAAG,MAAM,CAAC,kBAAkB,CAAC;YACxC,UAAU,EAAE,CAAC,eAAe,CAAC;SAChC,CAAC,CAAA;QACF,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YACvC,IAAI,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;YAEzB,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YAErB,OAAO,IAAI,CAAA,CAAC,sCAAsC;SACrD;KACJ;IAAC,OAAO,KAAK,EAAE;QACZ,IAAM,GAAG,GAAG,KAAoB,CAAA;QAChC,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;YACvB,MAAM,CAAC,YAAY,CACf,mBAAmB,EACnB,8HAA8H,CACjI,CAAA;SACJ;aAAM;YACH,MAAM,CAAC,YAAY,CACf,mBAAmB,EACnB,oEAAoE,CACvE,CAAA;SACJ;QACD,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;KACnB;IACD,OAAO,IAAI,CAAA;AACf,CAAC;AAED,SAAe,YAAY;;;YACvB,sBAAO,IAAI,OAAO,CAAO,UAAC,OAAO,EAAE,MAAM;oBACrC,UAAU,GAAG,IAAI,aAAa,CAAC;wBAC3B,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,GAAG;wBACV,cAAc,EAAE;4BACZ,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC;4BAC3C,eAAe,EAAE,IAAI;yBACxB;qBACJ,CAAC,CAAA;oBAEF,IAAI,SAAS,CAAA;oBACb,IAAI,UAAU,EAAE;wBACZ,SAAS,GAAG,IAAI,CAAC,IAAI,CACjB,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,EACzB,KAAK,EACL,cAAc,CACjB,CAAA;qBACJ;yBAAM;wBACH,SAAS,GAAG,IAAI,CAAC,IAAI,CACjB,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,EACzB,KAAK,EACL,cAAc,CACjB,CAAA;qBACJ;oBACD,wCAAwC;oBACxC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,UAAC,KAAK;wBACzB,KAAK,CAAC,cAAc,EAAE,CAAA;wBACtB,UAAU,CAAC,IAAI,EAAE,CAAA;oBACrB,CAAC,CAAC,CAAA;oBAEF,UAAU;yBACL,OAAO,CACJ,GAAG,CAAC,MAAM,CAAC;wBACP,QAAQ,EAAE,SAAS;wBACnB,QAAQ,EAAE,OAAO;wBACjB,OAAO,EAAE,IAAI;qBAChB,CAAC,CACL;yBACA,IAAI,CAAC;wBACF,OAAO,EAAE,CAAA,CAAC,gDAAgD;oBAC9D,CAAC,CAAC,CACD,OAAK,CAAA,CAAC,UAAC,KAAK;wBACT,MAAM,CAAC,KAAK,CAAC,CAAA,CAAC,yCAAyC;oBAC3D,CAAC,CAAC,CAAA;gBACV,CAAC,CAAC,EAAA;;;CACL;AAED,GAAG,CAAC,EAAE,CAAC,aAAa,EAAE;;;;;oBAClB,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,EAAE,CAAA;yBACX,MAAM,EAAN,wBAAM;oBACN,GAAG,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAA;oBAC5D,qBAAM,WAAW,EAAE,EAAA;;oBAAnB,SAAmB,CAAA;;;oBAEvB,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;;;;;CAC1B,CAAC,CAAA;AAEF,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE;;;;oBACP,qBAAM,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,EAAA;;qBAAnC,CAAA,CAAC,SAAkC,CAAC,KAAK,SAAS,CAAA,EAAlD,wBAAkD;gBAClD,qBAAM,YAAY,EAAE,EAAA;;gBAApB,SAAoB,CAAA;gBACpB,IAAI,YAAY,CAAC;oBACb,KAAK,EAAE,0BAA0B;oBACjC,IAAI,EAAE,8CAA8C;iBACvD,CAAC,CAAC,IAAI,EAAE,CAAA;gBACT,qBAAM,kBAAkB,EAAE,EAAA;;gBAA1B,SAA0B,CAAA;gBACN,qBAAM,gBAAgB,EAAE,EAAA;;gBAA5C,iBAAiB,GAAG,SAAwB,CAAA;gBAC5C,UAAU,CAAC,OAAO,CACd,GAAG,CAAC,MAAM,CAAC;oBACP,QAAQ,EAAE,IAAI,CAAC,IAAI,CACf,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,EACzB,KAAK,EACL,YAAY,CACf;oBACD,QAAQ,EAAE,OAAO;oBACjB,OAAO,EAAE,IAAI;iBAChB,CAAC,CACL,CAAA;gBACD,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE;oBACxC,IAAI,YAAY,CAAC;wBACb,KAAK,EAAE,0BAA0B;wBACjC,IAAI,EAAE,8CAA8C;qBACvD,CAAC,CAAC,IAAI,EAAE,CAAA;iBACZ;gBACD,qBAAM,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,EAAA;;gBAAxC,SAAwC,CAAA;;oBAExC,qBAAM,kBAAkB,EAAE,EAAA;;gBAA1B,SAA0B,CAAA;gBACN,qBAAM,gBAAgB,EAAE,EAAA;;gBAA5C,iBAAiB,GAAG,SAAwB,CAAA;;;gBAEhD,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE;oBACpD,sBAAM;iBACT;gBACD,uCAAuC;gBACvC,IAAI;oBACA,YAAY,EAAE,CAAA,CAAC,6BAA6B;oBAE5C,GAAG,CAAC,WAAW,EAAE,CAAA;oBACb,YAAY,GAAG,IAAI,CAAA;oBACvB,IAAI,UAAU,EAAE;wBACZ,YAAY,GAAG,IAAI,CAAC,IAAI,CACpB,OAAO,CAAC,aAAa,EACrB,uBAAuB,CAC1B,CAAA;qBACJ;yBAAM;wBACH,YAAY,GAAG,IAAI,CAAC,IAAI,CACpB,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,EACzB,KAAK,EACL,KAAK,EACL,mBAAmB,CACtB,CAAA;qBACJ;oBACG,QAAQ,GAAG,WAAW,CAAC,cAAc,CAAC,YAAY,CAAC,CAAA;oBAEvD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;wBAC9B,GAAG,CAAC,KAAK,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAA;wBAC/C,sBAAM;qBACT;oBAED,IAAI,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAA;oBACzB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;oBAEnB,cAAc,GAAG;wBACjB,KAAK,EAAE,mBAAmB;wBAC1B,KAAK,EAAE;4BACH,WAAW,CAAC,eAAe,EAAE,CAAA;wBACjC,CAAC;qBACJ,CAAA;oBAEG,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC;wBACrC;4BACI,KAAK,EAAE,8BAAuB,GAAG,CAAC,UAAU,EAAE,CAAE;4BAChD,OAAO,EAAE,KAAK;yBACjB;wBACD;4BACI,KAAK,EAAE,kBAAkB;4BACzB,IAAI,EAAE,UAAU;4BAChB,OAAO,EAAE,GAAG,CAAC,oBAAoB,EAAE,CAAC,WAAW;4BAC/C,KAAK,EAAE,UAAU,IAAI;gCACjB,IAAI,cAAc,GAAG,IAAI,CAAC,OAAO,CAAA;gCACjC,GAAG,CAAC,oBAAoB,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC,CAAA;4BAC7D,CAAC;yBACJ;wBACD;4BACI,KAAK,EAAE,kBAAkB;4BACzB,KAAK,EAAE;gCACH,KAAK,CAAC,QAAM,CAAA,CAAC,SAAS,CAAC,CAAA;4BAC3B,CAAC;yBACJ;wBACD;4BACI,KAAK,EAAE,kBAAkB;4BACzB,KAAK,EAAE;;;;oDACH,qBAAM,cAAc,EAAE,EAAA;;gDAAtB,SAAsB,CAAA;;;;;6BACzB;yBACJ;wBACD,cAAc;wBACd;4BACI,KAAK,EAAE,MAAM;4BACb,KAAK,EAAE;gCACH,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;gCAClC,GAAG,CAAC,IAAI,EAAE,CAAA;gCACV,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;4BAC/B,CAAC;yBACJ;qBACJ,CAAC,CAAA;oBAEF,mCAAmC;oBACnC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;oBAEhC,sCAAsC;oBACtC,IAAI,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAA;oBAC1C,IAAI;wBACA,WAAW;6BACN,eAAe,EAAE;6BACjB,IAAI,CAAC,cAAa,CAAC,CAAC,CACpB,OAAK,CAAA,CAAC,UAAU,GAAG;4BAChB,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;wBACzB,CAAC,CAAC,CAAA;wBACN,WAAW,CAAC,EAAE,CAAC,kBAAkB,EAAE;;;oCAC/B,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;oCAC5B,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,CAAA;;;;yBACzC,CAAC,CAAA;wBAEF,WAAW,CAAC,EAAE,CAAC,mBAAmB,EAAE;4BAChC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;4BAC7B,WAAW,CAAC,cAAc,EAAE,CAAA;wBAChC,CAAC,CAAC,CAAA;qBACL;oBAAC,OAAO,KAAK,EAAE;wBACZ,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;qBAC9B;iBACJ;gBAAC,OAAO,KAAK,EAAE;oBACZ,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;oBACzB,GAAG,CAAC,IAAI,EAAE,CAAA;iBACb;;;;KACJ,CAAC,CAAA;AAEF,SAAe,yBAAyB,CAAC,UAAkB;;;;wBAChD,qBAAM,kBAAkB,CAAC,UAAU,EAAE;wBACxC,OAAO,EAAE,MAAM;wBACf,SAAS,EAAE,IAAI;qBAClB,CAAC,EAAA;wBAHF,sBAAO,SAGL,EAAA;;;;CACL;AAED,SAAe,kBAAkB;;;;;;;oBACzB,MAAM,GAAG,IAAI,CAAA;oBAEjB,IAAI,UAAU,EAAE;wBACZ,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE;4BAC5D,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,EAAE;gCACrD,SAAS,EAAE,IAAI;6BAClB,CAAC,CAAA;yBACL;wBACD,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,mBAAmB,CAAC,CAAA;wBAChE,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAA;wBAC1C,EAAE,CAAC,MAAM,CACL,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EACvB,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,EACrC,UAAO,GAAG;;;gCACN,IAAI,GAAG,EAAE;oCACL,GAAG,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAA;iCAChD;qCAAM;oCACH,GAAG,CAAC,GAAG,CACH,sDAAsD,CACzD,CAAA;oCACK,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAA;oCACtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;wCACrB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;qCACzC;iCACJ;;;6BACJ,CACJ,CAAA;qBACJ;yBAAM;wBACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC,EAAE;4BAChE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,kBAAkB,CAAC,EAAE;gCACzD,SAAS,EAAE,IAAI;6BAClB,CAAC,CAAA;yBACL;wBACD,MAAM,GAAG,kCAAkC,CAAA;qBAC9C;oBACW,qBAAM,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;wBAE5C,gBAAgB;sBAF4B;;oBAA5C,SAAS,GAAG,SAAgC,CAAA;oBAGxC,qBAAqB,GAAG,6KAKvB,CAAA;oBACL,qBAAM,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC;wBAE1C,4BAA4B;sBAFc;;oBAA1C,SAA0C,CAAA;oBAItC,mBAAmB,GAAG,ySASzB,CAAA;oBACD,qBAAM,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC;wBAExC,+BAA+B;sBAFS;;oBAAxC,SAAwC,CAAA;oBAIpC,sBAAsB,GAAG,iRAQxB,CAAA;oBACL,qBAAM,SAAS,CAAC,GAAG,CAAC,sBAAsB,CAAC;wBAE3C,gCAAgC;wBAEhC,6DAA6D;wBAC7D,kCAAkC;wBAClC,uBAAuB;wBACvB,8BAA8B;wBAC9B,4BAA4B;wBAC5B,mCAAmC;wBACnC,+BAA+B;wBAC/B,oCAAoC;wBACpC,4BAA4B;wBAC5B,8BAA8B;wBAC9B,YAAY;wBACZ,YAAY;wBACZ,sCAAsC;wBACtC,wGAAwG;wBACxG,wCAAwC;wBAExC,iGAAiG;wBACjG,+CAA+C;wBAE/C,uCAAuC;wBAEvC,4EAA4E;wBAC5E,8BAA8B;wBAC9B,mBAAmB;wBACnB,kBAAkB;wBAClB,0BAA0B;wBAC1B,QAAQ;wBACR,IAAI;wBACJ,uHAAuH;wBACvH,+CAA+C;wBAE/C,0CAA0C;wBAE1C,+BAA+B;wBAC/B,2EAA2E;wBAC3E,8BAA8B;wBAC9B,mBAAmB;wBACnB,0BAA0B;wBAC1B,wBAAwB;wBACxB,sBAAsB;wBACtB,gCAAgC;wBAChC,2BAA2B;wBAC3B,wBAAwB;wBACxB,0BAA0B;wBAC1B,QAAQ;wBACR,IAAI;wBAEJ,2CAA2C;wBAC3C,sHAAsH;wBACtH,kDAAkD;wBAElD,2IAA2I;wBAC3I,yDAAyD;sBAxDd;;oBAA3C,SAA2C,CAAA;oBAE3C,gCAAgC;oBAEhC,6DAA6D;oBAC7D,kCAAkC;oBAClC,uBAAuB;oBACvB,8BAA8B;oBAC9B,4BAA4B;oBAC5B,mCAAmC;oBACnC,+BAA+B;oBAC/B,oCAAoC;oBACpC,4BAA4B;oBAC5B,8BAA8B;oBAC9B,YAAY;oBACZ,YAAY;oBACZ,sCAAsC;oBACtC,wGAAwG;oBACxG,wCAAwC;oBAExC,iGAAiG;oBACjG,+CAA+C;oBAE/C,uCAAuC;oBAEvC,4EAA4E;oBAC5E,8BAA8B;oBAC9B,mBAAmB;oBACnB,kBAAkB;oBAClB,0BAA0B;oBAC1B,QAAQ;oBACR,IAAI;oBACJ,uHAAuH;oBACvH,+CAA+C;oBAE/C,0CAA0C;oBAE1C,+BAA+B;oBAC/B,2EAA2E;oBAC3E,8BAA8B;oBAC9B,mBAAmB;oBACnB,0BAA0B;oBAC1B,wBAAwB;oBACxB,sBAAsB;oBACtB,gCAAgC;oBAChC,2BAA2B;oBAC3B,wBAAwB;oBACxB,0BAA0B;oBAC1B,QAAQ;oBACR,IAAI;oBAEJ,2CAA2C;oBAC3C,sHAAsH;oBACtH,kDAAkD;oBAElD,2IAA2I;oBAC3I,yDAAyD;oBAEzD,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAA;oBAClC,qBAAM,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,EAAA;;oBAA7C,QAAQ,GAAG,SAAkC;oBAE3C,kBAAkB,GAAG,UAAC,IAAY;wBACpC,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;oBAClC,CAAC,CAAA;oBACG,qBAAqB,GAAG;wBACxB,OAAO,EAAE,MAAM;wBACf,SAAS,EAAE,MAAM;wBACjB,iBAAiB,EAAE,MAAM;wBACzB,WAAW,EAAE,CAAC;wBACd,SAAS,EAAE,MAAM;wBACjB,WAAW,EAAE,MAAM;wBACnB,WAAW,EAAE,MAAM;wBACnB,QAAQ,EAAE,MAAM;wBAChB,MAAM,EAAE,kBAAkB,CAAC,GAAG,CAAC;qBAClC,CAAA;;;;;;;oBAIyB,qBAAM,QAAQ,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAA;;oBAA/D,eAAe,GAAG,SAA6C,CAAA;;;;yBAE3D,CAAA,eAAe,IAAI,IAAI,CAAA,EAAvB,yBAAuB;oBACL,qBAAM,QAAQ,CAAC,WAAW,CACxC,mBAAmB,EACnB,CAAC,qBAAqB,CAAC,CAC1B,EAAA;;oBAHD,eAAe,GAAG,SAGjB,CAAA;;;yBAIJ,qBAAM,eAAe,CAAC,SAAS,EAAE,EAAA;;oBAAtC,IAAI,CAAC,SAAiC,CAAC,KAAK,CAAC,EAAE;wBAC3C,eAAe,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAA;qBAC/C;;;;oBAED,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,OAAK,CAAC,CAAA;;;oBAG/B,SAAS,GAAG;wBACR,SAAS,EAAE,SAAS;wBACpB,eAAe,EAAE,eAAe;qBACnC,CAAA;oBACD,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,WAAW,CAAC,CAAA;oBACrD,sBAAM;;;;CACT;AAED,SAAe,4BAA4B;;;;;wBAEC,qBAAM,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,GAAG,CACxD,mCAAmC,EACnC,UAAU,GAAQ,EAAE,IAAY;wBAC5B,IAAI,GAAG,EAAE;4BACL,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;yBAClC;wBACD,yCAAyC;wBACzC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;oBACrB,CAAC,CACJ,CAAA,EAAA;;oBATG,WAAW,GAAyB,SASvC;oBAEG,OAAO,GACP,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,GAAG,CAAC,UAAC,MAAc;wBAC5B,IAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;wBAC1D,IAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;wBACrD,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;4BAC/B,MAAM,CAAC,iBAAiB,GAAG,UAAU,CAAA;yBACxC;6BAAM,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;4BACpC,MAAM,CAAC,iBAAiB,GAAG,QAAQ,CAAA;4BACnC,MAAM,CAAC,IAAI,GAAG,YAAY,GAAG,QAAQ,CAAA;yBACxC;6BAAM;4BACH,MAAM,CAAC,iBAAiB,GAAG,OAAO,CAAA;yBACrC;wBACD,OAAO,MAAM,CAAA;oBACjB,CAAC,CAAC,KAAI,EAAE,CAAA;oBACZ,IAAI,WAAW,EAAE;wBACb,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;qBACpC;;;;;CACJ;AAED,SAAe,gBAAgB;;;;;wBACH,qBAAM,MAAM,CAAC,sBAAsB,CAAC,EAAA;;oBAAxD,KAAoB,SAAoC,EAAtD,QAAQ,cAAA,EAAE,GAAG,SAAA;oBACnB,aAAa,GAAG,QAAQ,CAAA;oBACxB,gBAAgB,GAAG,GAAG,CAAA;oBACtB,gBAAgB,CAAC,gBAAgB,GAAG,IAAI,CAAA;oBAIxC,IAAI,UAAU,EAAE;wBACZ,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAA;qBAC3D;yBAAM;wBACH,SAAS,GAAG,4BAA4B,CAAA;qBAC3C;oBAED,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;wBAC3B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;qBAC/C;oBAEK,aAAa,GAAG,IAAI,CAAC,IAAI,CAC3B,SAAS,EACT,kCAAkC,CACrC,CAAA;yBAEG,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAA7B,wBAA6B;oBACvB,QAAQ,GACV,wFAAwF,CAAA;oBAEtF,WAAS,EAAE,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAA;oBAEjC,qBAAM,KAAK,CAAC;4BACzB,GAAG,EAAE,QAAQ;4BACb,MAAM,EAAE,KAAK;4BACb,YAAY,EAAE,QAAQ;yBACzB,CAAC,EAAA;;oBAJI,aAAW,SAIf;oBAEI,gBAAc,UAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;oBAEtD,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;oBAChC,UAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAM,CAAC,CAAA;oBAE1B,IAAI,OAAO,CAAO,UAAC,OAAO,EAAE,MAAM;wBAC9B,IAAI,eAAe,GAAG,CAAC,CAAA;wBACvB,UAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,UAAC,KAAa;4BACnC,eAAe,IAAI,KAAK,CAAC,MAAM,CAAA;4BAC/B,gBAAgB,GAAG,IAAI,CAAC,KAAK,CACzB,CAAC,eAAe,GAAG,aAAW,CAAC,GAAG,GAAG,CACxC,CAAA;4BAED,UAAU,CAAC,WAAW,CAAC,IAAI,CACvB,mBAAmB,EACnB,UAAG,gBAAgB,MAAG,CACzB,CAAA;wBACL,CAAC,CAAC,CAAA;wBAEF,UAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;4BACpB,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;4BAChC,OAAO,EAAE,CAAA;wBACb,CAAC,CAAC,CAAA;wBAEF,QAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;oBAC9B,CAAC,CAAC,CAAA;;;oBAGN,gBAAgB,CAAC,cAAc,GAAG,aAAa,CAAA;oBAC/C,OAAO,CAAC,GAAG,CAAC,4BAAqB,aAAa,CAAE,CAAC,CAAA;oBAE5B,qBAAM,aAAa,CACpC,oBAAoB,EACpB,0BAA0B,CAC7B,EAAA;;oBAHD,kBAAkB,GAAG,SAGpB,CAAA;oBAED,iBAAiB,GAAG,yBAAyB,CAAA;oBAE7C,4GAA4G;oBAC5G,GAAG;oBAEH,8GAA8G;oBAC9G,iDAAiD;oBACjD,oCAAoC;oBACpC,oEAAoE;oBAEpE,yCAAyC;oBACzC,4BAA4B;oBAC5B,kDAAkD;oBAClD,KAAK;oBAEL,4DAA4D;oBAE5D,eAAe;oBACf,oCAAoC;oBACpC,2eAA2e;oBAC3e,MAAM;oBACN,KAAK;oBAEL,4BAA4B;oBAC5B,ilBAAilB;oBACjlB,KAAK;oBAEL,sCAAsC;oBAEtC,sBAAO,iBAAiB,EAAA;;;;CAC3B;AACD,yDAAyD;AACzD,iDAAiD;AACjD,IAAI;AAEJ,SAAS,oBAAoB,CAAC,SAAiB;IAC3C,IACI,OAAO,SAAS,KAAK,QAAQ;QAC7B,CAAC,SAAS,CAAC,KAAK,CAAC,oBAAoB,CAAC,EACxC;QACE,OAAO,KAAK,CAAA;KACf;SAAM;QACH,OAAO,IAAI,CAAA;KACd;AACL,CAAC;AACD,2BAA2B;AAC3B,6BAA6B;AAC7B,yBAAyB;AAEzB,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,UAAgB,GAAG,EAAE,GAAG;;;;;;oBAChD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;wBACjC,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,EAAA;qBAC/D;oBACG,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAA;oBAC1B,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,CAAA;oBAC9B,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAA;oBAC5B,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,CAAA;oBAClC,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,CAAA;oBAClC,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,CAAA;oBAC9B,iBAAiB,GAAG,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAA;oBAC9C,YAAY,GAAG,EAAE,CAAA;;;;oBAGjB,qBAAM,SAAS,CAAC,SAAS,CAAC,GAAG,CACzB,2DAA2D,EAC3D;4BACI,OAAO;4BACP,SAAS;4BACT,QAAQ;4BACR,WAAW;4BACX,WAAW;4BACX,iBAAiB;4BACjB,SAAS;4BACT,YAAY;yBACf,CACJ,EAAA;;oBAZD,SAYC,CAAA;oBAED,qBAAM,aAAa,CAAC;4BAChB,OAAO,SAAA;4BACP,SAAS,WAAA;4BACT,QAAQ,UAAA;4BACR,WAAW,aAAA;4BACX,WAAW,aAAA;4BACX,iBAAiB,mBAAA;4BACjB,SAAS,WAAA;4BACT,iBAAiB,mBAAA;4BACjB,SAAS,WAAA;4BACT,wBAAwB,0BAAA;yBAC3B,CAAC,EAAA;;oBAXF,SAWE,CAAA;oBACF,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAA;;;oBAEjC,GAAG,CAAC,KAAK,CAAC,0BAA0B,EAAE,OAAK,CAAC,CAAA;oBAC5C,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,EAAA;;;;;CAEtE,CAAC,CAAA;AAEF,UAAU,CAAC,GAAG,CAAC,iBAAiB,EAAE,UAAgB,GAAG,EAAE,GAAG;;;;;;;oBACtD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;wBACjC,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,EAAA;qBAC/D;oBACG,OAAO,GAAG,CAAA,MAAA,GAAG,CAAC,IAAI,0CAAE,OAAO,KAAI,EAAE,CAAA;oBACjC,SAAS,GAAG,CAAA,MAAA,GAAG,CAAC,IAAI,0CAAE,SAAS,KAAI,EAAE,CAAA;oBACrC,QAAQ,GAAG,CAAA,MAAA,GAAG,CAAC,IAAI,0CAAE,QAAQ,KAAI,EAAE,CAAA;oBACnC,WAAW,GAAG,CAAA,MAAA,GAAG,CAAC,IAAI,0CAAE,WAAW,KAAI,EAAE,CAAA;oBACzC,WAAW,GAAG,CAAA,MAAA,GAAG,CAAC,IAAI,0CAAE,WAAW,KAAI,EAAE,CAAA;oBACzC,SAAS,GAAG,CAAA,MAAA,GAAG,CAAC,IAAI,0CAAE,SAAS,KAAI,EAAE,CAAA;oBACrC,iBAAiB,GAAG,CAAA,MAAA,GAAG,CAAC,IAAI,0CAAE,iBAAiB,KAAI,EAAE,CAAA;;;;oBAGrD,qBAAM,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,GAAG,CAChB,0DAA0D,EAC1D;4BACI,OAAO;4BACP,SAAS;4BACT,QAAQ;4BACR,WAAW;4BACX,WAAW;4BACX,iBAAiB;4BACjB,SAAS;yBACZ,CACJ,CAAA,EAAA;;oBAXD,SAWC,CAAA;oBAED,qBAAM,aAAa,CAAC;4BAChB,OAAO,SAAA;4BACP,SAAS,WAAA;4BACT,QAAQ,UAAA;4BACR,WAAW,aAAA;4BACX,WAAW,aAAA;4BACX,iBAAiB,mBAAA;4BACjB,SAAS,WAAA;4BACT,iBAAiB,mBAAA;4BACjB,SAAS,WAAA;4BACT,wBAAwB,0BAAA;yBAC3B,CAAC,EAAA;;oBAXF,SAWE,CAAA;oBACF,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAA;;;oBAEjC,GAAG,CAAC,KAAK,CAAC,4BAA4B,EAAE,OAAK,CAAC,CAAA;oBAC9C,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,EAAA;;;;;CAGtE,CAAC,CAAA;AAEF,UAAU,CAAC,IAAI,CAAC,cAAc,EAAE,UAAgB,GAAG,EAAE,GAAG;;;;;oBACpD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;wBACjC,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,EAAA;qBAC/D;oBACD,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAA;oBACvC,qBAAM,WAAW,CACpB,GAAG,EACH,GAAG,EACH,iBAAiB,EACjB,SAAS,EACT,wBAAwB,CAC3B,EAAA;wBAND,sBAAO,SAMN,EAAA;;;;CACJ,CAAC,CAAA;AACF,UAAU,CAAC,IAAI,CAAC,oBAAoB,EAAE,UAAgB,GAAG,EAAE,GAAG;;;;;;oBAC1D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;wBACjC,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,EAAA;qBAC/D;;;;oBAEuB,qBAAM,SAAS,CAAC,SAAS,CAAC,GAAG,CAC7C,+BAA+B,CAClC;wBAED,2BAA2B;wBAC3B,eAAe;wBACf,0BAA0B;wBAC1B,aAAa;wBACb,MAAM;wBAEN,+BAA+B;sBAR9B;;oBAFK,WAAW,GAAG,SAEnB;oBASK,iBAAiB,GAAG,WAAW,CAAC,GAAG,CAAC,UAAC,MAAc,IAAK,OAAA,CAAC;wBAC3D,OAAO,EAAE,MAAM,CAAC,OAAO;wBACvB,SAAS,EAAE,MAAM,CAAC,SAAS;wBAC3B,WAAW,EAAE,MAAM,CAAC,WAAW;wBAC/B,IAAI,EAAE,MAAM,CAAC,IAAI;qBACpB,CAAC,EAL4D,CAK5D,CAAC,CAAA;oBAEH,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAA;oBAC7C,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAA;;;oBAE9C,OAAO,CAAC,GAAG,CAAC,kDAAkD,EAAE,OAAK,CAAC,CAAA;oBACtE,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAK,EAAE,CAAC,EAAA;;;;;CAEpD,CAAC,CAAA;AAQF,IAAI,eAAe,GAAiB,EAAE,CAAA;AAEtC,UAAU,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAgB,GAAG,EAAE,GAAG;;;;;;;oBACxD,GAAG,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAA;oBACjC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;wBACjC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;wBACjC,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,EAAA;qBAC/D;oBACK,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,CAAA;oBACxC,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;oBACpC,eAAe,mCAAO,eAAe,SAAK,WAAW,OAAC,CAAA;oBAEtD,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAA;;;;wCAGlC,CAAC;;;;;oCACA,OAAO,GAAG,MAAA,WAAW,CAAC,CAAC,CAAC,0CAAE,OAAO,CAAA;oCACnC,SAAS,GAAG,MAAA,WAAW,CAAC,CAAC,CAAC,0CAAE,SAAS,CAAA;oCACnC,IAAI,GAAG,MAAA,WAAW,CAAC,CAAC,CAAC,0CAAE,IAAI,CAAA;yCAE7B,CAAC,SAAS,EAAV,wBAAU;oCACO,qBAAM,KAAK,CAAC,OAAO,CAAC,EAAA;;oCAA/B,QAAQ,GAAG,SAAoB;oCACxB,qBAAM,QAAQ,CAAC,IAAI,EAAE,EAAA;;oCAA5B,IAAI,GAAG,SAAqB;oCAC5B,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,CAAA;oCAC9B,eAAkB,IAAI,CAAA;oCAE1B,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,EAAE,MAAM;wCAC1C,IAAI,GAAG,EAAE;4CACL,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAA;yCACnD;6CAAM;4CACH,YAAU,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;yCACrC;oCACL,CAAC,CAAC,CAAA;oCAEF,IAAI,YAAU,EAAE;wCACZ,SAAS,GAAG,MAAA,YAAU,aAAV,YAAU,uBAAV,YAAU,CAAE,KAAK,CAAC,CAAC,CAAC,mCAAI,EAAE,CAAA;qCACzC;;;oCAGL,IAAI,OAAO,IAAI,SAAS,EAAE;wCACtB,IAAI;4CACM,GAAG,GAAG,4DAA4D,CAAA;4CACxE,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,GAAG,CAAC,GAAG,EAAE;gDAChB,OAAO;gDACP,SAAS;gDACT,IAAI,IAAI,IAAI;gDACZ,IAAI;6CACP,CAAC,CAAA;4CACF,GAAG,CAAC,GAAG,CAAC,qBAAc,OAAO,CAAE,CAAC,CAAA;yCACnC;wCAAC,OAAO,KAAK,EAAE;4CACZ,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;;yCAEjC;qCACJ;;;;;oBAtCI,CAAC,GAAG,CAAC;;;yBAAE,CAAA,CAAC,GAAG,WAAW,CAAC,MAAM,CAAA;kDAA7B,CAAC;;;;;;;oBAA8B,CAAC,EAAE,CAAA;;;0BAyCH,EAAf,mCAAe;;;yBAAf,CAAA,6BAAe,CAAA;oBAA7B,UAAU;oBACT,OAAO,GAAsB,UAAU,QAAhC,EAAE,SAAS,GAAW,UAAU,UAArB,EAAE,IAAI,GAAK,UAAU,KAAf,CAAe;oBAE/C,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAA;oBAEtC,qBAAM,aAAa,CACf,OAAO,EACP,SAAS,EACT,iBAAiB,EACjB,SAAS,EACT,IAAI,EACJ,wBAAwB,CAC3B;wBAED,iBAAiB;wBACjB,uCAAuC;wBACvC,IAAI;sBAJH;;oBAPD,SAOC,CAAA;;;oBAZoB,IAAe,CAAA;;wBAmBxC,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAA;;;oBAEjC,GAAG,CAAC,KAAK,CAAC,4CAA4C,EAAE,OAAK,CAAC,CAAA;oBAC9D,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAK,EAAE,CAAC,EAAA;;;;;CAEpD,CAAC,CAAA;AAEF,UAAU,CAAC,GAAG,CAAC,sBAAsB,EAAE,UAAgB,GAAG,EAAE,GAAG;;;;;;oBAC3D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;wBACjC,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,EAAA;qBAC/D;;;;oBAIsB,qBAAM,gBAAgB,CAAC,SAAS,CAAC,EAAA;;oBAA9C,UAAU,GAAG,SAAiC;oBACpD,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAA;;;oBAEvC,GAAG,CAAC,KAAK,CAAC,uBAAgB,GAAG,CAAC,IAAI,CAAC,OAAO,sBAAmB,EAAE,OAAK,CAAC,CAAA;oBACrE,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAK,EAAE,CAAC,EAAA;;;;;CAEpD,CAAC,CAAA;AACF,UAAU,CAAC,GAAG,CAAC,qBAAqB,EAAE,UAAgB,GAAG,EAAE,GAAG;;;YAC1D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;gBACjC,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,EAAA;aAC/D;;;;CAEJ,CAAC,CAAA;AAEF,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,UAAgB,GAAG,EAAE,GAAG;;;;;;oBAClD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;wBACjC,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,EAAA;qBACxD;oBAEK,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAA;oBAC1B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;wBACtB,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAA;qBAChD;;;;oBAGG,qBAAM,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,EAAA;;oBAA9B,SAA8B,CAAA;oBAC9B,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,EAAA;;;oBAEvD,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAA;;;;;CAExD,CAAC,CAAA;AAEF,UAAU,CAAC,IAAI,CAAC,oBAAoB,EAAE,UAAgB,GAAG,EAAE,GAAG;;;;;;oBAC1D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;wBACjC,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,EAAA;qBACxD;oBACe,qBAAM,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,GAAG,CAChC,mCAAmC,EACnC,UAAU,GAAQ,EAAE,IAAY;4BAC5B,IAAI,GAAG,EAAE;gCACL,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;6BAClC;4BACD,yCAAyC;4BACzC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;wBACrB,CAAC,CACJ,CAAA,EAAA;;oBATK,OAAO,GAAG,SASf;oBAED,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;oBAE/B,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAA;;;;CACvC,CAAC,CAAA;AAEF,UAAU,CAAC,IAAI,CAAC,mBAAmB,EAAE,UAAgB,GAAG,EAAE,GAAG;;;;;;oBACzD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;wBACjC,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,EAAA;qBACxD;oBACc,qBAAM,cAAc,EAAE,EAAA;;oBAA/B,MAAM,GAAG,SAAsB;oBAErC,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAA;;;;CACtC,CAAC,CAAA;AAEF,6GAA6G;AAE7G,UAAU,CAAC,IAAI,CAAC,yBAAyB,EAAE,UAAgB,GAAG,EAAE,GAAG;;;;;;oBAC/D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;wBACjC,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,EAAA;qBACxD;oBACK,IAAI,GAAG,GAAG,CAAC,IAAI,CAAA;oBACf,EAAE,GAAG,IAAI,CAAC,EAAE,CAAA;oBACwB,qBAAM,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,GAAG,CAC1D,mDAAmD,EACnD,CAAC,EAAE,CAAC,CACP,CAAA,EAAA;;oBAHG,gBAAgB,GAAqB,CAAC,SAGzC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;oBACd,aAAa,GAAG,cAAc,CAAC,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,IAAI,CAAC,CAAA;oBAE1D,aAAa,CAAC,KAAK,EAAE,CAAA;oBAErB,qBAAM,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,GAAG,CAAC,8CAA8C,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA,EAAA;;oBAA1E,SAA0E,CAAA;oBAE1E,OAAO,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;oBAC5C,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAA;;;;CACjD,CAAC,CAAA;AAEF,SAAe,cAAc;;;;;;oBAEnB,SAAS,GAAG,IAAI,aAAa,CAAC;wBAChC,MAAM,EAAE,EAAE;wBACV,KAAK,EAAE,EAAE;wBACT,WAAW,EAAE,IAAI;wBACjB,KAAK,EAAE,KAAK;qBACf,CAAC,CAAA;oBACF,SAAS,CAAC,KAAK,EAAE,CAAA;oBACjB,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,UAAC,KAAK;wBACxB,KAAK,CAAC,cAAc,EAAE,CAAA;wBACtB,SAAS,CAAC,IAAI,EAAE,CAAA;oBACpB,CAAC,CAAC,CAAA;oBAGoB,qBAAM,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE;4BACzD,UAAU,EAAE,CAAC,eAAe,CAAC;yBAChC,CAAC,EAAA;;oBAFI,aAAa,GAAG,SAEpB;oBAEE,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;oBAC1C,SAAS,CAAC,KAAK,EAAE,CAAA;oBAEjB,IAAI,CAAC,SAAS,EAAE;wBACZ,sBAAO,KAAK,EAAA;qBACf;oBAGG,iBAAiB,GAAoC,OAAO,CAAA;oBAC1D,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;oBAClD,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;oBAE/C,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAA;oBAC/C,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;wBAC/B,iBAAiB,GAAG,UAAU,CAAA;qBACjC;yBAAM,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;wBACpC,iBAAiB,GAAG,QAAQ,CAAA;wBAC5B,SAAS,GAAG,YAAY,GAAG,QAAQ,CAAA;qBACtC;oBAGG,OAAO,GAAyB,EAAE,CAAA;oBAC5B,qBAAM,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,GAAG,CAC1B,mCAAmC,EACnC,UAAU,GAAQ,EAAE,IAAY;4BAC5B,IAAI,GAAG,EAAE;gCACL,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;6BAClC;4BACD,yCAAyC;4BACzC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;wBACrB,CAAC,CACJ,CAAA,EAAA;;oBATD,OAAO,GAAG,SAST,CAAA;oBAEG,WAAW,GAAa,OAAO;wBAC/B,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,MAAc,IAAK,OAAA,MAAM,CAAC,IAAI,EAAX,CAAW,CAAC;wBAC9C,CAAC,CAAC,EAAE,CAAA;oBACR,IAAI,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;wBACjC,sBAAM;qBACT;oBAIY,qBAAM,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,GAAG,CAC7B,6DAA6D,EAC7D,CAAC,SAAS,EAAE,iBAAiB,EAAE,EAAE,CAAC,CACrC,CAAA,EAAA;;oBAHG,MAAM,GAAG,SAGZ;oBACG,EAAE,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAA;oBAEvB,IAAI;wBACM,MAAM,GAAG;4BACX,IAAI,EAAE,SAAS;4BACf,iBAAiB,EAAE,iBAAiB;4BACpC,EAAE,EAAE,EAAE;yBACT,CAAA;wBACD,aAAa,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAA;qBACrC;oBAAC,OAAO,KAAK,EAAE;wBACZ,GAAG,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAA;qBAClD;oBAEK,eAAe,GAAG;wBACpB,IAAI,EAAE,SAAS;wBACf,iBAAiB,EAAE,iBAAiB;wBACpC,EAAE,EAAE,EAAE;qBACT,CAAA;oBAED,sBAAO,eAAe,EAAA;;;;CACzB;AAED,SAAe,aAAa,CAAC,OAAiB,EAAE,SAAc;;;;;;yBACtD,CAAC,KAAK,EAAN,wBAAM;oBACE,qBAAM,MAAM,CAAC,YAAY,CAAC,EAAA;;oBAAlC,KAAK,GAAG,SAA0B,CAAA;;;oBAGhC,mBAAmB,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAA;oBACnD,iBAAiB,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAA;oBAErD,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,mBAAmB,CAAC,CAAA;oBAEnD,kBAAkB,GAAG,KAAK,CAAA;oBAC9B,oEAAoE;oBACpE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,IAAG,CAAC;yBACf,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,CAAC,UAAC,MAAM;4BACpB,IAAI,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;gCACtC,OAAO,EAAE;oCACL,eAAe;oCACf,mBAA6B;oCAC7B,iBAA2B;iCAC9B;gCACD,UAAU,EAAE,IAAI;6BACnB,CAAC,CAAA;4BAEF,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAA;4BAErC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAgB,IAAI,EAAE,KAAK;;;;;;;gDAErC,UAAU,GAAG,CAAC,CAAA;gDACZ,UAAU,GAAG,EAAE,CAAA;gDAEf,eAAe,GAAG;oDACpB,OAAO,IAAI,OAAO,CAAO,UAAC,OAAO,EAAE,MAAM;wDACrC,IAAI,CAAC,kBAAkB,EAAE;4DACrB,OAAO,EAAE,CAAA;yDACZ;6DAAM,IAAI,UAAU,IAAI,UAAU,EAAE;4DACjC,MAAM,CAAC,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAA;yDAC3C;6DAAM;4DACH,UAAU,CAAC;gEACP,UAAU,EAAE,CAAA;gEACZ,eAAe,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAK,CAAA,CAAC,MAAM,CAAC,CAAA;4DACjD,CAAC,EAAE,GAAG,CAAC,CAAA;yDACV;oDACL,CAAC,CAAC,CAAA;gDACN,CAAC,CAAA;;;;gDAGG,qBAAM,eAAe,EAAE;oDACvB,iDAAiD;kDAD1B;;gDAAvB,SAAuB,CAAA;;;;gDAGvB,sCAAsC;gDACtC,OAAO,CAAC,KAAK,CAAC,OAAK,CAAC,CAAA;;;gDAGxB,eAAe,GAAG,eAAe,CAAC,IAAI,CAClC;;;;4DACI,8EAA8E;4DAC9E,qBAAM,YAAY,CACd,IAAI,EACJ,MAAM,CAAC,iBAAiB,EACxB,aAAa,EACb,KAAK,CACR,EAAA;;4DAND,8EAA8E;4DAC9E,sBAAA,SAKC,EAAA;;;qDAAA,CACR,CAAA;;;;;6BACJ,CAAC,CAAA;4BACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAgB,IAAY,EAAE,KAAU;;;;;;gDACzD,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,IAAI,CAAC,CAAA;gDAC/C,kBAAkB,GAAG,IAAI,CAAA;qDAErB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAArB,wBAAqB;gDAEhB,qBAAM,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,GAAG,CACjB,iDAAiD,EACjD,CAAC,IAAI,CAAC,CACT,CAAA,EAAA;;gDAJC,WAAW,GACb,CAAC,SAGA,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE;gDAE7B,qBAAM,SAAS,CAAC,eAAe,CAAC,QAAM,CAAA,CAClC,qBAAc,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,CAAC,QAAQ,EAAE,MAAG,CACvD,EAAA;;gDAFD,SAEC,CAAA;gDAED,qBAAM,SAAS,CAAC,SAAS,CAAC,GAAG,CACzB,qCAAqC,EACrC,CAAC,IAAI,CAAC,CACT,EAAA;;gDAHD,SAGC,CAAA;gDAED,kBAAkB,GAAG,KAAK,CAAA;gDAC1B,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAA;;;qDAGpC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAApB,wBAAoB;gDACpB,qBAAM,SAAS,CAAC,SAAS,CAAC,GAAG,CACzB,8CAA8C,EAC9C,CAAC,IAAI,CAAC,CACT,EAAA;;gDAHD,SAGC,CAAA;gDACD,kBAAkB,GAAG,KAAK,CAAA;;;;;;6BAEjC,CAAC,CAAA;4BACF,IAAI,cAAc,GAA8C,EAAE,CAAA;4BAElE,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAgB,IAAI,EAAE,KAAK;;;;wCAC5C,wCAAwC;wCACxC,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE;4CACtB,YAAY,CAAC,cAAc,CAAC,IAAI,CAAE,CAAC,CAAA;yCACtC;wCAED,kBAAkB;wCAClB,cAAc,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;4CAC9B,eAAe,GAAG,eAAe,CAAC,IAAI,CAAC;;;gEACnC,qBAAM,YAAY,CACd,IAAI,EACJ,MAAM,CAAC,iBAAiB,EACxB,eAAe,EACf,KAAK,CACR;4DACD,6DAA6D;0DAD5D;;4DALD,SAKC,CAAA;4DACD,6DAA6D;4DAC7D,OAAO,cAAc,CAAC,IAAI,CAAC,CAAA;;;;iDAC9B,CAAC,CAAA;wCACN,CAAC,EAAE,GAAG,CAAC,CAAA,CAAC,aAAa;;;;6BACxB,CAAC,CAAA;wBACN,CAAC,CAAC,CAAA,CAAA;oBACN,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAA;;;;;CACtE;AAED,SAAe,YAAY,CACvB,IAAY,EACZ,iBAAyB,EACzB,UAA2C,EAC3C,KAAU;;;;;;oBAEJ,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAA;yBACnC,CAAA,SAAS,KAAK,KAAK,CAAA,EAAnB,wBAAmB;oBACnB,qBAAM,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,iBAAiB,CAAC,EAAA;;oBAA3D,SAA2D,CAAA;oBAC3D,sBAAM;;yBACC,CAAA,SAAS,KAAK,IAAI,CAAA,EAAlB,wBAAkB;oBACzB,qBAAM,eAAe,CACjB,IAAI,EACJ,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,CACb,EAAA;;oBAND,SAMC,CAAA;oBACD,sBAAM;;oBACH,IAAI,SAAS,KAAK,MAAM,EAAE;qBAChC;yBAAM,IAAI,SAAS,KAAK,MAAM,EAAE;qBAChC;;;;;;CACJ;AAED,2BAA2B;AAC3B,0BAA0B;AAC1B,yBAAyB;AAEzB,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAgB,GAAG,EAAE,GAAG;;;;YACtD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;gBACjC,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,EAAA;aAC/D;YAGD,IAAI;gBACA,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,CAAA;gBAClC,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;oBACjC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAA;oBACtD,sBAAM;iBACT;gBACD,aAAa,GAAG,aAAa,CAAC,WAAW,CAAC,CAAA;gBAC1C,IAAI,aAAa,EAAE;oBACf,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,aAAa,CAAC,CAAA;oBACrC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;oBACnC,sBAAO,IAAI,EAAA;iBACd;qBAAM;oBACH,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAA;oBACxD,sBAAO,IAAI,EAAA;iBACd;aACJ;YAAC,OAAO,KAAK,EAAE;gBACZ,GAAG,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAA;gBAC5C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACjB,KAAK,EAAE,uBAAuB;iBACjC,CAAC,CAAA;gBACF,sBAAO,IAAI,EAAA;aACd;;;;CACJ,CAAC,CAAA;AAEF,UAAU,CAAC,GAAG,CAAC,cAAc,EAAE,UAAgB,GAAG,EAAE,GAAG;;;;YACnD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;gBACjC,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,EAAA;aAC/D;YACD,IAAI;gBACI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAA;gBAEf,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;gBAC9B,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;gBAC1B,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;gBAElC,IACI,OAAO,WAAW,KAAK,QAAQ;oBAC/B,OAAO,SAAS,KAAK,QAAQ;oBAC7B,OAAO,WAAW,KAAK,QAAQ,EACjC;oBACE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAA;oBAChD,sBAAM;iBACT;gBAEG,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;gBAE1C,IAAI,CAAC,aAAa,EAAE;oBAChB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBACjB,KAAK,EAAE,0CAA0C;qBACpD,CAAC,CAAA;oBACF,sBAAM;iBACT;gBAEG,QAAQ,GAAG,UAAG,aAAa,cAAI,SAAS,QAAK,CAAA;gBACjD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;gBACvC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;aACjC;YAAC,OAAO,KAAK,EAAE;gBACZ,GAAG,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAA;gBAC1C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAA;aAC3D;;;;CACJ,CAAC,CAAA;AAEF,UAAU,CAAC,IAAI,CAAC,mBAAmB,EAAE,UAAgB,GAAG,EAAE,GAAG;;;;YACzD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;gBACjC,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,EAAA;aAC/D;YACD,IAAI;gBACI,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,CAAA;gBAClC,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,CAAA;gBAElC,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;oBAClE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAA;oBAChD,sBAAM;iBACT;gBAEG,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;gBAC1C,IAAI,CAAC,aAAa,EAAE;oBAChB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBACjB,KAAK,EAAE,0CAA0C;qBACpD,CAAC,CAAA;oBACF,sBAAM;iBACT;gBAEG,QAAQ,GAAG,aAAa,GAAG,GAAG,GAAG,SAAS,GAAG,KAAK,CAAA;gBACtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;oBAC1B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAA;oBACjD,sBAAM;iBACT;gBAEG,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;gBACpD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;aACpC;YAAC,OAAO,KAAK,EAAE;gBACZ,GAAG,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAA;gBAC/C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAA;aAC3D;;;;CACJ,CAAC,CAAA;AAEF,2BAA2B;AAC3B,wBAAwB;AACxB,yBAAyB;AAEzB,wCAAwC;AAExC,IAAI,UAAU,GAAG,EAAE,CAAA;AAEnB,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,UAAC,GAAG,EAAE,GAAG;IAChC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;IAC9B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QACjC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAA;KAC/D;IAED,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AACnC,CAAC,CAAC,CAAA;AACF,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,UAAC,GAAG,EAAE,GAAG;IAC/B,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;IAC9B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QACjC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAA;KAC/D;IACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AACnC,CAAC,CAAC,CAAA;AAEF,UAAU,CAAC,IAAI,CAAC,iBAAiB,EAAE,UAAC,GAAG,EAAE,GAAG;IACxC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QACjC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAA;KAC/D;IACD,IAAI;QACA,IAAI,aAAa,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAA;QAC3C,IAAI,aAAa,EAAE;YACf,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAA;YACjC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;SACtC;aAAM;YACH,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAA;SAC3D;KACJ;IAAC,OAAO,KAAK,EAAE;QACZ,GAAG,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAA;QAC7C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAA;KAC3D;AACL,CAAC,CAAC,CAAA;AAEF,iCAAiC;AACjC,UAAU,CAAC,GAAG,CAAC,kBAAkB,EAAE,UAAO,GAAG,EAAE,GAAG;;;;;qBAC1C,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAA/B,wBAA+B;gBAC/B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;;;gBAEX,eAAa,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;qBACpC,CAAC,YAAU,EAAX,wBAAW;gBACE,qBAAM,aAAa,CAAC,QAAQ,CAAC,EAAA;;gBAA1C,YAAU,GAAG,SAA6B,CAAA;;;gBAE9C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAU,CAAC,CAAA;gBAC/B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,YAAU,CAAC,CAAA;;;;;KAEvC,CAAC,CAAA;AAEF,UAAU,CAAC,GAAG,CAAC,+BAA+B,EAAE,UAAO,GAAG,EAAE,GAAG;;;;;gBAC3D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;oBACjC,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,EAAA;iBAC/D;gBACD,KAAA,CAAA,KAAA,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA,CAAC,IAAI,CAAA;gBAAC,qBAAM,aAAa,CAAC,QAAQ,CAAC,EAAA;;gBAAlD,cAAqB,SAA6B,EAAC,CAAA;;;;KACtD,CAAC,CAAA;AAEF,gBAAgB;AAChB,UAAU,CAAC,GAAG,CAAC,qBAAqB,EAAE,UAAC,GAAG,EAAE,GAAG;IAC3C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QACjC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAA;KAC/D;IACD,IAAI,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAA;IACtC,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE;QACnC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAA;KAChE;IAED,IAAI,OAAO,GAAG,UAAU,GAAG,kBAAW,UAAU,CAAE,CAAA;IAClD,IAAI;QACA,IAAI,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAC/C,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAC,QAAQ;YAChC,+EAA+E;YAC/E,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACjC,CAAC,CAAC,CAAA;QACF,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;KAC5C;IAAC,OAAO,GAAG,EAAE;QACV,IAAK,GAAmB,CAAC,IAAI,KAAK,QAAQ,EAAE;YACxC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAA;SAC3D;;YAAM,MAAM,GAAG,CAAA;KACnB;AACL,CAAC,CAAC,CAAA;AAEF,gBAAgB;AAChB,UAAU,CAAC,GAAG,CAAC,gCAAgC,EAAE,UAAC,GAAG,EAAE,GAAG;IACtD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QACjC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAA;KAC/D;IACD,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAA;IACnC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE;QACjC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAA;KAC/D;IAED,IAAI,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAA;IACtC,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE;QACnC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAA;KAChE;IAED,IAAI,QAAQ,GAAG,UAAU,GAAG,kBAAW,UAAU,MAAG,GAAG,QAAQ,GAAG,OAAO,CAAA;IACzE,IAAI;QACA,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;KAC3D;IAAC,OAAO,GAAG,EAAE;QACV,IAAK,GAAmB,CAAC,IAAI,KAAK,QAAQ,EAAE;YACxC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YACf,GAAG,CAAC,IAAI,GAAG,iBAAiB,CAAA;SAC/B;;YAAM,MAAM,GAAG,CAAA;KACnB;AACL,CAAC,CAAC,CAAA;AAEF,UAAU,CAAC,GAAG,CAAC,gCAAgC,EAAE,UAAO,GAAG,EAAE,GAAG;;;QAC5D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YACjC,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,EAAA;SAC/D;QACG,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAA;QACnC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE;YACjC,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,EAAA;SAC/D;QAEG,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAA;QACtC,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE;YACnC,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,gCAAgC,CAAC,EAAA;SAChE;QAED,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;QAEzC,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,kBAAW,UAAU,CAAE,CAAA;QAC3D,IAAI;YACA,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;SAC7C;QAAC,OAAO,GAAG,EAAE;YACV,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACd,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,EAAA;SAC7D;QAEG,QAAQ,GAAG,OAAO,GAAG,WAAI,QAAQ,CAAE,CAAA;QACvC,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG;YAC1D,IAAI,GAAG,EAAE;gBACL,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBACd,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;aAC1D;YACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;QACpD,CAAC,CAAC,CAAA;;;KACL,CAAC,CAAA"} \ No newline at end of file diff --git a/build/indexing_pipeline/index.js b/build/indexing_pipeline/index.js new file mode 100644 index 0000000..e365a23 --- /dev/null +++ b/build/indexing_pipeline/index.js @@ -0,0 +1,310 @@ +var __awaiter = + (this && this.__awaiter) || + function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P + ? value + : new P(function (resolve) { + resolve(value) + }) + } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)) + } catch (e) { + reject(e) + } + } + function rejected(value) { + try { + step(generator['throw'](value)) + } catch (e) { + reject(e) + } + } + function step(result) { + result.done + ? resolve(result.value) + : adopt(result.value).then(fulfilled, rejected) + } + step( + (generator = generator.apply(thisArg, _arguments || [])).next(), + ) + }) + } +var __generator = + (this && this.__generator) || + function (thisArg, body) { + var _ = { + label: 0, + sent: function () { + if (t[0] & 1) throw t[1] + return t[1] + }, + trys: [], + ops: [], + }, + f, + y, + t, + g + return ( + (g = { next: verb(0), throw: verb(1), return: verb(2) }), + typeof Symbol === 'function' && + (g[Symbol.iterator] = function () { + return this + }), + g + ) + function verb(n) { + return function (v) { + return step([n, v]) + } + } + function step(op) { + if (f) throw new TypeError('Generator is already executing.') + while ((g && ((g = 0), op[0] && (_ = 0)), _)) + try { + if ( + ((f = 1), + y && + (t = + op[0] & 2 + ? y['return'] + : op[0] + ? y['throw'] || + ((t = y['return']) && t.call(y), 0) + : y.next) && + !(t = t.call(y, op[1])).done) + ) + return t + if (((y = 0), t)) op = [op[0] & 2, t.value] + switch (op[0]) { + case 0: + case 1: + t = op + break + case 4: + _.label++ + return { value: op[1], done: false } + case 5: + _.label++ + y = op[1] + op = [0] + continue + case 7: + op = _.ops.pop() + _.trys.pop() + continue + default: + if ( + !((t = _.trys), + (t = t.length > 0 && t[t.length - 1])) && + (op[0] === 6 || op[0] === 2) + ) { + _ = 0 + continue + } + if ( + op[0] === 3 && + (!t || (op[1] > t[0] && op[1] < t[3])) + ) { + _.label = op[1] + break + } + if (op[0] === 6 && _.label < t[1]) { + _.label = t[1] + t = op + break + } + if (t && _.label < t[2]) { + _.label = t[2] + _.ops.push(op) + break + } + if (t[2]) _.ops.pop() + _.trys.pop() + continue + } + op = body.call(thisArg, _) + } catch (e) { + op = [6, e] + y = 0 + } finally { + f = t = 0 + } + if (op[0] & 5) throw op[1] + return { value: op[0] ? op[1] : void 0, done: true } + } + } +import { splitContentInReasonableChunks } from './utils.js' +import log from 'electron-log' +import TurndownService from 'turndown' +import removeMarkdown from 'remove-markdown' +function indexDocument(_a) { + var fullUrl = _a.fullUrl, + pageTitle = _a.pageTitle, + fullHTML = _a.fullHTML, + createdWhen = _a.createdWhen, + contentType = _a.contentType, + sourceApplication = _a.sourceApplication, + creatorId = _a.creatorId, + embedTextFunction = _a.embedTextFunction, + allTables = _a.allTables, + entityExtractionFunction = _a.entityExtractionFunction + return __awaiter(this, void 0, void 0, function () { + var fullHTMLParsed, + contentChunks, + turndownService, + response, + error_1, + chunksToWrite, + _i, + contentChunks_1, + chunk, + embeddedChunk, + vectors, + documentToIndex, + vectorDocsTable, + error_2 + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + fullHTMLParsed = null + _b.label = 1 + case 1: + _b.trys.push([1, 23, , 24]) + contentChunks = [] + if (!(contentType === 'annotation')) return [3 /*break*/, 2] + turndownService = new TurndownService() + contentChunks = [ + turndownService.turndown( + Array.isArray(fullHTML) + ? fullHTML.join(' ') + : fullHTML, + ), + ] + return [3 /*break*/, 11] + case 2: + if (!(contentType === 'pdf')) return [3 /*break*/, 3] + if (typeof fullHTML === 'string') { + fullHTMLParsed = JSON.parse(fullHTML) + contentChunks = fullHTMLParsed.map(function (item) { + return Object.values(item)[0] + }) + } + return [3 /*break*/, 11] + case 3: + if (!(contentType === 'markdown')) return [3 /*break*/, 4] + contentChunks = Array.isArray(fullHTML) + ? fullHTML + : [fullHTML || ''] + return [3 /*break*/, 11] + case 4: + if (!!fullHTML) return [3 /*break*/, 9] + _b.label = 5 + case 5: + _b.trys.push([5, 8, , 9]) + return [4 /*yield*/, fetch(fullUrl)] + case 6: + response = _b.sent() + return [4 /*yield*/, response.text()] + case 7: + fullHTML = _b.sent() + return [3 /*break*/, 9] + case 8: + error_1 = _b.sent() + console.error(error_1) + return [3 /*break*/, 9] + case 9: + return [ + 4 /*yield*/, + splitContentInReasonableChunks( + Array.isArray(fullHTML) + ? fullHTML.join(' ') + : fullHTML, + ), + ] + case 10: + contentChunks = _b.sent() + _b.label = 11 + case 11: + if (contentChunks.length === 0) { + return [2 /*return*/, false] + } + chunksToWrite = [] + ;(_i = 0), (contentChunks_1 = contentChunks) + _b.label = 12 + case 12: + if (!(_i < contentChunks_1.length)) return [3 /*break*/, 18] + chunk = contentChunks_1[_i] + embeddedChunk = void 0 + if (!(chunk.length > 20)) return [3 /*break*/, 17] + if (!(contentType === 'markdown')) return [3 /*break*/, 14] + return [ + 4 /*yield*/, + embedTextFunction(pageTitle + removeMarkdown(chunk)), + ] + case 13: + embeddedChunk = _b.sent() + return [3 /*break*/, 16] + case 14: + return [4 /*yield*/, embedTextFunction(pageTitle + chunk)] + case 15: + embeddedChunk = _b.sent() + _b.label = 16 + case 16: + vectors = embeddedChunk[0].data + console.log('vectors', sourceApplication) + documentToIndex = { + fullurl: fullUrl, + pagetitle: pageTitle, + sourceapplication: sourceApplication, + createdwhen: createdWhen || Date.now(), + creatorid: creatorId || '', + contenttype: contentType || '', + contenttext: chunk, + entities: '', + vector: Array.from(vectors), + } + chunksToWrite.push(documentToIndex) + _b.label = 17 + case 17: + _i++ + return [3 /*break*/, 12] + case 18: + vectorDocsTable = allTables.vectorDocsTable + if (!vectorDocsTable) return [3 /*break*/, 22] + return [4 /*yield*/, vectorDocsTable.add(chunksToWrite)] + case 19: + _b.sent() + return [ + 4 /*yield*/, + new Promise(function (resolve) { + return setTimeout(resolve, 100) + }), + ] + case 20: + _b.sent() + return [4 /*yield*/, vectorDocsTable.cleanupOldVersions(1)] + case 21: + _b.sent() + _b.label = 22 + case 22: + console.log('Successfully indexed: ', fullUrl) + log.log('Successfully indexed: ', fullUrl) + return [2 /*return*/, true] + case 23: + error_2 = _b.sent() + console.log('Failure indexing: ', fullUrl, ' ', error_2) + log.log('Failure indexed: ', fullUrl, ' ', error_2) + return [2 /*return*/, false] + case 24: + return [2 /*return*/] + } + }) + }) +} +export { indexDocument } +//# sourceMappingURL=index.js.map diff --git a/build/indexing_pipeline/index.js.map b/build/indexing_pipeline/index.js.map new file mode 100644 index 0000000..86ccea1 --- /dev/null +++ b/build/indexing_pipeline/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/indexing_pipeline/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/indexing_pipeline/markdown_indexing.js b/build/indexing_pipeline/markdown_indexing.js new file mode 100644 index 0000000..6fcc364 --- /dev/null +++ b/build/indexing_pipeline/markdown_indexing.js @@ -0,0 +1,391 @@ +var __awaiter = + (this && this.__awaiter) || + function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P + ? value + : new P(function (resolve) { + resolve(value) + }) + } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)) + } catch (e) { + reject(e) + } + } + function rejected(value) { + try { + step(generator['throw'](value)) + } catch (e) { + reject(e) + } + } + function step(result) { + result.done + ? resolve(result.value) + : adopt(result.value).then(fulfilled, rejected) + } + step( + (generator = generator.apply(thisArg, _arguments || [])).next(), + ) + }) + } +var __generator = + (this && this.__generator) || + function (thisArg, body) { + var _ = { + label: 0, + sent: function () { + if (t[0] & 1) throw t[1] + return t[1] + }, + trys: [], + ops: [], + }, + f, + y, + t, + g + return ( + (g = { next: verb(0), throw: verb(1), return: verb(2) }), + typeof Symbol === 'function' && + (g[Symbol.iterator] = function () { + return this + }), + g + ) + function verb(n) { + return function (v) { + return step([n, v]) + } + } + function step(op) { + if (f) throw new TypeError('Generator is already executing.') + while ((g && ((g = 0), op[0] && (_ = 0)), _)) + try { + if ( + ((f = 1), + y && + (t = + op[0] & 2 + ? y['return'] + : op[0] + ? y['throw'] || + ((t = y['return']) && t.call(y), 0) + : y.next) && + !(t = t.call(y, op[1])).done) + ) + return t + if (((y = 0), t)) op = [op[0] & 2, t.value] + switch (op[0]) { + case 0: + case 1: + t = op + break + case 4: + _.label++ + return { value: op[1], done: false } + case 5: + _.label++ + y = op[1] + op = [0] + continue + case 7: + op = _.ops.pop() + _.trys.pop() + continue + default: + if ( + !((t = _.trys), + (t = t.length > 0 && t[t.length - 1])) && + (op[0] === 6 || op[0] === 2) + ) { + _ = 0 + continue + } + if ( + op[0] === 3 && + (!t || (op[1] > t[0] && op[1] < t[3])) + ) { + _.label = op[1] + break + } + if (op[0] === 6 && _.label < t[1]) { + _.label = t[1] + t = op + break + } + if (t && _.label < t[2]) { + _.label = t[2] + _.ops.push(op) + break + } + if (t[2]) _.ops.pop() + _.trys.pop() + continue + } + op = body.call(thisArg, _) + } catch (e) { + op = [6, e] + y = 0 + } finally { + f = t = 0 + } + if (op[0] & 5) throw op[1] + return { value: op[0] ? op[1] : void 0, done: true } + } + } +import fs from 'fs' +import moment from 'moment' +import path from 'path' +import { indexDocument } from './index.js' +import crypto from 'crypto' +function processMarkdown( + file, + allTables, + embedTextFunction, + sourceApplication, + changeType, +) { + var _a + return __awaiter(this, void 0, void 0, function () { + var sourcesDB, + existingFile, + title, + markdown, + fingerPrint, + stats, + createdWhen, + existingFileViaFingerPrint, + existingFilePath, + newFilePath, + error_1, + chunkedMarkdown, + existingFileViaPath, + chunkedMarkdown + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + sourcesDB = allTables.sourcesDB + return [ + 4 /*yield*/, + sourcesDB.get( + 'SELECT * FROM markdownDocsTable WHERE path = ?', + [file], + ), + ] + case 1: + existingFile = _b.sent() + if (existingFile && changeType === 'addOrRename') { + return [2 /*return*/] + } + title = path.basename(file, path.extname(file)) + markdown = fs.readFileSync(file, 'utf-8') + if (markdown.length === 0) { + return [2 /*return*/] + } + fingerPrint = crypto + .createHash('md5') + .update(markdown) + .digest('hex') + stats = fs.statSync(file) + createdWhen = moment(stats.birthtime).valueOf() + if (!(changeType === 'addOrRename')) + return [3 /*break*/, 14] + _b.label = 2 + case 2: + _b.trys.push([2, 10, , 11]) + return [ + 4 /*yield*/, + sourcesDB.get( + 'SELECT * FROM markdownDocsTable WHERE fingerPrint = ?', + [fingerPrint], + ), + // this means it was just the setup listener + ] + case 3: + existingFileViaFingerPrint = _b.sent() + // this means it was just the setup listener + if ( + (existingFileViaFingerPrint === null || + existingFileViaFingerPrint === void 0 + ? void 0 + : existingFileViaFingerPrint.path) === file + ) { + return [2 /*return*/] + } + if (!existingFileViaFingerPrint) return [3 /*break*/, 7] + existingFilePath = + existingFileViaFingerPrint.path.substring( + 0, + existingFileViaFingerPrint.path.lastIndexOf('/'), + ) + newFilePath = file.substring(0, file.lastIndexOf('/')) + if (!(existingFilePath === newFilePath)) + return [3 /*break*/, 5] + // if it is a rename, update the path + return [ + 4 /*yield*/, + allTables.sourcesDB.run( + 'UPDATE markdownDocsTable SET path = ? WHERE fingerPrint = ?', + [file, fingerPrint], + ), + ] + case 4: + // if it is a rename, update the path + _b.sent() + _b.label = 5 + case 5: + // TODO: if a rename it means we have to either update all the vectors with the new path or delete the old vectors and reindex the entire document + console.log('delete vectors') + return [ + 4 /*yield*/, + allTables.vectorDocsTable['delete']( + "fullurl = '".concat(fingerPrint, "'"), + ), + ] + case 6: + _b.sent() + return [3 /*break*/, 9] + case 7: + // TODO: if a new file, index the entire document + return [ + 4 /*yield*/, + (_a = + allTables === null || allTables === void 0 + ? void 0 + : allTables.sourcesDB) === null || _a === void 0 + ? void 0 + : _a.run( + 'INSERT INTO markdownDocsTable VALUES (NULL, ?, ?, ?, ?, ?, ?, ?, ?)', + [ + file, + fingerPrint, + title, + markdown, + sourceApplication, + createdWhen, + '1', + '', + ], + ), + ] + case 8: + // TODO: if a new file, index the entire document + _b.sent() + _b.label = 9 + case 9: + return [3 /*break*/, 11] + case 10: + error_1 = _b.sent() + throw error_1 + case 11: + return [4 /*yield*/, chunkMarkdown(markdown)] + case 12: + chunkedMarkdown = _b.sent() + console.log('sourceApplication', sourceApplication) + return [ + 4 /*yield*/, + indexDocument({ + fullUrl: fingerPrint, + pageTitle: title, + fullHTML: chunkedMarkdown, + createdWhen: createdWhen, + contentType: 'markdown', + sourceApplication: sourceApplication, + creatorId: '1', + embedTextFunction: embedTextFunction, + allTables: allTables, + entityExtractionFunction: null, + }), + ] + case 13: + _b.sent() + _b.label = 14 + case 14: + if (!(changeType === 'contentChange')) + return [3 /*break*/, 20] + return [ + 4 /*yield*/, + sourcesDB.get( + 'SELECT fingerPrint FROM markdownDocsTable WHERE path = ?', + [file], + ), + // make sure the file exists before changing the content + ] + case 15: + existingFileViaPath = _b.sent() + if (!existingFileViaPath) return [3 /*break*/, 20] + return [ + 4 /*yield*/, + allTables.sourcesDB.run( + 'UPDATE markdownDocsTable SET content = ? , fingerPrint = ? WHERE path = ?', + [markdown, fingerPrint, file], + ), + // TODO: if the content changes we have to delete all the vectors of this document and re-index the entire document. We have to debounce this somehow beca + ] + case 16: + _b.sent() + // TODO: if the content changes we have to delete all the vectors of this document and re-index the entire document. We have to debounce this somehow beca + return [ + 4 /*yield*/, + allTables.vectorDocsTable['delete']( + "fullurl = '".concat( + existingFileViaPath.fingerPrint, + "'", + ), + ), + ] + case 17: + // TODO: if the content changes we have to delete all the vectors of this document and re-index the entire document. We have to debounce this somehow beca + _b.sent() + return [4 /*yield*/, chunkMarkdown(markdown)] + case 18: + chunkedMarkdown = _b.sent() + return [ + 4 /*yield*/, + indexDocument({ + fullUrl: fingerPrint, + pageTitle: title, + fullHTML: chunkedMarkdown, + createdWhen: createdWhen, + contentType: 'markdown', + sourceApplication: sourceApplication, + creatorId: '1', + embedTextFunction: embedTextFunction, + allTables: allTables, + entityExtractionFunction: null, + }), + ] + case 19: + _b.sent() + _b.label = 20 + case 20: + return [2 /*return*/] + } + }) + }) +} +export { processMarkdown } +export function chunkMarkdown(markdown) { + return __awaiter(this, void 0, void 0, function () { + var chunks, chunkedMarkdown, lastHeadline + return __generator(this, function (_a) { + chunks = markdown.split('\n\n') + chunkedMarkdown = [] + lastHeadline = '' + chunks.forEach(function (chunk) { + if (chunk.startsWith('#')) { + lastHeadline = chunk + } + // Clean the chunk by converting markdown to text + chunkedMarkdown.push(lastHeadline + '\n' + chunk) + }) + return [2 /*return*/, chunkedMarkdown] + }) + }) +} +//# sourceMappingURL=markdown_indexing.js.map diff --git a/build/indexing_pipeline/markdown_indexing.js.map b/build/indexing_pipeline/markdown_indexing.js.map new file mode 100644 index 0000000..e4353ca --- /dev/null +++ b/build/indexing_pipeline/markdown_indexing.js.map @@ -0,0 +1 @@ +{"version":3,"file":"markdown_indexing.js","sourceRoot":"","sources":["../../src/indexing_pipeline/markdown_indexing.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/indexing_pipeline/pdf_indexing.js b/build/indexing_pipeline/pdf_indexing.js new file mode 100644 index 0000000..5835cab --- /dev/null +++ b/build/indexing_pipeline/pdf_indexing.js @@ -0,0 +1,550 @@ +var __awaiter = + (this && this.__awaiter) || + function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P + ? value + : new P(function (resolve) { + resolve(value) + }) + } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)) + } catch (e) { + reject(e) + } + } + function rejected(value) { + try { + step(generator['throw'](value)) + } catch (e) { + reject(e) + } + } + function step(result) { + result.done + ? resolve(result.value) + : adopt(result.value).then(fulfilled, rejected) + } + step( + (generator = generator.apply(thisArg, _arguments || [])).next(), + ) + }) + } +var __generator = + (this && this.__generator) || + function (thisArg, body) { + var _ = { + label: 0, + sent: function () { + if (t[0] & 1) throw t[1] + return t[1] + }, + trys: [], + ops: [], + }, + f, + y, + t, + g + return ( + (g = { next: verb(0), throw: verb(1), return: verb(2) }), + typeof Symbol === 'function' && + (g[Symbol.iterator] = function () { + return this + }), + g + ) + function verb(n) { + return function (v) { + return step([n, v]) + } + } + function step(op) { + if (f) throw new TypeError('Generator is already executing.') + while ((g && ((g = 0), op[0] && (_ = 0)), _)) + try { + if ( + ((f = 1), + y && + (t = + op[0] & 2 + ? y['return'] + : op[0] + ? y['throw'] || + ((t = y['return']) && t.call(y), 0) + : y.next) && + !(t = t.call(y, op[1])).done) + ) + return t + if (((y = 0), t)) op = [op[0] & 2, t.value] + switch (op[0]) { + case 0: + case 1: + t = op + break + case 4: + _.label++ + return { value: op[1], done: false } + case 5: + _.label++ + y = op[1] + op = [0] + continue + case 7: + op = _.ops.pop() + _.trys.pop() + continue + default: + if ( + !((t = _.trys), + (t = t.length > 0 && t[t.length - 1])) && + (op[0] === 6 || op[0] === 2) + ) { + _ = 0 + continue + } + if ( + op[0] === 3 && + (!t || (op[1] > t[0] && op[1] < t[3])) + ) { + _.label = op[1] + break + } + if (op[0] === 6 && _.label < t[1]) { + _.label = t[1] + t = op + break + } + if (t && _.label < t[2]) { + _.label = t[2] + _.ops.push(op) + break + } + if (t[2]) _.ops.pop() + _.trys.pop() + continue + } + op = body.call(thisArg, _) + } catch (e) { + op = [6, e] + y = 0 + } finally { + f = t = 0 + } + if (op[0] & 5) throw op[1] + return { value: op[0] ? op[1] : void 0, done: true } + } + } +var __spreadArray = + (this && this.__spreadArray) || + function (to, from, pack) { + if (pack || arguments.length === 2) + for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i) + ar[i] = from[i] + } + } + return to.concat(ar || Array.prototype.slice.call(from)) + } +import fs from 'fs' +import moment from 'moment' +import { indexDocument } from './index.js' +function processPDF(file, allTables, pdfJS, embedTextFunction) { + var _a, _b, _c, _d, _e, _f, _g + return __awaiter(this, void 0, void 0, function () { + var sourcesDB, + existingPDF, + pdfData, + uint8Array, + pdfDoc_1, + fingerPrint, + existingFileViaFingerPrint, + existingFilePath, + newFilePath, + metaData, + createdWhen, + title, + textSections_1, + getText, + pdfText, + heightCounts_1, + sortedHeights, + paragraphHeight_1, + headingHeights, + textElements_1, + tempGroup, + i, + textSegment, + matchingTextElement, + firstFiveItems, + lowestHeading_1, + itemWithHeading2, + firstItem, + firstKey, + documentToSave + var _h, _j + var _this = this + return __generator(this, function (_k) { + switch (_k.label) { + case 0: + sourcesDB = allTables.sourcesDB + return [ + 4 /*yield*/, + sourcesDB.get('SELECT * FROM pdfTable WHERE path = ?', [ + file, + ]), + ] + case 1: + existingPDF = _k.sent() + if (!(existingPDF === undefined)) return [3 /*break*/, 11] + pdfData = fs.readFileSync(file) + uint8Array = new Uint8Array(pdfData.buffer) + return [ + 4 /*yield*/, + pdfJS.getDocument({ data: uint8Array }).promise, + ] + case 2: + pdfDoc_1 = _k.sent() + fingerPrint = pdfDoc_1._pdfInfo.fingerprints[0] + return [ + 4 /*yield*/, + sourcesDB.get( + 'SELECT * FROM pdfTable WHERE fingerPrint = ?', + [fingerPrint], + ), + // determine if the change is just rename or if its a new file + ] + case 3: + existingFileViaFingerPrint = _k.sent() + if (!existingFileViaFingerPrint) return [3 /*break*/, 6] + existingFilePath = + existingFileViaFingerPrint.path.substring( + 0, + existingFileViaFingerPrint.path.lastIndexOf('/'), + ) + newFilePath = file.substring(0, file.lastIndexOf('/')) + if (!(existingFilePath === newFilePath)) + return [3 /*break*/, 5] + return [ + 4 /*yield*/, + allTables.sourcesDB.run( + 'UPDATE pdfTable SET path = ? WHERE fingerPrint = ?', + [file, fingerPrint], + ), + ] + case 4: + _k.sent() + _k.label = 5 + case 5: + if (existingFileViaFingerPrint.path === file) { + console.log('PDF already indexed') + } + return [2 /*return*/] + case 6: + return [4 /*yield*/, pdfDoc_1.getMetadata()] + case 7: + metaData = _k.sent() + createdWhen = metaData.info.CreationDate || null + try { + createdWhen = moment(createdWhen).unix() + } catch (error) { + createdWhen = Date.now() + } + title = metaData.info.Title || null + textSections_1 = [] + getText = function () { + return __awaiter(_this, void 0, void 0, function () { + var pdf, maxPages, j, page, textContent + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + pdf = pdfDoc_1 + maxPages = pdf._pdfInfo.numPages + j = 1 + _a.label = 1 + case 1: + if (!(j <= maxPages)) + return [3 /*break*/, 5] + return [4 /*yield*/, pdf.getPage(j)] + case 2: + page = _a.sent() + return [ + 4 /*yield*/, + page.getTextContent(), + // remove all vertical text + ] + case 3: + textContent = _a.sent() + // remove all vertical text + textContent.items = + textContent.items.filter( + function (item) { + return ( + item.transform[2] >= 0 + ) + }, + ) + textSections_1 = __spreadArray( + __spreadArray( + [], + textSections_1, + true, + ), + textContent.items, + true, + ) + _a.label = 4 + case 4: + j++ + return [3 /*break*/, 1] + case 5: + return [2 /*return*/] + } + }) + }) + } + return [ + 4 /*yield*/, + getText(), + // Parse text elements into paragraphs and headings + ] + case 8: + _k.sent() + pdfText = [] + heightCounts_1 = {} + textSections_1.forEach(function (textSegment) { + var height = textSegment.transform[0] + if (heightCounts_1[height]) { + heightCounts_1[height]++ + } else { + heightCounts_1[height] = 1 + } + }) + sortedHeights = Object.keys(heightCounts_1) + .map(Number) + .sort(function (a, b) { + return heightCounts_1[b] - heightCounts_1[a] + }) + paragraphHeight_1 = sortedHeights[0] + headingHeights = sortedHeights.slice(1) + headingHeights.sort(function (a, b) { + return Number(b) - Number(a) + }) + textElements_1 = {} + // find the most common font size, this is the standard text size + textElements_1[paragraphHeight_1] = 'Paragraph' + // make the rest headings in ascending order + headingHeights.forEach(function (height, index) { + if (height < paragraphHeight_1) { + textElements_1[height] = 'SmallText' + (index + 1) + } else { + textElements_1[height] = 'Heading' + (index + 1) + } + }) + tempGroup = '' + for ( + i = 0; + i < + (textSections_1 === null || textSections_1 === void 0 + ? void 0 + : textSections_1.length); + i++ + ) { + textSegment = textSections_1[i] + matchingTextElement = void 0 + if ( + (textSegment === null || textSegment === void 0 + ? void 0 + : textSegment.transform[0]) === + ((_a = textSections_1[i - 1]) === null || + _a === void 0 + ? void 0 + : _a.transform[0]) || + (typeof (textSegment === null || + textSegment === void 0 + ? void 0 + : textSegment.transform[0]) === 'number' && + (textSegment === null || textSegment === void 0 + ? void 0 + : textSegment.transform[0]) <= + paragraphHeight_1 && + textSegment.str !== '') + ) { + if ( + textSegment.hasEOL || + ((_b = textSections_1[i - 1]) === null || + _b === void 0 + ? void 0 + : _b.transform[5]) !== + textSegment.transform[5] + ) { + tempGroup += textSegment.str + ' ' + } else { + tempGroup += textSegment.str + } + } else if ( + i === + (textSections_1 === null || + textSections_1 === void 0 + ? void 0 + : textSections_1.length) - + 1 && + tempGroup.length > 0 + ) { + matchingTextElement = + textElements_1[ + (_c = textSections_1[i]) === null || + _c === void 0 + ? void 0 + : _c.transform[0] + ] + pdfText.push( + ((_h = {}), + (_h[matchingTextElement] = tempGroup), + _h), + ) + } else { + if ( + ((_d = textSections_1[i - 1]) === null || + _d === void 0 + ? void 0 + : _d.transform[0]) == null + ) { + matchingTextElement = + textElements_1[ + (_e = textSections_1[i]) === null || + _e === void 0 + ? void 0 + : _e.transform[0] + ] + } else { + matchingTextElement = + textElements_1[ + (_f = textSections_1[i - 1]) === null || + _f === void 0 + ? void 0 + : _f.transform[0] + ] + } + // filter out small chunks that are likely noise + if (tempGroup.length > 10) { + pdfText.push( + ((_j = {}), + (_j[matchingTextElement] = + tempGroup.replace(/(? 0) { + firstItem = pdfText[0] + firstKey = Object.keys(firstItem)[0] + title = firstItem[firstKey] + } + } + documentToSave = { + path: file || '', + fullurl: fingerPrint || '', + pagetitle: title || '', + sourceapplication: 'localPDF' || '', + createdwhen: createdWhen || Date.now(), + creatorid: '1' || '', + contenttype: 'pdf' || '', + contenttext: JSON.stringify(pdfText) || '', + } + return [ + 4 /*yield*/, + allTables.sourcesDB.run( + 'INSERT INTO pdfTable VALUES(null, ?, ?, ? ,?, ?, ?, ?, ?)', + [ + documentToSave.path, + documentToSave.fullurl, + documentToSave.pagetitle, + documentToSave.contenttext, + documentToSave.createdwhen, + documentToSave.sourceapplication, + documentToSave.creatorid, + '', + ], + ), + ] + case 9: + _k.sent() + console.log( + 'PDF saved to Sqlite DB', + documentToSave.fullurl, + ) + return [ + 4 /*yield*/, + indexDocument({ + fullUrl: documentToSave.fullurl, + pageTitle: documentToSave.pagetitle, + fullHTML: documentToSave.contenttext, + createdWhen: documentToSave.createdwhen, + contentType: documentToSave.contenttype, + sourceApplication: documentToSave.sourceapplication, + creatorId: documentToSave.creatorid, + embedTextFunction: embedTextFunction, + allTables: allTables, + entityExtractionFunction: null, + }), + ] + case 10: + _k.sent() + console.log( + 'PDF indexed in Vector DB', + documentToSave.fullurl, + ) + return [2 /*return*/, documentToSave] + case 11: + return [2 /*return*/] + } + }) + }) +} +export { processPDF } +//# sourceMappingURL=pdf_indexing.js.map diff --git a/build/indexing_pipeline/pdf_indexing.js.map b/build/indexing_pipeline/pdf_indexing.js.map new file mode 100644 index 0000000..93f9244 --- /dev/null +++ b/build/indexing_pipeline/pdf_indexing.js.map @@ -0,0 +1 @@ +{"version":3,"file":"pdf_indexing.js","sourceRoot":"","sources":["../../src/indexing_pipeline/pdf_indexing.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/indexing_pipeline/rssFeeds/index.js b/build/indexing_pipeline/rssFeeds/index.js new file mode 100644 index 0000000..4dea443 --- /dev/null +++ b/build/indexing_pipeline/rssFeeds/index.js @@ -0,0 +1,758 @@ +var __awaiter = + (this && this.__awaiter) || + function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P + ? value + : new P(function (resolve) { + resolve(value) + }) + } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)) + } catch (e) { + reject(e) + } + } + function rejected(value) { + try { + step(generator['throw'](value)) + } catch (e) { + reject(e) + } + } + function step(result) { + result.done + ? resolve(result.value) + : adopt(result.value).then(fulfilled, rejected) + } + step( + (generator = generator.apply(thisArg, _arguments || [])).next(), + ) + }) + } +var __generator = + (this && this.__generator) || + function (thisArg, body) { + var _ = { + label: 0, + sent: function () { + if (t[0] & 1) throw t[1] + return t[1] + }, + trys: [], + ops: [], + }, + f, + y, + t, + g + return ( + (g = { next: verb(0), throw: verb(1), return: verb(2) }), + typeof Symbol === 'function' && + (g[Symbol.iterator] = function () { + return this + }), + g + ) + function verb(n) { + return function (v) { + return step([n, v]) + } + } + function step(op) { + if (f) throw new TypeError('Generator is already executing.') + while ((g && ((g = 0), op[0] && (_ = 0)), _)) + try { + if ( + ((f = 1), + y && + (t = + op[0] & 2 + ? y['return'] + : op[0] + ? y['throw'] || + ((t = y['return']) && t.call(y), 0) + : y.next) && + !(t = t.call(y, op[1])).done) + ) + return t + if (((y = 0), t)) op = [op[0] & 2, t.value] + switch (op[0]) { + case 0: + case 1: + t = op + break + case 4: + _.label++ + return { value: op[1], done: false } + case 5: + _.label++ + y = op[1] + op = [0] + continue + case 7: + op = _.ops.pop() + _.trys.pop() + continue + default: + if ( + !((t = _.trys), + (t = t.length > 0 && t[t.length - 1])) && + (op[0] === 6 || op[0] === 2) + ) { + _ = 0 + continue + } + if ( + op[0] === 3 && + (!t || (op[1] > t[0] && op[1] < t[3])) + ) { + _.label = op[1] + break + } + if (op[0] === 6 && _.label < t[1]) { + _.label = t[1] + t = op + break + } + if (t && _.label < t[2]) { + _.label = t[2] + _.ops.push(op) + break + } + if (t[2]) _.ops.pop() + _.trys.pop() + continue + } + op = body.call(thisArg, _) + } catch (e) { + op = [6, e] + y = 0 + } finally { + f = t = 0 + } + if (op[0] & 5) throw op[1] + return { value: op[0] ? op[1] : void 0, done: true } + } + } +import { indexDocument } from '../index.js' +import { cleanFullHTML } from '../utils.js' +import * as xml2js from 'xml2js' +import * as cheerio from 'cheerio' +import { extract as extractFeed } from '@extractus/feed-extractor' +import * as log from 'electron-log' +function getAllRSSSources(allTables) { + return __awaiter(this, void 0, void 0, function () { + var rssSourcesTable, allRSSSources + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + rssSourcesTable = allTables.rssSourcesTable + return [4 /*yield*/, rssSourcesTable.getAll()] + case 1: + allRSSSources = _a.sent() + return [2 /*return*/, allRSSSources] + } + }) + }) +} +function addFeedSource( + feedUrl, + feedTitle, + embedTextFunction, + allTables, + type, + entityExtractionFunction, +) { + var _a + return __awaiter(this, void 0, void 0, function () { + var sourcesDB, + existingEndpoint, + error_1, + feedDataToSave, + isSubstack_1, + url, + feedURLsubstack, + parser, + htmlContent, + response, + error_2, + parsedData_1, + links_2, + url, + feedUrlSubstack, + allSiteMapPages_2, + response, + text, + $_1, + anchors, + _loop_1, + _i, + allSiteMapPages_1, + page, + _loop_2, + _b, + links_1, + link, + feedResult, + error_3, + _loop_3, + _c, + _d, + entry, + state_1, + sql, + error_4, + error_5 + return __generator(this, function (_e) { + switch (_e.label) { + case 0: + _e.trys.push([0, 33, , 34]) + sourcesDB = allTables.sourcesDB + existingEndpoint = void 0 + _e.label = 1 + case 1: + _e.trys.push([1, 3, , 4]) + return [ + 4 /*yield*/, + sourcesDB.get( + 'SELECT * FROM rssSourcesTable WHERE feedUrl = ? AND lastSynced IS NOT NULL', + [feedUrl], + ), + ] + case 2: + existingEndpoint = _e.sent() + return [3 /*break*/, 4] + case 3: + error_1 = _e.sent() + log.error('Error checking existing endpoint') + return [2 /*return*/, false] + case 4: + if (existingEndpoint) { + console.log('Feed Already Saved: ', feedUrl) + return [2 /*return*/, true] + } + feedDataToSave = { + feedUrl: feedUrl, + feedTitle: feedTitle, + lastSynced: null, + } + isSubstack_1 = + feedUrl.includes('.substack.com/') || + type === 'substack' + if (!!isSubstack_1) return [3 /*break*/, 10] + url = new URL(feedUrl) + feedURLsubstack = '' + .concat(url.protocol, '//') + .concat(url.host, '/feed') + parser = void 0 + htmlContent = void 0 + _e.label = 5 + case 5: + _e.trys.push([5, 8, , 9]) + return [4 /*yield*/, fetch(feedURLsubstack)] + case 6: + response = _e.sent() + return [4 /*yield*/, response.text()] + case 7: + htmlContent = _e.sent() + return [3 /*break*/, 9] + case 8: + error_2 = _e.sent() + console.log('error fetching feed', error_2) + throw new Error('error fetching feed:' + error_2.message) + case 9: + try { + parser = new xml2js.Parser() + parser.parseString(htmlContent, function (err, result) { + var _a, _b + if (err) { + console.log( + 'Failed to parse HTML content: ', + err, + ) + } else { + parsedData_1 = + (_a = + result === null || result === void 0 + ? void 0 + : result.rss) === null || + _a === void 0 + ? void 0 + : _a.channel[0] + var imageUrl = + (_b = + parsedData_1 === null || + parsedData_1 === void 0 + ? void 0 + : parsedData_1.image[0]) === null || + _b === void 0 + ? void 0 + : _b.url[0] + if ( + imageUrl && + imageUrl.startsWith( + 'https://substackcdn.com', + ) + ) { + console.log('isSubstack') + isSubstack_1 = true + } + } + }) + } catch (error) { + console.log('Failed to parse out xml content: ', error) + log.log('Failed to parse out xml content: ', error) + } + _e.label = 10 + case 10: + if (!isSubstack_1) return [3 /*break*/, 21] + console.log('Substack feed detected') + links_2 = [] + url = new URL(feedUrl) + feedUrlSubstack = '' + .concat(url.protocol, '//') + .concat(url.host, '/sitemap') + allSiteMapPages_2 = [] + return [4 /*yield*/, fetch(feedUrlSubstack)] + case 11: + response = _e.sent() + return [4 /*yield*/, response.text()] + case 12: + text = _e.sent() + $_1 = cheerio.load(text) + anchors = $_1('a') + anchors.each(function (i, anchor) { + var href = $_1(anchor).attr('href') + if ( + href === null || href === void 0 + ? void 0 + : href.startsWith('/sitemap') + ) { + allSiteMapPages_2.push(href) + } + }) + _loop_1 = function (page) { + var siteMapPageUrl, + pageResponse, + pageText, + $page, + pageAnchors + return __generator(this, function (_f) { + switch (_f.label) { + case 0: + siteMapPageUrl = '' + .concat(url.protocol, '//') + .concat(url.host) + .concat(page) + return [4 /*yield*/, fetch(siteMapPageUrl)] + case 1: + pageResponse = _f.sent() + return [4 /*yield*/, pageResponse.text()] + case 2: + pageText = _f.sent() + $page = cheerio.load(pageText) + pageAnchors = $page('a') + pageAnchors.each(function (i, anchor) { + var href = $page(anchor).attr('href') + if ( + href === null || href === void 0 + ? void 0 + : href.startsWith( + ''.concat( + feedUrl.replace( + '/feed', + '', + ), + '/p/', + ), + ) + ) { + links_2.push(href) + } + }) + return [2 /*return*/] + } + }) + } + ;(_i = 0), (allSiteMapPages_1 = allSiteMapPages_2) + _e.label = 13 + case 13: + if (!(_i < allSiteMapPages_1.length)) + return [3 /*break*/, 16] + page = allSiteMapPages_1[_i] + return [5 /*yield**/, _loop_1(page)] + case 14: + _e.sent() + _e.label = 15 + case 15: + _i++ + return [3 /*break*/, 13] + case 16: + if (links_2 && links_2.length === 0) { + return [2 /*return*/, false] + } + _loop_2 = function (link) { + var response_1, + fullHTML, + cleanHTML, + $_2, + metaDataTags, + scripts, + jsonScript, + scriptHtml, + datePublishedUnix, + title, + pageDataToSave + return __generator(this, function (_g) { + switch (_g.label) { + case 0: + return [ + 4 /*yield*/, + new Promise(function (resolve) { + return setTimeout(resolve, 500) + }), + ] + case 1: + _g.sent() + return [ + 4 /*yield*/, + fetch(link, { + headers: { + Accept: 'text/html', + }, + }), + ] + case 2: + response_1 = _g.sent() + return [4 /*yield*/, response_1.text()] + case 3: + fullHTML = _g.sent() + return [ + 4 /*yield*/, + cleanFullHTML(fullHTML), + ] + case 4: + cleanHTML = _g.sent() + $_2 = cheerio.load(fullHTML) + metaDataTags = void 0 + // get the page metadata containing lots of useful information about the post we can use later + try { + scripts = $_2('script') + jsonScript = scripts + .filter(function (i, script) { + return ( + $_2(script).attr('type') === + 'application/ld+json' + ) + }) + .first() + scriptHtml = jsonScript.html() + if (scriptHtml) { + metaDataTags = + JSON.parse(scriptHtml) + } + } catch (error) {} + datePublishedUnix = ( + metaDataTags === null || + metaDataTags === void 0 + ? void 0 + : metaDataTags.datePublished + ) + ? ((_a = new Date( + metaDataTags === null || + metaDataTags === void 0 + ? void 0 + : metaDataTags.datePublished, + )) === null || _a === void 0 + ? void 0 + : _a.getTime()) / 1000 + : 0 + title = + $_2('title').text() || + metaDataTags.headline + pageDataToSave = { + fullUrl: link, + pageTitle: title, + cleanHTML: cleanHTML, + fullHTML: fullHTML, + contentType: 'rss-feed-item', + createdWhen: datePublishedUnix, + sourceApplication: 'RSS', + creatorId: '', + metaDataJSON: + JSON.stringify(metaDataTags) || '', + } + return [ + 4 /*yield*/, + saveAndIndexFeedPages( + sourcesDB, + pageDataToSave, + embedTextFunction, + allTables, + entityExtractionFunction, + ), + ] + case 5: + _g.sent() + return [2 /*return*/] + } + }) + } + ;(_b = 0), (links_1 = links_2) + _e.label = 17 + case 17: + if (!(_b < links_1.length)) return [3 /*break*/, 20] + link = links_1[_b] + return [5 /*yield**/, _loop_2(link)] + case 18: + _e.sent() + _e.label = 19 + case 19: + _b++ + return [3 /*break*/, 17] + case 20: + return [3 /*break*/, 29] + case 21: + feedResult = void 0 + _e.label = 22 + case 22: + _e.trys.push([22, 24, , 25]) + return [4 /*yield*/, extractFeed(feedUrl)] + case 23: + feedResult = _e.sent() + return [3 /*break*/, 25] + case 24: + error_3 = _e.sent() + log.log('error extracting feed:', error_3, feedUrl) + throw new Error('error extracting feed:' + error_3.message) + case 25: + if (!(feedResult && feedResult.entries)) + return [3 /*break*/, 29] + _loop_3 = function (entry) { + var response, + fullHTML, + cleanHTML, + $, + metaDataTags, + scripts, + jsonScript, + scriptHtml, + datePublishedUnix, + pageDataToSave + return __generator(this, function (_h) { + switch (_h.label) { + case 0: + if ( + !(entry === null || entry === void 0 + ? void 0 + : entry.link) + ) { + return [2 /*return*/, { value: false }] + } + return [ + 4 /*yield*/, + fetch( + entry === null || entry === void 0 + ? void 0 + : entry.link, + { + headers: { + Accept: 'text/html', + }, + }, + ), + ] + case 1: + response = _h.sent() + return [4 /*yield*/, response.text()] + case 2: + fullHTML = _h.sent() + return [ + 4 /*yield*/, + cleanFullHTML(fullHTML), + ] + case 3: + cleanHTML = _h.sent() + $ = cheerio.load(fullHTML) + metaDataTags = void 0 + try { + scripts = $('script') + jsonScript = scripts + .filter(function (i, script) { + return ( + $(script).attr('type') === + 'application/ld+json' + ) + }) + .first() + scriptHtml = jsonScript.html() + if (scriptHtml) { + metaDataTags = + JSON.parse(scriptHtml) + } + } catch (error) { + log.warn( + 'Could not parse JSON metadata :', + entry.link, + ) + } + datePublishedUnix = entry.published + ? new Date(entry.published).getTime() / + 1000 + : 0 + pageDataToSave = { + fullHTML: fullHTML, + cleanHTML: cleanHTML, + fullUrl: entry.link, + pageTitle: entry.title, + contentType: 'rss-feed-item', + createdWhen: datePublishedUnix, + sourceApplication: 'RSS', + creatorId: '', + metaDataJSON: + JSON.stringify(metaDataTags) || '', + } + return [ + 4 /*yield*/, + saveAndIndexFeedPages( + sourcesDB, + pageDataToSave, + embedTextFunction, + allTables, + entityExtractionFunction, + ), + ] + case 4: + _h.sent() + return [2 /*return*/] + } + }) + } + ;(_c = 0), (_d = feedResult.entries) + _e.label = 26 + case 26: + if (!(_c < _d.length)) return [3 /*break*/, 29] + entry = _d[_c] + return [5 /*yield**/, _loop_3(entry)] + case 27: + state_1 = _e.sent() + if (typeof state_1 === 'object') + return [2 /*return*/, state_1.value] + _e.label = 28 + case 28: + _c++ + return [3 /*break*/, 26] + case 29: + _e.trys.push([29, 31, , 32]) + console.log( + 'update rssSourcesTable', + feedUrl, + feedDataToSave, + ) + sql = + 'INSERT OR REPLACE INTO rssSourcesTable VALUES (?, ?, ?, ?)' + return [ + 4 /*yield*/, + sourcesDB.run(sql, [ + feedDataToSave.feedUrl, + feedDataToSave.feedTitle, + isSubstack_1 ? 'substack' : type, + Date.now(), + ]), + ] + case 30: + _e.sent() + return [2 /*return*/, true] + case 31: + error_4 = _e.sent() + console.log( + 'Error saving feed to database: ', + feedUrl, + error_4, + ) + return [3 /*break*/, 32] + case 32: + return [3 /*break*/, 34] + case 33: + error_5 = _e.sent() + console.log('error indexing rss feed', error_5) + return [2 /*return*/, false] + case 34: + return [2 /*return*/, true] + } + }) + }) +} +// TODOS +// add the RSS feed source to the cron job +// index the RSS feed source and set the last indexed date to now +function saveAndIndexFeedPages( + sourcesDB, + pageDataToSave, + embedTextFunction, + allTables, + entityExtractionFunction, +) { + return __awaiter(this, void 0, void 0, function () { + var error_6, error_7 + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + _a.trys.push([0, 2, , 3]) + return [ + 4 /*yield*/, + sourcesDB.run( + 'INSERT INTO webPagesTable VALUES(?, ?, ?, ?, ?, ?, ?, ? )', + [ + pageDataToSave.fullUrl, + pageDataToSave.pageTitle, + pageDataToSave.cleanHTML, + pageDataToSave.contentType, + pageDataToSave.createdWhen, + pageDataToSave.sourceApplication, + pageDataToSave.creatorId, + pageDataToSave.metaDataJSON, + ], + ), + ] + case 1: + _a.sent() + return [3 /*break*/, 3] + case 2: + error_6 = _a.sent() + console.log('Page Already Saved: ', error_6) + return [2 /*return*/] + case 3: + _a.trys.push([3, 5, , 6]) + return [ + 4 /*yield*/, + indexDocument({ + fullUrl: pageDataToSave.fullUrl, + pageTitle: pageDataToSave.pageTitle, + fullHTML: pageDataToSave.cleanHTML, + contentType: 'rss-feed-item', + sourceApplication: 'RSS', + embedTextFunction: embedTextFunction, + allTables: allTables, + entityExtractionFunction: entityExtractionFunction, + }), + ] + case 4: + _a.sent() + return [3 /*break*/, 6] + case 5: + error_7 = _a.sent() + console.log('Error indexing:', error_7) + return [3 /*break*/, 6] + case 6: + return [2 /*return*/] + } + }) + }) +} +export { addFeedSource, getAllRSSSources } +//# sourceMappingURL=index.js.map diff --git a/build/indexing_pipeline/rssFeeds/index.js.map b/build/indexing_pipeline/rssFeeds/index.js.map new file mode 100644 index 0000000..e7837bf --- /dev/null +++ b/build/indexing_pipeline/rssFeeds/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/indexing_pipeline/rssFeeds/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/indexing_pipeline/utils.js b/build/indexing_pipeline/utils.js new file mode 100644 index 0000000..fb3c3a5 --- /dev/null +++ b/build/indexing_pipeline/utils.js @@ -0,0 +1,22278 @@ +var __awaiter = + (this && this.__awaiter) || + function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P + ? value + : new P(function (resolve) { + resolve(value) + }) + } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)) + } catch (e) { + reject(e) + } + } + function rejected(value) { + try { + step(generator['throw'](value)) + } catch (e) { + reject(e) + } + } + function step(result) { + result.done + ? resolve(result.value) + : adopt(result.value).then(fulfilled, rejected) + } + step( + (generator = generator.apply(thisArg, _arguments || [])).next(), + ) + }) + } +var __generator = + (this && this.__generator) || + function (thisArg, body) { + var _ = { + label: 0, + sent: function () { + if (t[0] & 1) throw t[1] + return t[1] + }, + trys: [], + ops: [], + }, + f, + y, + t, + g + return ( + (g = { next: verb(0), throw: verb(1), return: verb(2) }), + typeof Symbol === 'function' && + (g[Symbol.iterator] = function () { + return this + }), + g + ) + function verb(n) { + return function (v) { + return step([n, v]) + } + } + function step(op) { + if (f) throw new TypeError('Generator is already executing.') + while ((g && ((g = 0), op[0] && (_ = 0)), _)) + try { + if ( + ((f = 1), + y && + (t = + op[0] & 2 + ? y['return'] + : op[0] + ? y['throw'] || + ((t = y['return']) && t.call(y), 0) + : y.next) && + !(t = t.call(y, op[1])).done) + ) + return t + if (((y = 0), t)) op = [op[0] & 2, t.value] + switch (op[0]) { + case 0: + case 1: + t = op + break + case 4: + _.label++ + return { value: op[1], done: false } + case 5: + _.label++ + y = op[1] + op = [0] + continue + case 7: + op = _.ops.pop() + _.trys.pop() + continue + default: + if ( + !((t = _.trys), + (t = t.length > 0 && t[t.length - 1])) && + (op[0] === 6 || op[0] === 2) + ) { + _ = 0 + continue + } + if ( + op[0] === 3 && + (!t || (op[1] > t[0] && op[1] < t[3])) + ) { + _.label = op[1] + break + } + if (op[0] === 6 && _.label < t[1]) { + _.label = t[1] + t = op + break + } + if (t && _.label < t[2]) { + _.label = t[2] + _.ops.push(op) + break + } + if (t[2]) _.ops.pop() + _.trys.pop() + continue + } + op = body.call(thisArg, _) + } catch (e) { + op = [6, e] + y = 0 + } finally { + f = t = 0 + } + if (op[0] & 5) throw op[1] + return { value: op[0] ? op[1] : void 0, done: true } + } + } +import { JSDOM } from 'jsdom' +import TurndownService from 'turndown' +import posTagger from 'wink-pos-tagger' +export function splitContentInReasonableChunks(contentText) { + return __awaiter(this, void 0, void 0, function () { + var htmlDoc, paragraphs, chunks + return __generator(this, function (_a) { + htmlDoc = new JSDOM(contentText) + paragraphs = htmlDoc.window.document.querySelectorAll('p') + chunks = [] + paragraphs.forEach(function (paragraph) { + var chunk = paragraph.textContent + var turndownService = new TurndownService() + chunk = turndownService.turndown(chunk || '') + if (chunk.length > 50) { + chunks.push(chunk) + } + }) + return [2 /*return*/, chunks] + }) + }) +} +export function cleanFullHTML(fullHTML) { + var _a, _b, _c + return __awaiter(this, void 0, void 0, function () { + var cleanFullHTML, + dom, + document, + scriptTags, + styleTags, + svgTags, + i, + i, + i + return __generator(this, function (_d) { + cleanFullHTML = fullHTML + dom = new JSDOM(cleanFullHTML) + document = dom.window.document + scriptTags = document.getElementsByTagName('script') + styleTags = document.getElementsByTagName('style') + svgTags = document.getElementsByTagName('svg') + for (i = scriptTags.length - 1; i >= 0; i--) { + ;(_a = scriptTags[i].parentNode) === null || _a === void 0 + ? void 0 + : _a.removeChild(scriptTags[i]) + } + for (i = styleTags.length - 1; i >= 0; i--) { + ;(_b = styleTags[i].parentNode) === null || _b === void 0 + ? void 0 + : _b.removeChild(styleTags[i]) + } + for (i = svgTags.length - 1; i >= 0; i--) { + ;(_c = svgTags[i].parentNode) === null || _c === void 0 + ? void 0 + : _c.removeChild(svgTags[i]) + } + cleanFullHTML = dom.serialize() + return [2 /*return*/, cleanFullHTML] + }) + }) +} +export function prepareContentForEmbedding(contentText) { + return __awaiter(this, void 0, void 0, function () { + var response, words, stopWords + return __generator(this, function (_a) { + // Remove all special characters + contentText = contentText.replace(/[^\w\s]/gi, ' ') + words = contentText.split(' ') + // Make all words lowercase + words = words.map(function (word) { + return word.toLowerCase().trim() + }) + stopWords = [ + 'a', + 'an', + 'the', + 'in', + 'is', + 'it', + 'you', + 'are', + 'for', + 'from', + 'as', + 'with', + 'their', + 'if', + 'on', + 'that', + 'at', + 'by', + 'this', + 'and', + 'to', + 'be', + 'which', + 'or', + 'was', + 'of', + 'and', + 'in', + 'is', + 'it', + 'that', + 'then', + 'there', + 'these', + 'they', + 'we', + 'were', + 'you', + 'your', + 'I', + 'me', + 'my', + 'the', + 'to', + 'and', + 'in', + 'is', + 'it', + 'of', + 'that', + 'you', + 'a', + 'an', + 'and', + 'are', + 'as', + 'at', + 'be', + 'by', + 'for', + 'from', + 'has', + 'he', + 'in', + 'is', + 'it', + 'its', + 'of', + 'on', + 'that', + 'the', + 'to', + 'was', + 'were', + 'will', + 'with', + ] + words = words.filter(function (word) { + return !stopWords.some(function (stopWord) { + return stopWord === word + }) + }) + response = Array.from(new Set(words)).join(' ') + return [2 /*return*/, response] + }) + }) +} +export function extractEntitiesFromText(text, entityExtractionFunction) { + return __awaiter(this, void 0, void 0, function () { + var tagger, + taggedText, + filteredTaggedText, + entities, + concatenatedEntity, + english, + unwantedChars + return __generator(this, function (_a) { + tagger = new posTagger() + taggedText = tagger.tagSentence(text) + filteredTaggedText = taggedText.filter(function (item) { + // List of item descriptions + // CC Coord Conjuncn and,but,or + // CD Cardinal number one,two + // DT Determiner the,some + // EX Existential there there + // FW Foreign Word mon dieu + // IN Preposition of,in,by + // JJ Adjective big + // JJR Adj., comparative bigger + // JJS Adj., superlative biggest + // LS List item marker 1,One + // MD Modal can,should + // NN Noun, sing. or mass dog + // NNP Proper noun, sing. Edinburgh + // NNPS Proper noun, plural Smiths + // NNS Noun, plural dogs + // POS Possessive ending 's + // PDT Predeterminer all, both + // PRP$ Possessive pronoun my,one's + // PRP Personal pronoun I,you,she + // RB Adverb quickly + // RBR Adverb, comparative faster + // RBS Adverb, superlative fastest + // RP Particle up,off + // SYM Symbol +,%,& + // TO 'to' to + // UH Interjection oh, oops + // VB verb, base form eat + // VBD verb, past tense ate + // VBG verb, gerund eating + // VBN verb, past part eaten + // VBP Verb, present eat + // VBZ Verb, present eats + // WDT Wh-determiner which,that + // WP Wh pronoun who,what + // WP$ Possessive-Wh whose + // WRB Wh-adverb how,where + // , Comma , + // . Sent-final punct . ! ? + // : Mid-sent punct. : ; Ñ + // $ Dollar sign $ + // # Pound sign # + // " quote " + // ( Left paren ( + // ) Right paren ) + var unwantedPos = [ + 'CC', + 'DT', + 'EX', + 'IN', + 'JJ', + 'JJR', + 'JJS', + 'LS', + 'MD', + 'POS', + 'PDT', + 'PRP$', + 'PRP', + 'RBS', + 'SYM', + 'TO', + 'UH', + 'WDT', + 'WP', + 'WP$', + 'WRB', + ',', + '.', + '.', + '-', + '::', + '#', + '"', + '(', + ')', + '-', + '\\', + '[', + ']', + ] + return !unwantedPos.some(function (pos) { + return pos === item.pos + }) + }) + entities = [] + filteredTaggedText.forEach(function (item) { + entities.push(item.value) + item.lemma && + item.value.toLowerCase() !== item.lemma && + entities.push(item.lemma) + }) + concatenatedEntity = '' + // for (let i = 0; i < rawEntities.length; i++) { + // if ( + // i < rawEntities.length - 1 && + // rawEntities[i].index + 1 === rawEntities[i + 1].index + // ) { + // concatenatedEntity += rawEntities[i].word + " "; + // } else { + // concatenatedEntity += rawEntities[i].word; + // entities.push(concatenatedEntity); + // concatenatedEntity = ""; + // } + // } + // remove weird extractions that happen with unknown words that are split in the middle + entities = entities.map(function (entity) { + return entity.replace(/ ##/g, '') + }) + english = stopwords.en + entities = entities.filter(function (entity) { + return !english.includes(entity.toLowerCase()) + }) + unwantedChars = [ + ',', + '.', + '-', + ':', + '#', + '"', + '(', + ')', + '\\', + '[', + ']', + ] + entities = entities.filter(function (entity) { + return !unwantedChars.includes(entity) + }) + // Remove all numbers with less than 3 characters + entities = entities.filter(function (entity) { + return !(entity.length < 3 && /^\d+$/.test(entity)) + }) + // Deduplicate entities + entities = Array.from(new Set(entities)) + return [2 /*return*/, entities] + }) + }) +} +var stopwords = { + af: [ + "'n", + 'aan', + 'af', + 'al', + 'as', + 'baie', + 'by', + 'daar', + 'dag', + 'dat', + 'die', + 'dit', + 'een', + 'ek', + 'en', + 'gaan', + 'gesê', + 'haar', + 'het', + 'hom', + 'hulle', + 'hy', + 'in', + 'is', + 'jou', + 'jy', + 'kan', + 'kom', + 'ma', + 'maar', + 'met', + 'my', + 'na', + 'nie', + 'om', + 'ons', + 'op', + 'saam', + 'sal', + 'se', + 'sien', + 'so', + 'sy', + 'te', + 'toe', + 'uit', + 'van', + 'vir', + 'was', + 'wat', + 'ʼn', + ], + ar: [ + '،', + 'آض', + 'آمينَ', + 'آه', + 'آهاً', + 'آي', + 'أ', + 'أب', + 'أجل', + 'أجمع', + 'أخ', + 'أخذ', + 'أصبح', + 'أضحى', + 'أقبل', + 'أقل', + 'أكثر', + 'ألا', + 'أم', + 'أما', + 'أمامك', + 'أمامكَ', + 'أمسى', + 'أمّا', + 'أن', + 'أنا', + 'أنت', + 'أنتم', + 'أنتما', + 'أنتن', + 'أنتِ', + 'أنشأ', + 'أنّى', + 'أو', + 'أوشك', + 'أولئك', + 'أولئكم', + 'أولاء', + 'أولالك', + 'أوّهْ', + 'أي', + 'أيا', + 'أين', + 'أينما', + 'أيّ', + 'أَنَّ', + 'أََيُّ', + 'أُفٍّ', + 'إذ', + 'إذا', + 'إذاً', + 'إذما', + 'إذن', + 'إلى', + 'إليكم', + 'إليكما', + 'إليكنّ', + 'إليكَ', + 'إلَيْكَ', + 'إلّا', + 'إمّا', + 'إن', + 'إنّما', + 'إي', + 'إياك', + 'إياكم', + 'إياكما', + 'إياكن', + 'إيانا', + 'إياه', + 'إياها', + 'إياهم', + 'إياهما', + 'إياهن', + 'إياي', + 'إيهٍ', + 'إِنَّ', + 'ا', + 'ابتدأ', + 'اثر', + 'اجل', + 'احد', + 'اخرى', + 'اخلولق', + 'اذا', + 'اربعة', + 'ارتدّ', + 'استحال', + 'اطار', + 'اعادة', + 'اعلنت', + 'اف', + 'اكثر', + 'اكد', + 'الألاء', + 'الألى', + 'الا', + 'الاخيرة', + 'الان', + 'الاول', + 'الاولى', + 'التى', + 'التي', + 'الثاني', + 'الثانية', + 'الذاتي', + 'الذى', + 'الذي', + 'الذين', + 'السابق', + 'الف', + 'اللائي', + 'اللاتي', + 'اللتان', + 'اللتيا', + 'اللتين', + 'اللذان', + 'اللذين', + 'اللواتي', + 'الماضي', + 'المقبل', + 'الوقت', + 'الى', + 'اليوم', + 'اما', + 'امام', + 'امس', + 'ان', + 'انبرى', + 'انقلب', + 'انه', + 'انها', + 'او', + 'اول', + 'اي', + 'ايار', + 'ايام', + 'ايضا', + 'ب', + 'بات', + 'باسم', + 'بان', + 'بخٍ', + 'برس', + 'بسبب', + 'بسّ', + 'بشكل', + 'بضع', + 'بطآن', + 'بعد', + 'بعض', + 'بك', + 'بكم', + 'بكما', + 'بكن', + 'بل', + 'بلى', + 'بما', + 'بماذا', + 'بمن', + 'بن', + 'بنا', + 'به', + 'بها', + 'بي', + 'بيد', + 'بين', + 'بَسْ', + 'بَلْهَ', + 'بِئْسَ', + 'تانِ', + 'تانِك', + 'تبدّل', + 'تجاه', + 'تحوّل', + 'تلقاء', + 'تلك', + 'تلكم', + 'تلكما', + 'تم', + 'تينك', + 'تَيْنِ', + 'تِه', + 'تِي', + 'ثلاثة', + 'ثم', + 'ثمّ', + 'ثمّة', + 'ثُمَّ', + 'جعل', + 'جلل', + 'جميع', + 'جير', + 'حار', + 'حاشا', + 'حاليا', + 'حاي', + 'حتى', + 'حرى', + 'حسب', + 'حم', + 'حوالى', + 'حول', + 'حيث', + 'حيثما', + 'حين', + 'حيَّ', + 'حَبَّذَا', + 'حَتَّى', + 'حَذارِ', + 'خلا', + 'خلال', + 'دون', + 'دونك', + 'ذا', + 'ذات', + 'ذاك', + 'ذانك', + 'ذانِ', + 'ذلك', + 'ذلكم', + 'ذلكما', + 'ذلكن', + 'ذو', + 'ذوا', + 'ذواتا', + 'ذواتي', + 'ذيت', + 'ذينك', + 'ذَيْنِ', + 'ذِه', + 'ذِي', + 'راح', + 'رجع', + 'رويدك', + 'ريث', + 'رُبَّ', + 'زيارة', + 'سبحان', + 'سرعان', + 'سنة', + 'سنوات', + 'سوف', + 'سوى', + 'سَاءَ', + 'سَاءَمَا', + 'شبه', + 'شخصا', + 'شرع', + 'شَتَّانَ', + 'صار', + 'صباح', + 'صفر', + 'صهٍ', + 'صهْ', + 'ضد', + 'ضمن', + 'طاق', + 'طالما', + 'طفق', + 'طَق', + 'ظلّ', + 'عاد', + 'عام', + 'عاما', + 'عامة', + 'عدا', + 'عدة', + 'عدد', + 'عدم', + 'عسى', + 'عشر', + 'عشرة', + 'علق', + 'على', + 'عليك', + 'عليه', + 'عليها', + 'علًّ', + 'عن', + 'عند', + 'عندما', + 'عوض', + 'عين', + 'عَدَسْ', + 'عَمَّا', + 'غدا', + 'غير', + 'ـ', + 'ف', + 'فان', + 'فلان', + 'فو', + 'فى', + 'في', + 'فيم', + 'فيما', + 'فيه', + 'فيها', + 'قال', + 'قام', + 'قبل', + 'قد', + 'قطّ', + 'قلما', + 'قوة', + 'كأنّما', + 'كأين', + 'كأيّ', + 'كأيّن', + 'كاد', + 'كان', + 'كانت', + 'كذا', + 'كذلك', + 'كرب', + 'كل', + 'كلا', + 'كلاهما', + 'كلتا', + 'كلم', + 'كليكما', + 'كليهما', + 'كلّما', + 'كلَّا', + 'كم', + 'كما', + 'كي', + 'كيت', + 'كيف', + 'كيفما', + 'كَأَنَّ', + 'كِخ', + 'لئن', + 'لا', + 'لات', + 'لاسيما', + 'لدن', + 'لدى', + 'لعمر', + 'لقاء', + 'لك', + 'لكم', + 'لكما', + 'لكن', + 'لكنَّما', + 'لكي', + 'لكيلا', + 'للامم', + 'لم', + 'لما', + 'لمّا', + 'لن', + 'لنا', + 'له', + 'لها', + 'لو', + 'لوكالة', + 'لولا', + 'لوما', + 'لي', + 'لَسْتَ', + 'لَسْتُ', + 'لَسْتُم', + 'لَسْتُمَا', + 'لَسْتُنَّ', + 'لَسْتِ', + 'لَسْنَ', + 'لَعَلَّ', + 'لَكِنَّ', + 'لَيْتَ', + 'لَيْسَ', + 'لَيْسَا', + 'لَيْسَتَا', + 'لَيْسَتْ', + 'لَيْسُوا', + 'لَِسْنَا', + 'ما', + 'ماانفك', + 'مابرح', + 'مادام', + 'ماذا', + 'مازال', + 'مافتئ', + 'مايو', + 'متى', + 'مثل', + 'مذ', + 'مساء', + 'مع', + 'معاذ', + 'مقابل', + 'مكانكم', + 'مكانكما', + 'مكانكنّ', + 'مكانَك', + 'مليار', + 'مليون', + 'مما', + 'ممن', + 'من', + 'منذ', + 'منها', + 'مه', + 'مهما', + 'مَنْ', + 'مِن', + 'نحن', + 'نحو', + 'نعم', + 'نفس', + 'نفسه', + 'نهاية', + 'نَخْ', + 'نِعِمّا', + 'نِعْمَ', + 'ها', + 'هاؤم', + 'هاكَ', + 'هاهنا', + 'هبّ', + 'هذا', + 'هذه', + 'هكذا', + 'هل', + 'هلمَّ', + 'هلّا', + 'هم', + 'هما', + 'هن', + 'هنا', + 'هناك', + 'هنالك', + 'هو', + 'هي', + 'هيا', + 'هيت', + 'هيّا', + 'هَؤلاء', + 'هَاتانِ', + 'هَاتَيْنِ', + 'هَاتِه', + 'هَاتِي', + 'هَجْ', + 'هَذا', + 'هَذانِ', + 'هَذَيْنِ', + 'هَذِه', + 'هَذِي', + 'هَيْهَاتَ', + 'و', + 'و6', + 'وا', + 'واحد', + 'واضاف', + 'واضافت', + 'واكد', + 'وان', + 'واهاً', + 'واوضح', + 'وراءَك', + 'وفي', + 'وقال', + 'وقالت', + 'وقد', + 'وقف', + 'وكان', + 'وكانت', + 'ولا', + 'ولم', + 'ومن', + 'وهو', + 'وهي', + 'ويكأنّ', + 'وَيْ', + 'وُشْكَانََ', + 'يكون', + 'يمكن', + 'يوم', + 'ّأيّان', + ], + hy: [ + 'այդ', + 'այլ', + 'այն', + 'այս', + 'դու', + 'դուք', + 'եմ', + 'են', + 'ենք', + 'ես', + 'եք', + 'է', + 'էի', + 'էին', + 'էինք', + 'էիր', + 'էիք', + 'էր', + 'ըստ', + 'թ', + 'ի', + 'ին', + 'իսկ', + 'իր', + 'կամ', + 'համար', + 'հետ', + 'հետո', + 'մենք', + 'մեջ', + 'մի', + 'ն', + 'նա', + 'նաև', + 'նրա', + 'նրանք', + 'որ', + 'որը', + 'որոնք', + 'որպես', + 'ու', + 'ում', + 'պիտի', + 'վրա', + 'և', + ], + eu: [ + 'al', + 'anitz', + 'arabera', + 'asko', + 'baina', + 'bat', + 'batean', + 'batek', + 'bati', + 'batzuei', + 'batzuek', + 'batzuetan', + 'batzuk', + 'bera', + 'beraiek', + 'berau', + 'berauek', + 'bere', + 'berori', + 'beroriek', + 'beste', + 'bezala', + 'da', + 'dago', + 'dira', + 'ditu', + 'du', + 'dute', + 'edo', + 'egin', + 'ere', + 'eta', + 'eurak', + 'ez', + 'gainera', + 'gu', + 'gutxi', + 'guzti', + 'haiei', + 'haiek', + 'haietan', + 'hainbeste', + 'hala', + 'han', + 'handik', + 'hango', + 'hara', + 'hari', + 'hark', + 'hartan', + 'hau', + 'hauei', + 'hauek', + 'hauetan', + 'hemen', + 'hemendik', + 'hemengo', + 'hi', + 'hona', + 'honek', + 'honela', + 'honetan', + 'honi', + 'hor', + 'hori', + 'horiei', + 'horiek', + 'horietan', + 'horko', + 'horra', + 'horrek', + 'horrela', + 'horretan', + 'horri', + 'hortik', + 'hura', + 'izan', + 'ni', + 'noiz', + 'nola', + 'non', + 'nondik', + 'nongo', + 'nor', + 'nora', + 'ze', + 'zein', + 'zen', + 'zenbait', + 'zenbat', + 'zer', + 'zergatik', + 'ziren', + 'zituen', + 'zu', + 'zuek', + 'zuen', + 'zuten', + ], + bn: [ + 'অতএব', + 'অথচ', + 'অথবা', + 'অনুযায়ী', + 'অনেক', + 'অনেকে', + 'অনেকেই', + 'অন্তত', + 'অন্য', + 'অবধি', + 'অবশ্য', + 'অর্থাত', + 'আই', + 'আগামী', + 'আগে', + 'আগেই', + 'আছে', + 'আজ', + 'আদ্যভাগে', + 'আপনার', + 'আপনি', + 'আবার', + 'আমরা', + 'আমাকে', + 'আমাদের', + 'আমার', + 'আমি', + 'আর', + 'আরও', + 'ই', + 'ইত্যাদি', + 'ইহা', + 'উচিত', + 'উত্তর', + 'উনি', + 'উপর', + 'উপরে', + 'এ', + 'এঁদের', + 'এঁরা', + 'এই', + 'একই', + 'একটি', + 'একবার', + 'একে', + 'এক্', + 'এখন', + 'এখনও', + 'এখানে', + 'এখানেই', + 'এটা', + 'এটাই', + 'এটি', + 'এত', + 'এতটাই', + 'এতে', + 'এদের', + 'এব', + 'এবং', + 'এবার', + 'এমন', + 'এমনকী', + 'এমনি', + 'এর', + 'এরা', + 'এল', + 'এস', + 'এসে', + 'ঐ', + 'ও', + 'ওঁদের', + 'ওঁর', + 'ওঁরা', + 'ওই', + 'ওকে', + 'ওখানে', + 'ওদের', + 'ওর', + 'ওরা', + 'কখনও', + 'কত', + 'কবে', + 'কমনে', + 'কয়েক', + 'কয়েকটি', + 'করছে', + 'করছেন', + 'করতে', + 'করবে', + 'করবেন', + 'করলে', + 'করলেন', + 'করা', + 'করাই', + 'করায়', + 'করার', + 'করি', + 'করিতে', + 'করিয়া', + 'করিয়ে', + 'করে', + 'করেই', + 'করেছিলেন', + 'করেছে', + 'করেছেন', + 'করেন', + 'কাউকে', + 'কাছ', + 'কাছে', + 'কাজ', + 'কাজে', + 'কারও', + 'কারণ', + 'কি', + 'কিংবা', + 'কিছু', + 'কিছুই', + 'কিন্তু', + 'কী', + 'কে', + 'কেউ', + 'কেউই', + 'কেখা', + 'কেন', + 'কোটি', + 'কোন', + 'কোনও', + 'কোনো', + 'ক্ষেত্রে', + 'কয়েক', + 'খুব', + 'গিয়ে', + 'গিয়েছে', + 'গিয়ে', + 'গুলি', + 'গেছে', + 'গেল', + 'গেলে', + 'গোটা', + 'চলে', + 'চান', + 'চায়', + 'চার', + 'চালু', + 'চেয়ে', + 'চেষ্টা', + 'ছাড়া', + 'ছাড়াও', + 'ছিল', + 'ছিলেন', + 'জন', + 'জনকে', + 'জনের', + 'জন্য', + 'জন্যওজে', + 'জানতে', + 'জানা', + 'জানানো', + 'জানায়', + 'জানিয়ে', + 'জানিয়েছে', + 'জে', + 'জ্নজন', + 'টি', + 'ঠিক', + 'তখন', + 'তত', + 'তথা', + 'তবু', + 'তবে', + 'তা', + 'তাঁকে', + 'তাঁদের', + 'তাঁর', + 'তাঁরা', + 'তাঁাহারা', + 'তাই', + 'তাও', + 'তাকে', + 'তাতে', + 'তাদের', + 'তার', + 'তারপর', + 'তারা', + 'তারৈ', + 'তাহলে', + 'তাহা', + 'তাহাতে', + 'তাহার', + 'তিনঐ', + 'তিনি', + 'তিনিও', + 'তুমি', + 'তুলে', + 'তেমন', + 'তো', + 'তোমার', + 'থাকবে', + 'থাকবেন', + 'থাকা', + 'থাকায়', + 'থাকে', + 'থাকেন', + 'থেকে', + 'থেকেই', + 'থেকেও', + 'দিকে', + 'দিতে', + 'দিন', + 'দিয়ে', + 'দিয়েছে', + 'দিয়েছেন', + 'দিলেন', + 'দু', + 'দুই', + 'দুটি', + 'দুটো', + 'দেওয়া', + 'দেওয়ার', + 'দেওয়া', + 'দেখতে', + 'দেখা', + 'দেখে', + 'দেন', + 'দেয়', + 'দ্বারা', + 'ধরা', + 'ধরে', + 'ধামার', + 'নতুন', + 'নয়', + 'না', + 'নাই', + 'নাকি', + 'নাগাদ', + 'নানা', + 'নিজে', + 'নিজেই', + 'নিজেদের', + 'নিজের', + 'নিতে', + 'নিয়ে', + 'নিয়ে', + 'নেই', + 'নেওয়া', + 'নেওয়ার', + 'নেওয়া', + 'নয়', + 'পক্ষে', + 'পর', + 'পরে', + 'পরেই', + 'পরেও', + 'পর্যন্ত', + 'পাওয়া', + 'পাচ', + 'পারি', + 'পারে', + 'পারেন', + 'পি', + 'পেয়ে', + 'পেয়্র্', + 'প্রতি', + 'প্রথম', + 'প্রভৃতি', + 'প্রযন্ত', + 'প্রাথমিক', + 'প্রায়', + 'প্রায়', + 'ফলে', + 'ফিরে', + 'ফের', + 'বক্তব্য', + 'বদলে', + 'বন', + 'বরং', + 'বলতে', + 'বলল', + 'বললেন', + 'বলা', + 'বলে', + 'বলেছেন', + 'বলেন', + 'বসে', + 'বহু', + 'বা', + 'বাদে', + 'বার', + 'বি', + 'বিনা', + 'বিভিন্ন', + 'বিশেষ', + 'বিষয়টি', + 'বেশ', + 'বেশি', + 'ব্যবহার', + 'ব্যাপারে', + 'ভাবে', + 'ভাবেই', + 'মতো', + 'মতোই', + 'মধ্যভাগে', + 'মধ্যে', + 'মধ্যেই', + 'মধ্যেও', + 'মনে', + 'মাত্র', + 'মাধ্যমে', + 'মোট', + 'মোটেই', + 'যখন', + 'যত', + 'যতটা', + 'যথেষ্ট', + 'যদি', + 'যদিও', + 'যা', + 'যাঁর', + 'যাঁরা', + 'যাওয়া', + 'যাওয়ার', + 'যাওয়া', + 'যাকে', + 'যাচ্ছে', + 'যাতে', + 'যাদের', + 'যান', + 'যাবে', + 'যায়', + 'যার', + 'যারা', + 'যিনি', + 'যে', + 'যেখানে', + 'যেতে', + 'যেন', + 'যেমন', + 'র', + 'রকম', + 'রয়েছে', + 'রাখা', + 'রেখে', + 'লক্ষ', + 'শুধু', + 'শুরু', + 'সঙ্গে', + 'সঙ্গেও', + 'সব', + 'সবার', + 'সমস্ত', + 'সম্প্রতি', + 'সহ', + 'সহিত', + 'সাধারণ', + 'সামনে', + 'সি', + 'সুতরাং', + 'সে', + 'সেই', + 'সেখান', + 'সেখানে', + 'সেটা', + 'সেটাই', + 'সেটাও', + 'সেটি', + 'স্পষ্ট', + 'স্বয়ং', + 'হইতে', + 'হইবে', + 'হইয়া', + 'হওয়া', + 'হওয়ায়', + 'হওয়ার', + 'হচ্ছে', + 'হত', + 'হতে', + 'হতেই', + 'হন', + 'হবে', + 'হবেন', + 'হয়', + 'হয়তো', + 'হয়নি', + 'হয়ে', + 'হয়েই', + 'হয়েছিল', + 'হয়েছে', + 'হয়েছেন', + 'হল', + 'হলে', + 'হলেই', + 'হলেও', + 'হলো', + 'হাজার', + 'হিসাবে', + 'হৈলে', + 'হোক', + 'হয়', + ], + br: [ + "'blam", + "'d", + "'m", + "'r", + "'ta", + "'vat", + "'z", + "'zo", + 'a', + 'a:', + 'aba', + 'abalamour', + 'abaoe', + "ac'hane", + "ac'hanoc'h", + "ac'hanomp", + "ac'hanon", + "ac'hanout", + 'adal', + 'adalek', + 'adarre', + 'ae', + "aec'h", + 'aed', + 'aemp', + 'aen', + 'aent', + 'aes', + 'afe', + "afec'h", + 'afed', + 'afemp', + 'afen', + 'afent', + 'afes', + 'ag', + 'ah', + 'aimp', + 'aint', + 'aio', + 'aiou', + 'aje', + "ajec'h", + 'ajed', + 'ajemp', + 'ajen', + 'ajent', + 'ajes', + 'al', + 'alato', + 'alies', + 'aliesañ', + 'alkent', + 'all', + 'allas', + 'allo', + 'allô', + 'am', + 'amañ', + 'amzer', + 'an', + 'anezhañ', + 'anezhe', + 'anezhi', + 'anezho', + 'anvet', + 'aon', + 'aotren', + 'ar', + 'arall', + 'araok', + 'araoki', + 'araozañ', + 'araozo', + "araozoc'h", + 'araozomp', + 'araozon', + 'araozor', + 'araozout', + 'arbenn', + 'arre', + 'atalek', + 'atav', + 'az', + 'azalek', + 'azirazañ', + 'azirazi', + 'azirazo', + "azirazoc'h", + 'azirazomp', + 'azirazon', + 'azirazor', + 'azirazout', + 'b:', + 'ba', + "ba'l", + "ba'n", + "ba'r", + 'bad', + 'bah', + 'bal', + 'ban', + 'bar', + 'bastañ', + 'befe', + 'bell', + 'benaos', + 'benn', + 'bennag', + 'bennak', + 'bennozh', + 'bep', + 'bepred', + 'berr', + 'berzh', + 'bet', + 'betek', + 'betra', + 'bev', + 'bevet', + 'bez', + 'bezañ', + 'beze', + 'bezent', + 'bezet', + 'bezh', + 'bezit', + 'bezomp', + 'bihan', + 'bije', + 'biou', + 'biskoazh', + 'blam', + 'bo', + 'boa', + 'bominapl', + 'boudoudom', + 'bouez', + 'boull', + 'boum', + 'bout', + 'bras', + 'brasañ', + 'brav', + 'bravo', + 'bremañ', + 'bres', + 'brokenn', + 'bronn', + 'brrr', + 'brutal', + 'buhezek', + "c'h:", + "c'haout", + "c'he", + "c'hem", + "c'herz", + "c'heñver", + "c'hichen", + "c'hiz", + "c'hoazh", + "c'horre", + "c'houde", + "c'houst", + "c'hreiz", + "c'hwec'h", + "c'hwec'hvet", + "c'hwezek", + "c'hwi", + 'ch:', + 'chaous', + 'chik', + 'chit', + 'chom', + 'chut', + "d'", + "d'al", + "d'an", + "d'ar", + "d'az", + "d'e", + "d'he", + "d'ho", + "d'hol", + "d'hon", + "d'hor", + "d'o", + "d'ober", + "d'ul", + "d'un", + "d'ur", + 'd:', + 'da', + 'dak', + 'daka', + 'dal', + 'dalbezh', + "dalc'hmat", + 'dalit', + 'damdost', + 'damheñvel', + 'damm', + 'dan', + 'danvez', + 'dao', + 'daol', + 'daonet', + 'daou', + 'daoust', + 'daouzek', + 'daouzekvet', + 'darn', + 'dastrewiñ', + 'dav', + "davedoc'h", + 'davedomp', + 'davedon', + 'davedor', + 'davedout', + 'davet', + 'davetañ', + 'davete', + 'daveti', + 'daveto', + 'defe', + 'dehou', + 'dek', + 'dekvet', + 'den', + "deoc'h", + 'deomp', + 'deor', + "derc'hel", + 'deus', + 'dez', + 'deze', + 'dezhañ', + 'dezhe', + 'dezhi', + 'dezho', + 'di', + 'diabarzh', + 'diagent', + 'diar', + 'diaraok', + 'diavaez', + 'dibaoe', + 'dibaot', + 'dibar', + "dic'halañ", + "didiac'h", + 'dienn', + 'difer', + "diganeoc'h", + 'diganeomp', + 'diganeor', + 'diganimp', + 'diganin', + 'diganit', + 'digant', + 'digantañ', + 'digante', + 'diganti', + 'diganto', + 'digemmesk', + 'diget', + 'digor', + 'digoret', + 'dija', + 'dije', + 'dimp', + 'din', + 'dinaou', + 'dindan', + 'dindanañ', + 'dindani', + 'dindano', + "dindanoc'h", + 'dindanomp', + 'dindanon', + 'dindanor', + 'dindanout', + 'dioutañ', + 'dioute', + 'diouti', + 'diouto', + 'diouzh', + 'diouzhin', + 'diouzhit', + "diouzhoc'h", + 'diouzhomp', + 'diouzhor', + 'dirak', + 'dirazañ', + 'dirazi', + 'dirazo', + "dirazoc'h", + 'dirazomp', + 'dirazon', + 'dirazor', + 'dirazout', + 'disheñvel', + 'dispar', + 'distank', + 'dister', + 'disterañ', + 'disterig', + 'distro', + 'dit', + 'divaez', + 'diwar', + 'diwezhat', + 'diwezhañ', + 'do', + 'doa', + 'doare', + 'dont', + 'dost', + 'doue', + 'douetus', + 'douez', + 'doug', + 'draou', + 'draoñ', + 'dre', + 'drede', + 'dreist', + 'dreistañ', + 'dreisti', + 'dreisto', + "dreistoc'h", + 'dreistomp', + 'dreiston', + 'dreistor', + 'dreistout', + 'drek', + 'dreñv', + 'dring', + 'dro', + 'du', + 'e', + 'e:', + 'eas', + 'ebet', + "ec'h", + 'edo', + "edoc'h", + 'edod', + 'edomp', + 'edon', + 'edont', + 'edos', + 'eer', + 'eeun', + 'efed', + "egedoc'h", + 'egedomp', + 'egedon', + 'egedor', + 'egedout', + 'eget', + 'egetañ', + 'egete', + 'egeti', + 'egeto', + 'eh', + 'eil', + 'eilvet', + 'eizh', + 'eizhvet', + "ejoc'h", + 'ejod', + 'ejomp', + 'ejont', + 'ejout', + 'el', + 'em', + 'emaint', + "emaoc'h", + 'emaomp', + 'emaon', + 'emaout', + 'emañ', + 'eme', + 'emeur', + 'emezañ', + 'emezi', + 'emezo', + "emezoc'h", + 'emezomp', + 'emezon', + 'emezout', + 'emporzhiañ', + 'en', + 'end', + 'endan', + 'endra', + 'enep', + 'ennañ', + 'enni', + 'enno', + "ennoc'h", + 'ennomp', + 'ennon', + 'ennor', + 'ennout', + 'enta', + 'eo', + 'eomp', + 'eont', + 'eor', + 'eot', + 'er', + 'erbet', + 'erfin', + 'esa', + 'esae', + 'espar', + 'estlamm', + 'estrañj', + 'eta', + 'etre', + "etreoc'h", + 'etrezo', + "etrezoc'h", + 'etrezomp', + 'etrezor', + 'euh', + 'eur', + 'eus', + 'evel', + 'evelato', + "eveldoc'h", + 'eveldomp', + 'eveldon', + 'eveldor', + 'eveldout', + 'evelkent', + 'eveltañ', + 'evelte', + 'evelti', + 'evelto', + "evidoc'h", + 'evidomp', + 'evidon', + 'evidor', + 'evidout', + 'evit', + 'evitañ', + 'evite', + 'eviti', + 'evito', + 'ez', + 'eñ', + 'f:', + "fac'h", + 'fall', + 'fed', + 'feiz', + 'fenn', + 'fezh', + 'fin', + 'finsalvet', + 'foei', + 'fouilhezañ', + 'g:', + 'gallout', + "ganeoc'h", + 'ganeomp', + 'ganin', + 'ganit', + 'gant', + 'gantañ', + 'ganti', + 'ganto', + 'gaout', + 'gast', + 'gein', + 'gellout', + 'genndost', + 'gentañ', + 'ger', + 'gerz', + 'get', + 'geñver', + 'gichen', + 'gin', + 'giz', + 'glan', + 'gloev', + 'goll', + 'gorre', + 'goude', + 'gouez', + 'gouezit', + 'gouezomp', + 'goulz', + 'gounnar', + 'gour', + 'goust', + 'gouze', + 'gouzout', + 'gra', + 'grak', + "grec'h", + 'greiz', + 'grenn', + 'greomp', + 'grit', + 'groñs', + 'gutez', + 'gwall', + "gwashoc'h", + 'gwazh', + 'gwech', + 'gwechall', + 'gwechoù', + 'gwell', + 'gwezh', + 'gwezhall', + 'gwezharall', + 'gwezhoù', + 'gwig', + 'gwirionez', + 'gwitibunan', + 'gêr', + 'h:', + 'ha', + 'hag', + 'han', + 'hanter', + "hanterc'hantad", + 'hanterkantved', + 'harz', + 'hañ', + 'hañval', + 'he', + 'hebioù', + "hec'h", + 'hei', + 'hein', + 'hem', + 'hemañ', + 'hen', + 'hend', + 'henhont', + 'henn', + 'hennezh', + 'hent', + 'hep', + 'hervez', + 'hervezañ', + 'hervezi', + 'hervezo', + "hervezoc'h", + 'hervezomp', + 'hervezon', + 'hervezor', + 'hervezout', + 'heul', + 'heuliañ', + 'hevelep', + 'heverk', + 'heñvel', + 'heñvelat', + 'heñvelañ', + 'heñveliñ', + "heñveloc'h", + 'heñvelout', + 'hi', + 'hilh', + 'hini', + 'hirie', + 'hirio', + 'hiziv', + 'hiziviken', + 'ho', + 'hoaliñ', + "hoc'h", + 'hogen', + 'hogos', + 'hogozik', + 'hol', + 'holl', + 'holà', + 'homañ', + 'hon', + 'honhont', + 'honnezh', + 'hont', + 'hop', + 'hopala', + 'hor', + 'hou', + 'houp', + 'hudu', + 'hue', + 'hui', + 'hum', + 'hurrah', + 'i', + 'i:', + 'in', + 'int', + 'is', + 'ispisial', + 'isurzhiet', + 'it', + 'ivez', + 'izelañ', + 'j:', + 'just', + 'k:', + 'kae', + 'kaer', + 'kalon', + 'kalz', + 'kant', + 'kaout', + 'kar', + 'kazi', + 'keid', + 'kein', + 'keit', + 'kel', + 'kellies', + 'keloù', + 'kement', + 'ken', + 'kenkent', + 'kenkoulz', + 'kenment', + 'kent', + 'kentañ', + 'kentizh', + "kentoc'h", + 'kentre', + 'ker', + 'kerkent', + 'kerz', + 'kerzh', + 'ket', + 'keta', + 'keñver', + 'keñverel', + 'keñverius', + 'kichen', + 'kichenik', + 'kit', + 'kiz', + 'klak', + 'klek', + 'klik', + 'komprenet', + 'komz', + 'kont', + 'korf', + 'korre', + 'koulskoude', + 'koulz', + 'koust', + 'krak', + 'krampouezh', + "krec'h", + 'kreiz', + 'kuit', + 'kwir', + 'l:', + 'la', + 'laez', + 'laoskel', + 'laouen', + 'lavar', + 'lavaret', + 'lavarout', + "lec'h", + 'lein', + 'leizh', + "lerc'h", + 'leun', + 'leuskel', + 'lew', + 'lies', + 'liesañ', + 'lod', + 'lusk', + 'lâr', + 'lârout', + 'm:', + 'ma', + "ma'z", + "mac'h", + "mac'hat", + "mac'hañ", + "mac'hoc'h", + 'mad', + 'maez', + 'maksimal', + 'mann', + 'mar', + 'mard', + 'marg', + 'marzh', + 'mat', + 'mañ', + 'me', + 'memes', + 'memestra', + 'merkapl', + 'mersi', + 'mes', + 'mesk', + 'met', + 'meur', + 'mil', + 'minimal', + 'moan', + 'moaniaat', + 'mod', + 'mont', + 'mout', + 'mui', + 'muiañ', + "muioc'h", + 'n', + "n'", + 'n:', + 'na', + 'nag', + 'naontek', + 'naturel', + 'nav', + 'navet', + 'ne', + 'nebeudig', + 'nebeut', + 'nebeutañ', + "nebeutoc'h", + 'neketa', + "nemedoc'h", + 'nemedomp', + 'nemedon', + 'nemedor', + 'nemedout', + 'nemet', + 'nemetañ', + 'nemete', + 'nemeti', + 'nemeto', + 'nemeur', + "neoac'h", + 'nepell', + 'nerzh', + 'nes', + 'neseser', + 'netra', + 'neubeudoù', + 'neuhe', + 'neuze', + 'nevez', + 'newazh', + 'nez', + 'ni', + 'nikun', + 'niverus', + 'nul', + 'o', + 'o:', + 'oa', + "oac'h", + 'oad', + 'oamp', + 'oan', + 'oant', + 'oar', + 'oas', + 'ober', + "oc'h", + "oc'ho", + "oc'hola", + "oc'hpenn", + 'oh', + 'ohe', + 'ollé', + 'olole', + 'olé', + 'omp', + 'on', + 'ordin', + 'ordinal', + "ouejoc'h", + 'ouejod', + 'ouejomp', + 'ouejont', + 'ouejout', + 'ouek', + 'ouezas', + 'ouezi', + 'ouezimp', + 'ouezin', + 'ouezint', + 'ouezis', + 'ouezo', + "ouezoc'h", + 'ouezor', + 'ouf', + 'oufe', + "oufec'h", + 'oufed', + 'oufemp', + 'oufen', + 'oufent', + 'oufes', + 'ouie', + "ouiec'h", + 'ouied', + 'ouiemp', + 'ouien', + 'ouient', + 'ouies', + 'ouije', + "ouijec'h", + 'ouijed', + 'ouijemp', + 'ouijen', + 'ouijent', + 'ouijes', + 'out', + 'outañ', + 'outi', + 'outo', + 'ouzer', + 'ouzh', + 'ouzhin', + 'ouzhit', + "ouzhoc'h", + 'ouzhomp', + 'ouzhor', + 'ouzhpenn', + 'ouzhpennik', + "ouzoc'h", + 'ouzomp', + 'ouzon', + 'ouzont', + 'ouzout', + "p'", + 'p:', + 'pa', + 'pad', + 'padal', + 'paf', + 'pan', + "panevedeoc'h", + 'panevedo', + 'panevedomp', + 'panevedon', + 'panevedout', + 'panevet', + 'panevetañ', + 'paneveti', + 'pas', + 'paseet', + 'pe', + 'peadra', + 'peder', + 'pedervet', + 'pedervetvet', + 'pefe', + 'pegeit', + 'pegement', + 'pegen', + 'pegiz', + 'pegoulz', + 'pehini', + "pelec'h", + 'pell', + 'pemod', + 'pemp', + 'pempved', + 'pemzek', + 'penaos', + 'penn', + 'peogwir', + 'peotramant', + 'pep', + 'perak', + "perc'hennañ", + 'pergen', + 'permetiñ', + 'peseurt', + 'pet', + 'petiaoul', + 'petoare', + 'petra', + 'peur', + 'peurgetket', + 'peurheñvel', + 'peurliesañ', + 'peurvuiañ', + 'peus', + 'peustost', + 'peuz', + 'pevar', + 'pevare', + 'pevarevet', + 'pevarzek', + 'pez', + 'peze', + 'pezh', + 'pff', + 'pfft', + 'pfut', + 'picher', + 'pif', + 'pife', + 'pign', + 'pije', + 'pikol', + 'pitiaoul', + 'piv', + 'plaouf', + 'plok', + 'plouf', + 'po', + 'poa', + 'poelladus', + 'pof', + 'pok', + 'posupl', + 'pouah', + "pourc'henn", + 'prest', + 'prestik', + 'prim', + 'prin', + 'provostapl', + 'pst', + 'pu', + 'pur', + 'r:', + 'ra', + 'rae', + "raec'h", + 'raed', + 'raemp', + 'raen', + 'raent', + 'raes', + 'rafe', + "rafec'h", + 'rafed', + 'rafemp', + 'rafen', + 'rafent', + 'rafes', + 'rag', + 'raimp', + 'raint', + 'raio', + 'raje', + "rajec'h", + 'rajed', + 'rajemp', + 'rajen', + 'rajent', + 'rajes', + 'rak', + 'ral', + 'ran', + 'rankout', + 'raok', + 'razh', + 're', + 'reas', + 'reer', + 'regennoù', + 'reiñ', + "rejoc'h", + 'rejod', + 'rejomp', + 'rejont', + 'rejout', + 'rener', + 'rentañ', + "reoc'h", + 'reomp', + 'reont', + 'reor', + 'reot', + 'resis', + 'ret', + 'reve', + 'rez', + 'ri', + 'rik', + 'rin', + 'ris', + 'rit', + 'rouez', + 's:', + "sac'h", + 'sant', + 'sav', + 'sañset', + 'se', + 'sed', + 'seitek', + 'seizh', + 'seizhvet', + 'sell', + 'sellit', + 'ser', + 'setu', + 'seul', + 'seurt', + 'siwazh', + 'skignañ', + 'skoaz', + 'skouer', + 'sort', + 'souden', + 'souvitañ', + 'soñj', + 'speriañ', + 'spririñ', + 'stad', + 'stlabezañ', + 'stop', + 'stranañ', + 'strewiñ', + 'strishaat', + 'stumm', + 'sujed', + 'surtoud', + 't:', + 'ta', + 'taer', + 'tailh', + 'tak', + 'tal', + 'talvoudegezh', + 'tamm', + 'tanav', + 'taol', + 'te', + 'techet', + 'teir', + 'teirvet', + 'telt', + 'teltenn', + 'teus', + 'teut', + 'teuteu', + 'ti', + 'tik', + 'toa', + 'tok', + 'tost', + 'tostig', + 'toud', + 'touesk', + 'touez', + 'toull', + 'tra', + 'trantenn', + 'traoñ', + "trawalc'h", + 'tre', + 'trede', + 'tregont', + 'tremenet', + 'tri', + 'trivet', + "triwec'h", + 'trizek', + 'tro', + 'trugarez', + 'trumm', + 'tsoin', + 'tsouin', + 'tu', + 'tud', + 'u:', + 'ugent', + 'uhel', + 'uhelañ', + 'ul', + 'un', + 'unan', + 'unanez', + 'unanig', + 'unnek', + 'unnekvet', + 'ur', + 'urzh', + 'us', + 'v:', + 'va', + 'vale', + 'van', + 'vare', + 'vat', + 'vefe', + "vefec'h", + 'vefed', + 'vefemp', + 'vefen', + 'vefent', + 'vefes', + 'vesk', + 'vete', + 'vez', + 'vezan', + 'vezañ', + 'veze', + "vezec'h", + 'vezed', + 'vezemp', + 'vezen', + 'vezent', + 'vezer', + 'vezes', + 'vezez', + 'vezit', + 'vezomp', + 'vezont', + 'vi', + 'vihan', + 'vihanañ', + 'vije', + "vijec'h", + 'vijed', + 'vijemp', + 'vijen', + 'vijent', + 'vijes', + 'viken', + 'vimp', + 'vin', + 'vint', + 'vior', + 'viot', + 'virviken', + 'viskoazh', + 'vlan', + 'vlaou', + 'vo', + 'vod', + 'voe', + "voec'h", + 'voed', + 'voemp', + 'voen', + 'voent', + 'voes', + 'vont', + 'vostapl', + "vrac'h", + 'vrasañ', + 'vremañ', + 'w:', + "walc'h", + 'war', + 'warnañ', + 'warni', + 'warno', + "warnoc'h", + 'warnomp', + 'warnon', + 'warnor', + 'warnout', + 'wazh', + 'wech', + 'wechoù', + 'well', + 'y:', + 'you', + 'youadenn', + "youc'hadenn", + "youc'hou", + 'z:', + 'za', + 'zan', + 'zaw', + 'zeu', + 'zi', + 'ziar', + 'zigarez', + 'ziget', + 'zindan', + "zioc'h", + 'ziouzh', + 'zirak', + 'zivout', + 'ziwar', + 'ziwezhañ', + 'zo', + 'zoken', + "zokenoc'h", + 'zouesk', + 'zouez', + 'zro', + 'zu', + ], + bg: [ + 'а', + 'автентичен', + 'аз', + 'ако', + 'ала', + 'бе', + 'без', + 'беше', + 'би', + 'бивш', + 'бивша', + 'бившо', + 'бил', + 'била', + 'били', + 'било', + 'благодаря', + 'близо', + 'бъдат', + 'бъде', + 'бяха', + 'в', + 'вас', + 'ваш', + 'ваша', + 'вероятно', + 'вече', + 'взема', + 'ви', + 'вие', + 'винаги', + 'внимава', + 'време', + 'все', + 'всеки', + 'всички', + 'всичко', + 'всяка', + 'във', + 'въпреки', + 'върху', + 'г', + 'ги', + 'главен', + 'главна', + 'главно', + 'глас', + 'го', + 'година', + 'години', + 'годишен', + 'д', + 'да', + 'дали', + 'два', + 'двама', + 'двамата', + 'две', + 'двете', + 'ден', + 'днес', + 'дни', + 'до', + 'добра', + 'добре', + 'добро', + 'добър', + 'докато', + 'докога', + 'дори', + 'досега', + 'доста', + 'друг', + 'друга', + 'други', + 'е', + 'евтин', + 'едва', + 'един', + 'една', + 'еднаква', + 'еднакви', + 'еднакъв', + 'едно', + 'екип', + 'ето', + 'живот', + 'за', + 'забавям', + 'зад', + 'заедно', + 'заради', + 'засега', + 'заспал', + 'затова', + 'защо', + 'защото', + 'и', + 'из', + 'или', + 'им', + 'има', + 'имат', + 'иска', + 'й', + 'каза', + 'как', + 'каква', + 'какво', + 'както', + 'какъв', + 'като', + 'кога', + 'когато', + 'което', + 'които', + 'кой', + 'който', + 'колко', + 'която', + 'къде', + 'където', + 'към', + 'лесен', + 'лесно', + 'ли', + 'лош', + 'м', + 'май', + 'малко', + 'ме', + 'между', + 'мек', + 'мен', + 'месец', + 'ми', + 'много', + 'мнозина', + 'мога', + 'могат', + 'може', + 'мокър', + 'моля', + 'момента', + 'му', + 'н', + 'на', + 'над', + 'назад', + 'най', + 'направи', + 'напред', + 'например', + 'нас', + 'не', + 'него', + 'нещо', + 'нея', + 'ни', + 'ние', + 'никой', + 'нито', + 'нищо', + 'но', + 'нов', + 'нова', + 'нови', + 'новина', + 'някои', + 'някой', + 'няколко', + 'няма', + 'обаче', + 'около', + 'освен', + 'особено', + 'от', + 'отгоре', + 'отново', + 'още', + 'пак', + 'по', + 'повече', + 'повечето', + 'под', + 'поне', + 'поради', + 'после', + 'почти', + 'прави', + 'пред', + 'преди', + 'през', + 'при', + 'пък', + 'първата', + 'първи', + 'първо', + 'пъти', + 'равен', + 'равна', + 'с', + 'са', + 'сам', + 'само', + 'се', + 'сега', + 'си', + 'син', + 'скоро', + 'след', + 'следващ', + 'сме', + 'смях', + 'според', + 'сред', + 'срещу', + 'сте', + 'съм', + 'със', + 'също', + 'т', + 'т.н.', + 'тази', + 'така', + 'такива', + 'такъв', + 'там', + 'твой', + 'те', + 'тези', + 'ти', + 'то', + 'това', + 'тогава', + 'този', + 'той', + 'толкова', + 'точно', + 'три', + 'трябва', + 'тук', + 'тъй', + 'тя', + 'тях', + 'у', + 'утре', + 'харесва', + 'хиляди', + 'ч', + 'часа', + 'че', + 'често', + 'чрез', + 'ще', + 'щом', + 'юмрук', + 'я', + 'як', + ], + ca: [ + 'a', + 'abans', + 'ací', + 'ah', + 'així', + 'això', + 'al', + 'aleshores', + 'algun', + 'alguna', + 'algunes', + 'alguns', + 'alhora', + 'allà', + 'allí', + 'allò', + 'als', + 'altra', + 'altre', + 'altres', + 'amb', + 'ambdues', + 'ambdós', + 'anar', + 'ans', + 'apa', + 'aquell', + 'aquella', + 'aquelles', + 'aquells', + 'aquest', + 'aquesta', + 'aquestes', + 'aquests', + 'aquí', + 'baix', + 'bastant', + 'bé', + 'cada', + 'cadascuna', + 'cadascunes', + 'cadascuns', + 'cadascú', + 'com', + 'consegueixo', + 'conseguim', + 'conseguir', + 'consigueix', + 'consigueixen', + 'consigueixes', + 'contra', + "d'un", + "d'una", + "d'unes", + "d'uns", + 'dalt', + 'de', + 'del', + 'dels', + 'des', + 'des de', + 'després', + 'dins', + 'dintre', + 'donat', + 'doncs', + 'durant', + 'e', + 'eh', + 'el', + 'elles', + 'ells', + 'els', + 'em', + 'en', + 'encara', + 'ens', + 'entre', + 'era', + 'erem', + 'eren', + 'eres', + 'es', + 'esta', + 'estan', + 'estat', + 'estava', + 'estaven', + 'estem', + 'esteu', + 'estic', + 'està', + 'estàvem', + 'estàveu', + 'et', + 'etc', + 'ets', + 'fa', + 'faig', + 'fan', + 'fas', + 'fem', + 'fer', + 'feu', + 'fi', + 'fins', + 'fora', + 'gairebé', + 'ha', + 'han', + 'has', + 'haver', + 'havia', + 'he', + 'hem', + 'heu', + 'hi', + 'ho', + 'i', + 'igual', + 'iguals', + 'inclòs', + 'ja', + 'jo', + "l'hi", + 'la', + 'les', + 'li', + "li'n", + 'llarg', + 'llavors', + "m'he", + 'ma', + 'mal', + 'malgrat', + 'mateix', + 'mateixa', + 'mateixes', + 'mateixos', + 'me', + 'mentre', + 'meu', + 'meus', + 'meva', + 'meves', + 'mode', + 'molt', + 'molta', + 'moltes', + 'molts', + 'mon', + 'mons', + 'més', + "n'he", + "n'hi", + 'ne', + 'ni', + 'no', + 'nogensmenys', + 'només', + 'nosaltres', + 'nostra', + 'nostre', + 'nostres', + 'o', + 'oh', + 'oi', + 'on', + 'pas', + 'pel', + 'pels', + 'per', + 'per que', + 'perquè', + 'però', + 'poc', + 'poca', + 'pocs', + 'podem', + 'poden', + 'poder', + 'podeu', + 'poques', + 'potser', + 'primer', + 'propi', + 'puc', + 'qual', + 'quals', + 'quan', + 'quant', + 'que', + 'quelcom', + 'qui', + 'quin', + 'quina', + 'quines', + 'quins', + 'què', + "s'ha", + "s'han", + 'sa', + 'sabem', + 'saben', + 'saber', + 'sabeu', + 'sap', + 'saps', + 'semblant', + 'semblants', + 'sense', + 'ser', + 'ses', + 'seu', + 'seus', + 'seva', + 'seves', + 'si', + 'sobre', + 'sobretot', + 'soc', + 'solament', + 'sols', + 'som', + 'son', + 'sons', + 'sota', + 'sou', + 'sóc', + 'són', + "t'ha", + "t'han", + "t'he", + 'ta', + 'tal', + 'també', + 'tampoc', + 'tan', + 'tant', + 'tanta', + 'tantes', + 'te', + 'tene', + 'tenim', + 'tenir', + 'teniu', + 'teu', + 'teus', + 'teva', + 'teves', + 'tinc', + 'ton', + 'tons', + 'tot', + 'tota', + 'totes', + 'tots', + 'un', + 'una', + 'unes', + 'uns', + 'us', + 'va', + 'vaig', + 'vam', + 'van', + 'vas', + 'veu', + 'vosaltres', + 'vostra', + 'vostre', + 'vostres', + 'érem', + 'éreu', + 'és', + 'éssent', + 'últim', + 'ús', + ], + zh: [ + '、', + '。', + '〈', + '〉', + '《', + '》', + '一', + '一个', + '一些', + '一何', + '一切', + '一则', + '一方面', + '一旦', + '一来', + '一样', + '一种', + '一般', + '一转眼', + '七', + '万一', + '三', + '上', + '上下', + '下', + '不', + '不仅', + '不但', + '不光', + '不单', + '不只', + '不外乎', + '不如', + '不妨', + '不尽', + '不尽然', + '不得', + '不怕', + '不惟', + '不成', + '不拘', + '不料', + '不是', + '不比', + '不然', + '不特', + '不独', + '不管', + '不至于', + '不若', + '不论', + '不过', + '不问', + '与', + '与其', + '与其说', + '与否', + '与此同时', + '且', + '且不说', + '且说', + '两者', + '个', + '个别', + '中', + '临', + '为', + '为了', + '为什么', + '为何', + '为止', + '为此', + '为着', + '乃', + '乃至', + '乃至于', + '么', + '之', + '之一', + '之所以', + '之类', + '乌乎', + '乎', + '乘', + '九', + '也', + '也好', + '也罢', + '了', + '二', + '二来', + '于', + '于是', + '于是乎', + '云云', + '云尔', + '五', + '些', + '亦', + '人', + '人们', + '人家', + '什', + '什么', + '什么样', + '今', + '介于', + '仍', + '仍旧', + '从', + '从此', + '从而', + '他', + '他人', + '他们', + '他们们', + '以', + '以上', + '以为', + '以便', + '以免', + '以及', + '以故', + '以期', + '以来', + '以至', + '以至于', + '以致', + '们', + '任', + '任何', + '任凭', + '会', + '似的', + '但', + '但凡', + '但是', + '何', + '何以', + '何况', + '何处', + '何时', + '余外', + '作为', + '你', + '你们', + '使', + '使得', + '例如', + '依', + '依据', + '依照', + '便于', + '俺', + '俺们', + '倘', + '倘使', + '倘或', + '倘然', + '倘若', + '借', + '借傥然', + '假使', + '假如', + '假若', + '做', + '像', + '儿', + '先不先', + '光', + '光是', + '全体', + '全部', + '八', + '六', + '兮', + '共', + '关于', + '关于具体地说', + '其', + '其一', + '其中', + '其二', + '其他', + '其余', + '其它', + '其次', + '具体地说', + '具体说来', + '兼之', + '内', + '再', + '再其次', + '再则', + '再有', + '再者', + '再者说', + '再说', + '冒', + '冲', + '况且', + '几', + '几时', + '凡', + '凡是', + '凭', + '凭借', + '出于', + '出来', + '分', + '分别', + '则', + '则甚', + '别', + '别人', + '别处', + '别是', + '别的', + '别管', + '别说', + '到', + '前后', + '前此', + '前者', + '加之', + '加以', + '区', + '即', + '即令', + '即使', + '即便', + '即如', + '即或', + '即若', + '却', + '去', + '又', + '又及', + '及', + '及其', + '及至', + '反之', + '反而', + '反过来', + '反过来说', + '受到', + '另', + '另一方面', + '另外', + '另悉', + '只', + '只当', + '只怕', + '只是', + '只有', + '只消', + '只要', + '只限', + '叫', + '叮咚', + '可', + '可以', + '可是', + '可见', + '各', + '各个', + '各位', + '各种', + '各自', + '同', + '同时', + '后', + '后者', + '向', + '向使', + '向着', + '吓', + '吗', + '否则', + '吧', + '吧哒', + '含', + '吱', + '呀', + '呃', + '呕', + '呗', + '呜', + '呜呼', + '呢', + '呵', + '呵呵', + '呸', + '呼哧', + '咋', + '和', + '咚', + '咦', + '咧', + '咱', + '咱们', + '咳', + '哇', + '哈', + '哈哈', + '哉', + '哎', + '哎呀', + '哎哟', + '哗', + '哟', + '哦', + '哩', + '哪', + '哪个', + '哪些', + '哪儿', + '哪天', + '哪年', + '哪怕', + '哪样', + '哪边', + '哪里', + '哼', + '哼唷', + '唉', + '唯有', + '啊', + '啐', + '啥', + '啦', + '啪达', + '啷当', + '喂', + '喏', + '喔唷', + '喽', + '嗡', + '嗡嗡', + '嗬', + '嗯', + '嗳', + '嘎', + '嘎登', + '嘘', + '嘛', + '嘻', + '嘿', + '嘿嘿', + '四', + '因', + '因为', + '因了', + '因此', + '因着', + '因而', + '固然', + '在', + '在下', + '在于', + '地', + '基于', + '处在', + '多', + '多么', + '多少', + '大', + '大家', + '她', + '她们', + '好', + '如', + '如上', + '如上所述', + '如下', + '如何', + '如其', + '如同', + '如是', + '如果', + '如此', + '如若', + '始而', + '孰料', + '孰知', + '宁', + '宁可', + '宁愿', + '宁肯', + '它', + '它们', + '对', + '对于', + '对待', + '对方', + '对比', + '将', + '小', + '尔', + '尔后', + '尔尔', + '尚且', + '就', + '就是', + '就是了', + '就是说', + '就算', + '就要', + '尽', + '尽管', + '尽管如此', + '岂但', + '己', + '已', + '已矣', + '巴', + '巴巴', + '年', + '并', + '并且', + '庶乎', + '庶几', + '开外', + '开始', + '归', + '归齐', + '当', + '当地', + '当然', + '当着', + '彼', + '彼时', + '彼此', + '往', + '待', + '很', + '得', + '得了', + '怎', + '怎么', + '怎么办', + '怎么样', + '怎奈', + '怎样', + '总之', + '总的来看', + '总的来说', + '总的说来', + '总而言之', + '恰恰相反', + '您', + '惟其', + '慢说', + '我', + '我们', + '或', + '或则', + '或是', + '或曰', + '或者', + '截至', + '所', + '所以', + '所在', + '所幸', + '所有', + '才', + '才能', + '打', + '打从', + '把', + '抑或', + '拿', + '按', + '按照', + '换句话说', + '换言之', + '据', + '据此', + '接着', + '故', + '故此', + '故而', + '旁人', + '无', + '无宁', + '无论', + '既', + '既往', + '既是', + '既然', + '日', + '时', + '时候', + '是', + '是以', + '是的', + '更', + '曾', + '替', + '替代', + '最', + '月', + '有', + '有些', + '有关', + '有及', + '有时', + '有的', + '望', + '朝', + '朝着', + '本', + '本人', + '本地', + '本着', + '本身', + '来', + '来着', + '来自', + '来说', + '极了', + '果然', + '果真', + '某', + '某个', + '某些', + '某某', + '根据', + '欤', + '正值', + '正如', + '正巧', + '正是', + '此', + '此地', + '此处', + '此外', + '此时', + '此次', + '此间', + '毋宁', + '每', + '每当', + '比', + '比及', + '比如', + '比方', + '没奈何', + '沿', + '沿着', + '漫说', + '点', + '焉', + '然则', + '然后', + '然而', + '照', + '照着', + '犹且', + '犹自', + '甚且', + '甚么', + '甚或', + '甚而', + '甚至', + '甚至于', + '用', + '用来', + '由', + '由于', + '由是', + '由此', + '由此可见', + '的', + '的确', + '的话', + '直到', + '相对而言', + '省得', + '看', + '眨眼', + '着', + '着呢', + '矣', + '矣乎', + '矣哉', + '离', + '秒', + '称', + '竟而', + '第', + '等', + '等到', + '等等', + '简言之', + '管', + '类如', + '紧接着', + '纵', + '纵令', + '纵使', + '纵然', + '经', + '经过', + '结果', + '给', + '继之', + '继后', + '继而', + '综上所述', + '罢了', + '者', + '而', + '而且', + '而况', + '而后', + '而外', + '而已', + '而是', + '而言', + '能', + '能否', + '腾', + '自', + '自个儿', + '自从', + '自各儿', + '自后', + '自家', + '自己', + '自打', + '自身', + '至', + '至于', + '至今', + '至若', + '致', + '般的', + '若', + '若夫', + '若是', + '若果', + '若非', + '莫不然', + '莫如', + '莫若', + '虽', + '虽则', + '虽然', + '虽说', + '被', + '要', + '要不', + '要不是', + '要不然', + '要么', + '要是', + '譬喻', + '譬如', + '让', + '许多', + '论', + '设使', + '设或', + '设若', + '诚如', + '诚然', + '该', + '说', + '说来', + '请', + '诸', + '诸位', + '诸如', + '谁', + '谁人', + '谁料', + '谁知', + '贼死', + '赖以', + '赶', + '起', + '起见', + '趁', + '趁着', + '越是', + '距', + '跟', + '较', + '较之', + '边', + '过', + '还', + '还是', + '还有', + '还要', + '这', + '这一来', + '这个', + '这么', + '这么些', + '这么样', + '这么点儿', + '这些', + '这会儿', + '这儿', + '这就是说', + '这时', + '这样', + '这次', + '这般', + '这边', + '这里', + '进而', + '连', + '连同', + '逐步', + '通过', + '遵循', + '遵照', + '那', + '那个', + '那么', + '那么些', + '那么样', + '那些', + '那会儿', + '那儿', + '那时', + '那样', + '那般', + '那边', + '那里', + '都', + '鄙人', + '鉴于', + '针对', + '阿', + '除', + '除了', + '除外', + '除开', + '除此之外', + '除非', + '随', + '随后', + '随时', + '随着', + '难道说', + '零', + '非', + '非但', + '非徒', + '非特', + '非独', + '靠', + '顺', + '顺着', + '首先', + '︿', + '!', + '#', + '$', + '%', + '&', + '(', + ')', + '*', + '+', + ',', + '0', + '1', + '2', + '3', + '4', + '5', + '6', + '7', + '8', + '9', + ':', + ';', + '<', + '>', + '?', + '@', + '[', + ']', + '{', + '|', + '}', + '~', + '¥', + ], + hr: [ + 'a', + 'ako', + 'ali', + 'bi', + 'bih', + 'bila', + 'bili', + 'bilo', + 'bio', + 'bismo', + 'biste', + 'biti', + 'bumo', + 'da', + 'do', + 'duž', + 'ga', + 'hoće', + 'hoćemo', + 'hoćete', + 'hoćeš', + 'hoću', + 'i', + 'iako', + 'ih', + 'ili', + 'iz', + 'ja', + 'je', + 'jedna', + 'jedne', + 'jedno', + 'jer', + 'jesam', + 'jesi', + 'jesmo', + 'jest', + 'jeste', + 'jesu', + 'jim', + 'joj', + 'još', + 'ju', + 'kada', + 'kako', + 'kao', + 'koja', + 'koje', + 'koji', + 'kojima', + 'koju', + 'kroz', + 'li', + 'me', + 'mene', + 'meni', + 'mi', + 'mimo', + 'moj', + 'moja', + 'moje', + 'mu', + 'na', + 'nad', + 'nakon', + 'nam', + 'nama', + 'nas', + 'naš', + 'naša', + 'naše', + 'našeg', + 'ne', + 'nego', + 'neka', + 'neki', + 'nekog', + 'neku', + 'nema', + 'netko', + 'neće', + 'nećemo', + 'nećete', + 'nećeš', + 'neću', + 'nešto', + 'ni', + 'nije', + 'nikoga', + 'nikoje', + 'nikoju', + 'nisam', + 'nisi', + 'nismo', + 'niste', + 'nisu', + 'njega', + 'njegov', + 'njegova', + 'njegovo', + 'njemu', + 'njezin', + 'njezina', + 'njezino', + 'njih', + 'njihov', + 'njihova', + 'njihovo', + 'njim', + 'njima', + 'njoj', + 'nju', + 'no', + 'o', + 'od', + 'odmah', + 'on', + 'ona', + 'oni', + 'ono', + 'ova', + 'pa', + 'pak', + 'po', + 'pod', + 'pored', + 'prije', + 's', + 'sa', + 'sam', + 'samo', + 'se', + 'sebe', + 'sebi', + 'si', + 'smo', + 'ste', + 'su', + 'sve', + 'svi', + 'svog', + 'svoj', + 'svoja', + 'svoje', + 'svom', + 'ta', + 'tada', + 'taj', + 'tako', + 'te', + 'tebe', + 'tebi', + 'ti', + 'to', + 'toj', + 'tome', + 'tu', + 'tvoj', + 'tvoja', + 'tvoje', + 'u', + 'uz', + 'vam', + 'vama', + 'vas', + 'vaš', + 'vaša', + 'vaše', + 'već', + 'vi', + 'vrlo', + 'za', + 'zar', + 'će', + 'ćemo', + 'ćete', + 'ćeš', + 'ću', + 'što', + ], + cs: [ + 'a', + 'aby', + 'ahoj', + 'aj', + 'ale', + 'anebo', + 'ani', + 'aniž', + 'ano', + 'asi', + 'aspoň', + 'atd', + 'atp', + 'az', + 'ačkoli', + 'až', + 'bez', + 'beze', + 'blízko', + 'bohužel', + 'brzo', + 'bude', + 'budem', + 'budeme', + 'budes', + 'budete', + 'budeš', + 'budou', + 'budu', + 'by', + 'byl', + 'byla', + 'byli', + 'bylo', + 'byly', + 'bys', + 'byt', + 'být', + 'během', + 'chce', + 'chceme', + 'chcete', + 'chceš', + 'chci', + 'chtít', + 'chtějí', + "chut'", + 'chuti', + 'ci', + 'clanek', + 'clanku', + 'clanky', + 'co', + 'coz', + 'což', + 'cz', + 'daleko', + 'dalsi', + 'další', + 'den', + 'deset', + 'design', + 'devatenáct', + 'devět', + 'dnes', + 'do', + 'dobrý', + 'docela', + 'dva', + 'dvacet', + 'dvanáct', + 'dvě', + 'dál', + 'dále', + 'děkovat', + 'děkujeme', + 'děkuji', + 'email', + 'ho', + 'hodně', + 'i', + 'jak', + 'jakmile', + 'jako', + 'jakož', + 'jde', + 'je', + 'jeden', + 'jedenáct', + 'jedna', + 'jedno', + 'jednou', + 'jedou', + 'jeho', + 'jehož', + 'jej', + 'jeji', + 'jejich', + 'její', + 'jelikož', + 'jemu', + 'jen', + 'jenom', + 'jenž', + 'jeste', + 'jestli', + 'jestliže', + 'ještě', + 'jež', + 'ji', + 'jich', + 'jimi', + 'jinak', + 'jine', + 'jiné', + 'jiz', + 'již', + 'jsem', + 'jses', + 'jseš', + 'jsi', + 'jsme', + 'jsou', + 'jste', + 'já', + 'jí', + 'jím', + 'jíž', + 'jšte', + 'k', + 'kam', + 'každý', + 'kde', + 'kdo', + 'kdy', + 'kdyz', + 'když', + 'ke', + 'kolik', + 'kromě', + 'ktera', + 'ktere', + 'kteri', + 'kterou', + 'ktery', + 'která', + 'které', + 'který', + 'kteři', + 'kteří', + 'ku', + 'kvůli', + 'ma', + 'mají', + 'mate', + 'me', + 'mezi', + 'mi', + 'mit', + 'mne', + 'mnou', + 'mně', + 'moc', + 'mohl', + 'mohou', + 'moje', + 'moji', + 'možná', + 'muj', + 'musí', + 'muze', + 'my', + 'má', + 'málo', + 'mám', + 'máme', + 'máte', + 'máš', + 'mé', + 'mí', + 'mít', + 'mě', + 'můj', + 'může', + 'na', + 'nad', + 'nade', + 'nam', + 'napiste', + 'napište', + 'naproti', + 'nas', + 'nasi', + 'načež', + 'naše', + 'naši', + 'ne', + 'nebo', + 'nebyl', + 'nebyla', + 'nebyli', + 'nebyly', + 'nechť', + 'nedělají', + 'nedělá', + 'nedělám', + 'neděláme', + 'neděláte', + 'neděláš', + 'neg', + 'nejsi', + 'nejsou', + 'nemají', + 'nemáme', + 'nemáte', + 'neměl', + 'neni', + 'není', + 'nestačí', + 'nevadí', + 'nez', + 'než', + 'nic', + 'nich', + 'nimi', + 'nove', + 'novy', + 'nové', + 'nový', + 'nula', + 'ná', + 'nám', + 'námi', + 'nás', + 'náš', + 'ní', + 'ním', + 'ně', + 'něco', + 'nějak', + 'někde', + 'někdo', + 'němu', + 'němuž', + 'o', + 'od', + 'ode', + 'on', + 'ona', + 'oni', + 'ono', + 'ony', + 'osm', + 'osmnáct', + 'pak', + 'patnáct', + 'po', + 'pod', + 'podle', + 'pokud', + 'potom', + 'pouze', + 'pozdě', + 'pořád', + 'prave', + 'pravé', + 'pred', + 'pres', + 'pri', + 'pro', + 'proc', + 'prostě', + 'prosím', + 'proti', + 'proto', + 'protoze', + 'protože', + 'proč', + 'prvni', + 'první', + 'práve', + 'pta', + 'pět', + 'před', + 'přede', + 'přes', + 'přese', + 'při', + 'přičemž', + 're', + 'rovně', + 's', + 'se', + 'sedm', + 'sedmnáct', + 'si', + 'sice', + 'skoro', + 'smí', + 'smějí', + 'snad', + 'spolu', + 'sta', + 'sto', + 'strana', + 'sté', + 'sve', + 'svych', + 'svym', + 'svymi', + 'své', + 'svých', + 'svým', + 'svými', + 'svůj', + 'ta', + 'tady', + 'tak', + 'take', + 'takhle', + 'taky', + 'takze', + 'také', + 'takže', + 'tam', + 'tamhle', + 'tamhleto', + 'tamto', + 'tato', + 'te', + 'tebe', + 'tebou', + "ted'", + 'tedy', + 'tema', + 'ten', + 'tento', + 'teto', + 'ti', + 'tim', + 'timto', + 'tipy', + 'tisíc', + 'tisíce', + 'to', + 'tobě', + 'tohle', + 'toho', + 'tohoto', + 'tom', + 'tomto', + 'tomu', + 'tomuto', + 'toto', + 'trošku', + 'tu', + 'tuto', + 'tvoje', + 'tvá', + 'tvé', + 'tvůj', + 'ty', + 'tyto', + 'téma', + 'této', + 'tím', + 'tímto', + 'tě', + 'těm', + 'těma', + 'těmu', + 'třeba', + 'tři', + 'třináct', + 'u', + 'určitě', + 'uz', + 'už', + 'v', + 'vam', + 'vas', + 'vase', + 'vaše', + 'vaši', + 've', + 'vedle', + 'večer', + 'vice', + 'vlastně', + 'vsak', + 'vy', + 'vám', + 'vámi', + 'vás', + 'váš', + 'více', + 'však', + 'všechen', + 'všechno', + 'všichni', + 'vůbec', + 'vždy', + 'z', + 'za', + 'zatímco', + 'zač', + 'zda', + 'zde', + 'ze', + 'zpet', + 'zpravy', + 'zprávy', + 'zpět', + 'čau', + 'či', + 'článek', + 'článku', + 'články', + 'čtrnáct', + 'čtyři', + 'šest', + 'šestnáct', + 'že', + ], + da: [ + 'ad', + 'af', + 'aldrig', + 'alle', + 'alt', + 'anden', + 'andet', + 'andre', + 'at', + 'bare', + 'begge', + 'blev', + 'blive', + 'bliver', + 'da', + 'de', + 'dem', + 'den', + 'denne', + 'der', + 'deres', + 'det', + 'dette', + 'dig', + 'din', + 'dine', + 'disse', + 'dit', + 'dog', + 'du', + 'efter', + 'ej', + 'eller', + 'en', + 'end', + 'ene', + 'eneste', + 'enhver', + 'er', + 'et', + 'far', + 'fem', + 'fik', + 'fire', + 'flere', + 'fleste', + 'for', + 'fordi', + 'forrige', + 'fra', + 'få', + 'får', + 'før', + 'god', + 'godt', + 'ham', + 'han', + 'hans', + 'har', + 'havde', + 'have', + 'hej', + 'helt', + 'hende', + 'hendes', + 'her', + 'hos', + 'hun', + 'hvad', + 'hvem', + 'hver', + 'hvilken', + 'hvis', + 'hvor', + 'hvordan', + 'hvorfor', + 'hvornår', + 'i', + 'ikke', + 'ind', + 'ingen', + 'intet', + 'ja', + 'jeg', + 'jer', + 'jeres', + 'jo', + 'kan', + 'kom', + 'komme', + 'kommer', + 'kun', + 'kunne', + 'lad', + 'lav', + 'lidt', + 'lige', + 'lille', + 'man', + 'mand', + 'mange', + 'med', + 'meget', + 'men', + 'mens', + 'mere', + 'mig', + 'min', + 'mine', + 'mit', + 'mod', + 'må', + 'ned', + 'nej', + 'ni', + 'nogen', + 'noget', + 'nogle', + 'nu', + 'ny', + 'nyt', + 'når', + 'nær', + 'næste', + 'næsten', + 'og', + 'også', + 'okay', + 'om', + 'op', + 'os', + 'otte', + 'over', + 'på', + 'se', + 'seks', + 'selv', + 'ser', + 'ses', + 'sig', + 'sige', + 'sin', + 'sine', + 'sit', + 'skal', + 'skulle', + 'som', + 'stor', + 'store', + 'syv', + 'så', + 'sådan', + 'tag', + 'tage', + 'thi', + 'ti', + 'til', + 'to', + 'tre', + 'ud', + 'under', + 'var', + 'ved', + 'vi', + 'vil', + 'ville', + 'vor', + 'vores', + 'være', + 'været', + ], + nl: [ + 'aan', + 'aangaande', + 'aangezien', + 'achte', + 'achter', + 'achterna', + 'af', + 'afgelopen', + 'al', + 'aldaar', + 'aldus', + 'alhoewel', + 'alias', + 'alle', + 'allebei', + 'alleen', + 'alles', + 'als', + 'alsnog', + 'altijd', + 'altoos', + 'ander', + 'andere', + 'anders', + 'anderszins', + 'beetje', + 'behalve', + 'behoudens', + 'beide', + 'beiden', + 'ben', + 'beneden', + 'bent', + 'bepaald', + 'betreffende', + 'bij', + 'bijna', + 'bijv', + 'binnen', + 'binnenin', + 'blijkbaar', + 'blijken', + 'boven', + 'bovenal', + 'bovendien', + 'bovengenoemd', + 'bovenstaand', + 'bovenvermeld', + 'buiten', + 'bv', + 'daar', + 'daardoor', + 'daarheen', + 'daarin', + 'daarna', + 'daarnet', + 'daarom', + 'daarop', + 'daaruit', + 'daarvanlangs', + 'dan', + 'dat', + 'de', + 'deden', + 'deed', + 'der', + 'derde', + 'derhalve', + 'dertig', + 'deze', + 'dhr', + 'die', + 'dikwijls', + 'dit', + 'doch', + 'doe', + 'doen', + 'doet', + 'door', + 'doorgaand', + 'drie', + 'duizend', + 'dus', + 'echter', + 'een', + 'eens', + 'eer', + 'eerdat', + 'eerder', + 'eerlang', + 'eerst', + 'eerste', + 'eigen', + 'eigenlijk', + 'elk', + 'elke', + 'en', + 'enig', + 'enige', + 'enigszins', + 'enkel', + 'er', + 'erdoor', + 'erg', + 'ergens', + 'etc', + 'etcetera', + 'even', + 'eveneens', + 'evenwel', + 'gauw', + 'ge', + 'gedurende', + 'geen', + 'gehad', + 'gekund', + 'geleden', + 'gelijk', + 'gemoeten', + 'gemogen', + 'genoeg', + 'geweest', + 'gewoon', + 'gewoonweg', + 'haar', + 'haarzelf', + 'had', + 'hadden', + 'hare', + 'heb', + 'hebben', + 'hebt', + 'hedden', + 'heeft', + 'heel', + 'hem', + 'hemzelf', + 'hen', + 'het', + 'hetzelfde', + 'hier', + 'hierbeneden', + 'hierboven', + 'hierin', + 'hierna', + 'hierom', + 'hij', + 'hijzelf', + 'hoe', + 'hoewel', + 'honderd', + 'hun', + 'hunne', + 'ieder', + 'iedere', + 'iedereen', + 'iemand', + 'iets', + 'ik', + 'ikzelf', + 'in', + 'inderdaad', + 'inmiddels', + 'intussen', + 'inzake', + 'is', + 'ja', + 'je', + 'jezelf', + 'jij', + 'jijzelf', + 'jou', + 'jouw', + 'jouwe', + 'juist', + 'jullie', + 'kan', + 'klaar', + 'kon', + 'konden', + 'krachtens', + 'kun', + 'kunnen', + 'kunt', + 'laatst', + 'later', + 'liever', + 'lijken', + 'lijkt', + 'maak', + 'maakt', + 'maakte', + 'maakten', + 'maar', + 'mag', + 'maken', + 'me', + 'meer', + 'meest', + 'meestal', + 'men', + 'met', + 'mevr', + 'mezelf', + 'mij', + 'mijn', + 'mijnent', + 'mijner', + 'mijzelf', + 'minder', + 'miss', + 'misschien', + 'missen', + 'mits', + 'mocht', + 'mochten', + 'moest', + 'moesten', + 'moet', + 'moeten', + 'mogen', + 'mr', + 'mrs', + 'mw', + 'na', + 'naar', + 'nadat', + 'nam', + 'namelijk', + 'nee', + 'neem', + 'negen', + 'nemen', + 'nergens', + 'net', + 'niemand', + 'niet', + 'niets', + 'niks', + 'noch', + 'nochtans', + 'nog', + 'nogal', + 'nooit', + 'nu', + 'nv', + 'of', + 'ofschoon', + 'om', + 'omdat', + 'omhoog', + 'omlaag', + 'omstreeks', + 'omtrent', + 'omver', + 'ondanks', + 'onder', + 'ondertussen', + 'ongeveer', + 'ons', + 'onszelf', + 'onze', + 'onzeker', + 'ooit', + 'ook', + 'op', + 'opnieuw', + 'opzij', + 'over', + 'overal', + 'overeind', + 'overige', + 'overigens', + 'paar', + 'pas', + 'per', + 'precies', + 'recent', + 'redelijk', + 'reeds', + 'rond', + 'rondom', + 'samen', + 'sedert', + 'sinds', + 'sindsdien', + 'slechts', + 'sommige', + 'spoedig', + 'steeds', + 'tamelijk', + 'te', + 'tegen', + 'tegenover', + 'tenzij', + 'terwijl', + 'thans', + 'tien', + 'tiende', + 'tijdens', + 'tja', + 'toch', + 'toe', + 'toen', + 'toenmaals', + 'toenmalig', + 'tot', + 'totdat', + 'tussen', + 'twee', + 'tweede', + 'u', + 'uit', + 'uitgezonderd', + 'uw', + 'vaak', + 'vaakwat', + 'van', + 'vanaf', + 'vandaan', + 'vanuit', + 'vanwege', + 'veel', + 'veeleer', + 'veertig', + 'verder', + 'verscheidene', + 'verschillende', + 'vervolgens', + 'via', + 'vier', + 'vierde', + 'vijf', + 'vijfde', + 'vijftig', + 'vol', + 'volgend', + 'volgens', + 'voor', + 'vooraf', + 'vooral', + 'vooralsnog', + 'voorbij', + 'voordat', + 'voordezen', + 'voordien', + 'voorheen', + 'voorop', + 'voorts', + 'vooruit', + 'vrij', + 'vroeg', + 'waar', + 'waarom', + 'waarschijnlijk', + 'wanneer', + 'want', + 'waren', + 'was', + 'wat', + 'we', + 'wederom', + 'weer', + 'weg', + 'wegens', + 'weinig', + 'wel', + 'weldra', + 'welk', + 'welke', + 'werd', + 'werden', + 'werder', + 'wezen', + 'whatever', + 'wie', + 'wiens', + 'wier', + 'wij', + 'wijzelf', + 'wil', + 'wilden', + 'willen', + 'word', + 'worden', + 'wordt', + 'zal', + 'ze', + 'zei', + 'zeker', + 'zelf', + 'zelfde', + 'zelfs', + 'zes', + 'zeven', + 'zich', + 'zichzelf', + 'zij', + 'zijn', + 'zijne', + 'zijzelf', + 'zo', + 'zoals', + 'zodat', + 'zodra', + 'zonder', + 'zou', + 'zouden', + 'zowat', + 'zulk', + 'zulke', + 'zullen', + 'zult', + ], + en: [ + "'ll", + "'tis", + "'twas", + "'ve", + '10', + '39', + 'a', + "a's", + 'able', + 'ableabout', + 'about', + 'above', + 'abroad', + 'abst', + 'accordance', + 'according', + 'accordingly', + 'across', + 'act', + 'actually', + 'ad', + 'added', + 'adj', + 'adopted', + 'ae', + 'af', + 'affected', + 'affecting', + 'affects', + 'after', + 'afterwards', + 'ag', + 'again', + 'against', + 'ago', + 'ah', + 'ahead', + 'ai', + "ain't", + 'aint', + 'al', + 'all', + 'allow', + 'allows', + 'almost', + 'alone', + 'along', + 'alongside', + 'already', + 'also', + 'although', + 'always', + 'am', + 'amid', + 'amidst', + 'among', + 'amongst', + 'amoungst', + 'amount', + 'an', + 'and', + 'announce', + 'another', + 'any', + 'anybody', + 'anyhow', + 'anymore', + 'anyone', + 'anything', + 'anyway', + 'anyways', + 'anywhere', + 'ao', + 'apart', + 'apparently', + 'appear', + 'appreciate', + 'appropriate', + 'approximately', + 'aq', + 'ar', + 'are', + 'area', + 'areas', + 'aren', + "aren't", + 'arent', + 'arise', + 'around', + 'arpa', + 'as', + 'aside', + 'ask', + 'asked', + 'asking', + 'asks', + 'associated', + 'at', + 'au', + 'auth', + 'available', + 'aw', + 'away', + 'awfully', + 'az', + 'b', + 'ba', + 'back', + 'backed', + 'backing', + 'backs', + 'backward', + 'backwards', + 'bb', + 'bd', + 'be', + 'became', + 'because', + 'become', + 'becomes', + 'becoming', + 'been', + 'before', + 'beforehand', + 'began', + 'begin', + 'beginning', + 'beginnings', + 'begins', + 'behind', + 'being', + 'beings', + 'believe', + 'below', + 'beside', + 'besides', + 'best', + 'better', + 'between', + 'beyond', + 'bf', + 'bg', + 'bh', + 'bi', + 'big', + 'bill', + 'billion', + 'biol', + 'bj', + 'bm', + 'bn', + 'bo', + 'both', + 'bottom', + 'br', + 'brief', + 'briefly', + 'bs', + 'bt', + 'but', + 'buy', + 'bv', + 'bw', + 'by', + 'bz', + 'c', + "c'mon", + "c's", + 'ca', + 'call', + 'came', + 'can', + "can't", + 'cannot', + 'cant', + 'caption', + 'case', + 'cases', + 'cause', + 'causes', + 'cc', + 'cd', + 'certain', + 'certainly', + 'cf', + 'cg', + 'ch', + 'changes', + 'ci', + 'ck', + 'cl', + 'clear', + 'clearly', + 'click', + 'cm', + 'cmon', + 'cn', + 'co', + 'co.', + 'com', + 'come', + 'comes', + 'computer', + 'con', + 'concerning', + 'consequently', + 'consider', + 'considering', + 'contain', + 'containing', + 'contains', + 'copy', + 'corresponding', + 'could', + "could've", + 'couldn', + "couldn't", + 'couldnt', + 'course', + 'cr', + 'cry', + 'cs', + 'cu', + 'currently', + 'cv', + 'cx', + 'cy', + 'cz', + 'd', + 'dare', + "daren't", + 'darent', + 'date', + 'de', + 'dear', + 'definitely', + 'describe', + 'described', + 'despite', + 'detail', + 'did', + 'didn', + "didn't", + 'didnt', + 'differ', + 'different', + 'differently', + 'directly', + 'dj', + 'dk', + 'dm', + 'do', + 'does', + 'doesn', + "doesn't", + 'doesnt', + 'doing', + 'don', + "don't", + 'done', + 'dont', + 'doubtful', + 'down', + 'downed', + 'downing', + 'downs', + 'downwards', + 'due', + 'during', + 'dz', + 'e', + 'each', + 'early', + 'ec', + 'ed', + 'edu', + 'ee', + 'effect', + 'eg', + 'eh', + 'eight', + 'eighty', + 'either', + 'eleven', + 'else', + 'elsewhere', + 'empty', + 'end', + 'ended', + 'ending', + 'ends', + 'enough', + 'entirely', + 'er', + 'es', + 'especially', + 'et', + 'et-al', + 'etc', + 'even', + 'evenly', + 'ever', + 'evermore', + 'every', + 'everybody', + 'everyone', + 'everything', + 'everywhere', + 'ex', + 'exactly', + 'example', + 'except', + 'f', + 'face', + 'faces', + 'fact', + 'facts', + 'fairly', + 'far', + 'farther', + 'felt', + 'few', + 'fewer', + 'ff', + 'fi', + 'fifteen', + 'fifth', + 'fifty', + 'fify', + 'fill', + 'find', + 'finds', + 'fire', + 'first', + 'five', + 'fix', + 'fj', + 'fk', + 'fm', + 'fo', + 'followed', + 'following', + 'follows', + 'for', + 'forever', + 'former', + 'formerly', + 'forth', + 'forty', + 'forward', + 'found', + 'four', + 'fr', + 'free', + 'from', + 'front', + 'full', + 'fully', + 'further', + 'furthered', + 'furthering', + 'furthermore', + 'furthers', + 'fx', + 'g', + 'ga', + 'gave', + 'gb', + 'gd', + 'ge', + 'general', + 'generally', + 'get', + 'gets', + 'getting', + 'gf', + 'gg', + 'gh', + 'gi', + 'give', + 'given', + 'gives', + 'giving', + 'gl', + 'gm', + 'gmt', + 'gn', + 'go', + 'goes', + 'going', + 'gone', + 'good', + 'goods', + 'got', + 'gotten', + 'gov', + 'gp', + 'gq', + 'gr', + 'great', + 'greater', + 'greatest', + 'greetings', + 'group', + 'grouped', + 'grouping', + 'groups', + 'gs', + 'gt', + 'gu', + 'gw', + 'gy', + 'h', + 'had', + "hadn't", + 'hadnt', + 'half', + 'happens', + 'hardly', + 'has', + 'hasn', + "hasn't", + 'hasnt', + 'have', + 'haven', + "haven't", + 'havent', + 'having', + 'he', + "he'd", + "he'll", + "he's", + 'hed', + 'hell', + 'hello', + 'help', + 'hence', + 'her', + 'here', + "here's", + 'hereafter', + 'hereby', + 'herein', + 'heres', + 'hereupon', + 'hers', + 'herself', + 'herse”', + 'hes', + 'hi', + 'hid', + 'high', + 'higher', + 'highest', + 'him', + 'himself', + 'himse”', + 'his', + 'hither', + 'hk', + 'hm', + 'hn', + 'home', + 'homepage', + 'hopefully', + 'how', + "how'd", + "how'll", + "how's", + 'howbeit', + 'however', + 'hr', + 'ht', + 'htm', + 'html', + 'http', + 'hu', + 'hundred', + 'i', + "i'd", + "i'll", + "i'm", + "i've", + 'i.e.', + 'id', + 'ie', + 'if', + 'ignored', + 'ii', + 'il', + 'ill', + 'im', + 'immediate', + 'immediately', + 'importance', + 'important', + 'in', + 'inasmuch', + 'inc', + 'inc.', + 'indeed', + 'index', + 'indicate', + 'indicated', + 'indicates', + 'information', + 'inner', + 'inside', + 'insofar', + 'instead', + 'int', + 'interest', + 'interested', + 'interesting', + 'interests', + 'into', + 'invention', + 'inward', + 'io', + 'iq', + 'ir', + 'is', + 'isn', + "isn't", + 'isnt', + 'it', + "it'd", + "it'll", + "it's", + 'itd', + 'itll', + 'its', + 'itself', + 'itse”', + 'ive', + 'j', + 'je', + 'jm', + 'jo', + 'join', + 'jp', + 'just', + 'k', + 'ke', + 'keep', + 'keeps', + 'kept', + 'keys', + 'kg', + 'kh', + 'ki', + 'kind', + 'km', + 'kn', + 'knew', + 'know', + 'known', + 'knows', + 'kp', + 'kr', + 'kw', + 'ky', + 'kz', + 'l', + 'la', + 'large', + 'largely', + 'last', + 'lately', + 'later', + 'latest', + 'latter', + 'latterly', + 'lb', + 'lc', + 'least', + 'length', + 'less', + 'lest', + 'let', + "let's", + 'lets', + 'li', + 'like', + 'liked', + 'likely', + 'likewise', + 'line', + 'little', + 'lk', + 'll', + 'long', + 'longer', + 'longest', + 'look', + 'looking', + 'looks', + 'low', + 'lower', + 'lr', + 'ls', + 'lt', + 'ltd', + 'lu', + 'lv', + 'ly', + 'm', + 'ma', + 'made', + 'mainly', + 'make', + 'makes', + 'making', + 'man', + 'many', + 'may', + 'maybe', + "mayn't", + 'maynt', + 'mc', + 'md', + 'me', + 'mean', + 'means', + 'meantime', + 'meanwhile', + 'member', + 'members', + 'men', + 'merely', + 'mg', + 'mh', + 'microsoft', + 'might', + "might've", + "mightn't", + 'mightnt', + 'mil', + 'mill', + 'million', + 'mine', + 'minus', + 'miss', + 'mk', + 'ml', + 'mm', + 'mn', + 'mo', + 'more', + 'moreover', + 'most', + 'mostly', + 'move', + 'mp', + 'mq', + 'mr', + 'mrs', + 'ms', + 'msie', + 'mt', + 'mu', + 'much', + 'mug', + 'must', + "must've", + "mustn't", + 'mustnt', + 'mv', + 'mw', + 'mx', + 'my', + 'myself', + 'myse”', + 'mz', + 'n', + 'na', + 'name', + 'namely', + 'nay', + 'nc', + 'nd', + 'ne', + 'near', + 'nearly', + 'necessarily', + 'necessary', + 'need', + 'needed', + 'needing', + "needn't", + 'neednt', + 'needs', + 'neither', + 'net', + 'netscape', + 'never', + 'neverf', + 'neverless', + 'nevertheless', + 'new', + 'newer', + 'newest', + 'next', + 'nf', + 'ng', + 'ni', + 'nine', + 'ninety', + 'nl', + 'no', + 'no-one', + 'nobody', + 'non', + 'none', + 'nonetheless', + 'noone', + 'nor', + 'normally', + 'nos', + 'not', + 'noted', + 'nothing', + 'notwithstanding', + 'novel', + 'now', + 'nowhere', + 'np', + 'nr', + 'nu', + 'null', + 'number', + 'numbers', + 'nz', + 'o', + 'obtain', + 'obtained', + 'obviously', + 'of', + 'off', + 'often', + 'oh', + 'ok', + 'okay', + 'old', + 'older', + 'oldest', + 'om', + 'omitted', + 'on', + 'once', + 'one', + "one's", + 'ones', + 'only', + 'onto', + 'open', + 'opened', + 'opening', + 'opens', + 'opposite', + 'or', + 'ord', + 'order', + 'ordered', + 'ordering', + 'orders', + 'org', + 'other', + 'others', + 'otherwise', + 'ought', + "oughtn't", + 'oughtnt', + 'our', + 'ours', + 'ourselves', + 'out', + 'outside', + 'over', + 'overall', + 'owing', + 'own', + 'p', + 'pa', + 'page', + 'pages', + 'part', + 'parted', + 'particular', + 'particularly', + 'parting', + 'parts', + 'past', + 'pe', + 'per', + 'perhaps', + 'pf', + 'pg', + 'ph', + 'pk', + 'pl', + 'place', + 'placed', + 'places', + 'please', + 'plus', + 'pm', + 'pmid', + 'pn', + 'point', + 'pointed', + 'pointing', + 'points', + 'poorly', + 'possible', + 'possibly', + 'potentially', + 'pp', + 'pr', + 'predominantly', + 'present', + 'presented', + 'presenting', + 'presents', + 'presumably', + 'previously', + 'primarily', + 'probably', + 'problem', + 'problems', + 'promptly', + 'proud', + 'provided', + 'provides', + 'pt', + 'put', + 'puts', + 'pw', + 'py', + 'q', + 'qa', + 'que', + 'quickly', + 'quite', + 'qv', + 'r', + 'ran', + 'rather', + 'rd', + 're', + 'readily', + 'really', + 'reasonably', + 'recent', + 'recently', + 'ref', + 'refs', + 'regarding', + 'regardless', + 'regards', + 'related', + 'relatively', + 'research', + 'reserved', + 'respectively', + 'resulted', + 'resulting', + 'results', + 'right', + 'ring', + 'ro', + 'room', + 'rooms', + 'round', + 'ru', + 'run', + 'rw', + 's', + 'sa', + 'said', + 'same', + 'saw', + 'say', + 'saying', + 'says', + 'sb', + 'sc', + 'sd', + 'se', + 'sec', + 'second', + 'secondly', + 'seconds', + 'section', + 'see', + 'seeing', + 'seem', + 'seemed', + 'seeming', + 'seems', + 'seen', + 'sees', + 'self', + 'selves', + 'sensible', + 'sent', + 'serious', + 'seriously', + 'seven', + 'seventy', + 'several', + 'sg', + 'sh', + 'shall', + "shan't", + 'shant', + 'she', + "she'd", + "she'll", + "she's", + 'shed', + 'shell', + 'shes', + 'should', + "should've", + 'shouldn', + "shouldn't", + 'shouldnt', + 'show', + 'showed', + 'showing', + 'shown', + 'showns', + 'shows', + 'si', + 'side', + 'sides', + 'significant', + 'significantly', + 'similar', + 'similarly', + 'since', + 'sincere', + 'site', + 'six', + 'sixty', + 'sj', + 'sk', + 'sl', + 'slightly', + 'sm', + 'small', + 'smaller', + 'smallest', + 'sn', + 'so', + 'some', + 'somebody', + 'someday', + 'somehow', + 'someone', + 'somethan', + 'something', + 'sometime', + 'sometimes', + 'somewhat', + 'somewhere', + 'soon', + 'sorry', + 'specifically', + 'specified', + 'specify', + 'specifying', + 'sr', + 'st', + 'state', + 'states', + 'still', + 'stop', + 'strongly', + 'su', + 'sub', + 'substantially', + 'successfully', + 'such', + 'sufficiently', + 'suggest', + 'sup', + 'sure', + 'sv', + 'sy', + 'system', + 'sz', + 't', + "t's", + 'take', + 'taken', + 'taking', + 'tc', + 'td', + 'tell', + 'ten', + 'tends', + 'test', + 'text', + 'tf', + 'tg', + 'th', + 'than', + 'thank', + 'thanks', + 'thanx', + 'that', + "that'll", + "that's", + "that've", + 'thatll', + 'thats', + 'thatve', + 'the', + 'their', + 'theirs', + 'them', + 'themselves', + 'then', + 'thence', + 'there', + "there'd", + "there'll", + "there're", + "there's", + "there've", + 'thereafter', + 'thereby', + 'thered', + 'therefore', + 'therein', + 'therell', + 'thereof', + 'therere', + 'theres', + 'thereto', + 'thereupon', + 'thereve', + 'these', + 'they', + "they'd", + "they'll", + "they're", + "they've", + 'theyd', + 'theyll', + 'theyre', + 'theyve', + 'thick', + 'thin', + 'thing', + 'things', + 'think', + 'thinks', + 'third', + 'thirty', + 'this', + 'thorough', + 'thoroughly', + 'those', + 'thou', + 'though', + 'thoughh', + 'thought', + 'thoughts', + 'thousand', + 'three', + 'throug', + 'through', + 'throughout', + 'thru', + 'thus', + 'til', + 'till', + 'tip', + 'tis', + 'tj', + 'tk', + 'tm', + 'tn', + 'to', + 'today', + 'together', + 'too', + 'took', + 'top', + 'toward', + 'towards', + 'tp', + 'tr', + 'tried', + 'tries', + 'trillion', + 'truly', + 'try', + 'trying', + 'ts', + 'tt', + 'turn', + 'turned', + 'turning', + 'turns', + 'tv', + 'tw', + 'twas', + 'twelve', + 'twenty', + 'twice', + 'two', + 'tz', + 'u', + 'ua', + 'ug', + 'uk', + 'um', + 'un', + 'under', + 'underneath', + 'undoing', + 'unfortunately', + 'unless', + 'unlike', + 'unlikely', + 'until', + 'unto', + 'up', + 'upon', + 'ups', + 'upwards', + 'us', + 'use', + 'used', + 'useful', + 'usefully', + 'usefulness', + 'uses', + 'using', + 'usually', + 'uucp', + 'uy', + 'uz', + 'v', + 'va', + 'value', + 'various', + 'vc', + 've', + 'versus', + 'very', + 'vg', + 'vi', + 'via', + 'viz', + 'vn', + 'vol', + 'vols', + 'vs', + 'vu', + 'w', + 'want', + 'wanted', + 'wanting', + 'wants', + 'was', + 'wasn', + "wasn't", + 'wasnt', + 'way', + 'ways', + 'we', + "we'd", + "we'll", + "we're", + "we've", + 'web', + 'webpage', + 'website', + 'wed', + 'welcome', + 'well', + 'wells', + 'went', + 'were', + 'weren', + "weren't", + 'werent', + 'weve', + 'wf', + 'what', + "what'd", + "what'll", + "what's", + "what've", + 'whatever', + 'whatll', + 'whats', + 'whatve', + 'when', + "when'd", + "when'll", + "when's", + 'whence', + 'whenever', + 'where', + "where'd", + "where'll", + "where's", + 'whereafter', + 'whereas', + 'whereby', + 'wherein', + 'wheres', + 'whereupon', + 'wherever', + 'whether', + 'which', + 'whichever', + 'while', + 'whilst', + 'whim', + 'whither', + 'who', + "who'd", + "who'll", + "who's", + 'whod', + 'whoever', + 'whole', + 'wholl', + 'whom', + 'whomever', + 'whos', + 'whose', + 'why', + "why'd", + "why'll", + "why's", + 'widely', + 'width', + 'will', + 'willing', + 'wish', + 'with', + 'within', + 'without', + 'won', + "won't", + 'wonder', + 'wont', + 'words', + 'work', + 'worked', + 'working', + 'works', + 'world', + 'would', + "would've", + 'wouldn', + "wouldn't", + 'wouldnt', + 'ws', + 'www', + 'x', + 'y', + 'ye', + 'year', + 'years', + 'yes', + 'yet', + 'you', + "you'd", + "you'll", + "you're", + "you've", + 'youd', + 'youll', + 'young', + 'younger', + 'youngest', + 'your', + 'youre', + 'yours', + 'yourself', + 'yourselves', + 'youve', + 'yt', + 'yu', + 'z', + 'za', + 'zero', + 'zm', + 'zr', + ], + eo: [ + 'adiaŭ', + 'ajn', + 'al', + 'ankoraŭ', + 'antaŭ', + 'aŭ', + 'bonan', + 'bonvole', + 'bonvolu', + 'bv', + 'ci', + 'cia', + 'cian', + 'cin', + 'd-ro', + 'da', + 'de', + 'dek', + 'deka', + 'do', + "doktor'", + 'doktoro', + 'du', + 'dua', + 'dum', + 'eble', + 'ekz', + 'ekzemple', + 'en', + 'estas', + 'estis', + 'estos', + 'estu', + 'estus', + 'eĉ', + 'f-no', + 'feliĉan', + 'for', + 'fraŭlino', + 'ha', + 'havas', + 'havis', + 'havos', + 'havu', + 'havus', + 'he', + 'ho', + 'hu', + 'ili', + 'ilia', + 'ilian', + 'ilin', + 'inter', + 'io', + 'ion', + 'iu', + 'iujn', + 'iun', + 'ja', + 'jam', + 'je', + 'jes', + 'k', + 'kaj', + 'ke', + 'kio', + 'kion', + 'kiu', + 'kiujn', + 'kiun', + 'kvankam', + 'kvar', + 'kvara', + 'kvazaŭ', + 'kvin', + 'kvina', + 'la', + 'li', + 'lia', + 'lian', + 'lin', + 'malantaŭ', + 'male', + 'malgraŭ', + 'mem', + 'mi', + 'mia', + 'mian', + 'min', + 'minus', + 'naŭ', + 'naŭa', + 'ne', + 'nek', + 'nenio', + 'nenion', + 'neniu', + 'neniun', + 'nepre', + 'ni', + 'nia', + 'nian', + 'nin', + 'nu', + 'nun', + 'nur', + 'ok', + 'oka', + 'oni', + 'onia', + 'onian', + 'onin', + 'plej', + 'pli', + 'plu', + 'plus', + 'por', + 'post', + 'preter', + 's-no', + 's-ro', + 'se', + 'sed', + 'sep', + 'sepa', + 'ses', + 'sesa', + 'si', + 'sia', + 'sian', + 'sin', + "sinjor'", + 'sinjorino', + 'sinjoro', + 'sub', + 'super', + 'supren', + 'sur', + 'tamen', + 'tio', + 'tion', + 'tiu', + 'tiujn', + 'tiun', + 'tra', + 'tri', + 'tria', + 'tuj', + 'tute', + 'unu', + 'unua', + 've', + 'verŝajne', + 'vi', + 'via', + 'vian', + 'vin', + 'ĉi', + 'ĉio', + 'ĉion', + 'ĉiu', + 'ĉiujn', + 'ĉiun', + 'ĉu', + 'ĝi', + 'ĝia', + 'ĝian', + 'ĝin', + 'ĝis', + 'ĵus', + 'ŝi', + 'ŝia', + 'ŝin', + ], + et: [ + 'aga', + 'ei', + 'et', + 'ja', + 'jah', + 'kas', + 'kui', + 'kõik', + 'ma', + 'me', + 'mida', + 'midagi', + 'mind', + 'minu', + 'mis', + 'mu', + 'mul', + 'mulle', + 'nad', + 'nii', + 'oled', + 'olen', + 'oli', + 'oma', + 'on', + 'pole', + 'sa', + 'seda', + 'see', + 'selle', + 'siin', + 'siis', + 'ta', + 'te', + 'ära', + ], + fi: [ + 'aiemmin', + 'aika', + 'aikaa', + 'aikaan', + 'aikaisemmin', + 'aikaisin', + 'aikajen', + 'aikana', + 'aikoina', + 'aikoo', + 'aikovat', + 'aina', + 'ainakaan', + 'ainakin', + 'ainoa', + 'ainoat', + 'aiomme', + 'aion', + 'aiotte', + 'aist', + 'aivan', + 'ajan', + 'alas', + 'alemmas', + 'alkuisin', + 'alkuun', + 'alla', + 'alle', + 'aloitamme', + 'aloitan', + 'aloitat', + 'aloitatte', + 'aloitattivat', + 'aloitettava', + 'aloitettevaksi', + 'aloitettu', + 'aloitimme', + 'aloitin', + 'aloitit', + 'aloititte', + 'aloittaa', + 'aloittamatta', + 'aloitti', + 'aloittivat', + 'alta', + 'aluksi', + 'alussa', + 'alusta', + 'annettavaksi', + 'annetteva', + 'annettu', + 'ansiosta', + 'antaa', + 'antamatta', + 'antoi', + 'aoua', + 'apu', + 'asia', + 'asiaa', + 'asian', + 'asiasta', + 'asiat', + 'asioiden', + 'asioihin', + 'asioita', + 'asti', + 'avuksi', + 'avulla', + 'avun', + 'avutta', + 'edelle', + 'edelleen', + 'edellä', + 'edeltä', + 'edemmäs', + 'edes', + 'edessä', + 'edestä', + 'ehkä', + 'ei', + 'eikä', + 'eilen', + 'eivät', + 'eli', + 'ellei', + 'elleivät', + 'ellemme', + 'ellen', + 'ellet', + 'ellette', + 'emme', + 'en', + 'enemmän', + 'eniten', + 'ennen', + 'ensi', + 'ensimmäinen', + 'ensimmäiseksi', + 'ensimmäisen', + 'ensimmäisenä', + 'ensimmäiset', + 'ensimmäisiksi', + 'ensimmäisinä', + 'ensimmäisiä', + 'ensimmäistä', + 'ensin', + 'entinen', + 'entisen', + 'entisiä', + 'entisten', + 'entistä', + 'enää', + 'eri', + 'erittäin', + 'erityisesti', + 'eräiden', + 'eräs', + 'eräät', + 'esi', + 'esiin', + 'esillä', + 'esimerkiksi', + 'et', + 'eteen', + 'etenkin', + 'etessa', + 'ette', + 'ettei', + 'että', + 'haikki', + 'halua', + 'haluaa', + 'haluamatta', + 'haluamme', + 'haluan', + 'haluat', + 'haluatte', + 'haluavat', + 'halunnut', + 'halusi', + 'halusimme', + 'halusin', + 'halusit', + 'halusitte', + 'halusivat', + 'halutessa', + 'haluton', + 'he', + 'hei', + 'heidän', + 'heidät', + 'heihin', + 'heille', + 'heillä', + 'heiltä', + 'heissä', + 'heistä', + 'heitä', + 'helposti', + 'heti', + 'hetkellä', + 'hieman', + 'hitaasti', + 'hoikein', + 'huolimatta', + 'huomenna', + 'hyvien', + 'hyviin', + 'hyviksi', + 'hyville', + 'hyviltä', + 'hyvin', + 'hyvinä', + 'hyvissä', + 'hyvistä', + 'hyviä', + 'hyvä', + 'hyvät', + 'hyvää', + 'hän', + 'häneen', + 'hänelle', + 'hänellä', + 'häneltä', + 'hänen', + 'hänessä', + 'hänestä', + 'hänet', + 'häntä', + 'ihan', + 'ilman', + 'ilmeisesti', + 'itse', + 'itsensä', + 'itseään', + 'ja', + 'jo', + 'johon', + 'joiden', + 'joihin', + 'joiksi', + 'joilla', + 'joille', + 'joilta', + 'joina', + 'joissa', + 'joista', + 'joita', + 'joka', + 'jokainen', + 'jokin', + 'joko', + 'joksi', + 'joku', + 'jolla', + 'jolle', + 'jolloin', + 'jolta', + 'jompikumpi', + 'jona', + 'jonka', + 'jonkin', + 'jonne', + 'joo', + 'jopa', + 'jos', + 'joskus', + 'jossa', + 'josta', + 'jota', + 'jotain', + 'joten', + 'jotenkin', + 'jotenkuten', + 'jotka', + 'jotta', + 'jouduimme', + 'jouduin', + 'jouduit', + 'jouduitte', + 'joudumme', + 'joudun', + 'joudutte', + 'joukkoon', + 'joukossa', + 'joukosta', + 'joutua', + 'joutui', + 'joutuivat', + 'joutumaan', + 'joutuu', + 'joutuvat', + 'juuri', + 'jälkeen', + 'jälleen', + 'jää', + 'kahdeksan', + 'kahdeksannen', + 'kahdella', + 'kahdelle', + 'kahdelta', + 'kahden', + 'kahdessa', + 'kahdesta', + 'kahta', + 'kahteen', + 'kai', + 'kaiken', + 'kaikille', + 'kaikilta', + 'kaikkea', + 'kaikki', + 'kaikkia', + 'kaikkiaan', + 'kaikkialla', + 'kaikkialle', + 'kaikkialta', + 'kaikkien', + 'kaikkin', + 'kaksi', + 'kannalta', + 'kannattaa', + 'kanssa', + 'kanssaan', + 'kanssamme', + 'kanssani', + 'kanssanne', + 'kanssasi', + 'kauan', + 'kauemmas', + 'kaukana', + 'kautta', + 'kehen', + 'keiden', + 'keihin', + 'keiksi', + 'keille', + 'keillä', + 'keiltä', + 'keinä', + 'keissä', + 'keistä', + 'keitten', + 'keittä', + 'keitä', + 'keneen', + 'keneksi', + 'kenelle', + 'kenellä', + 'keneltä', + 'kenen', + 'kenenä', + 'kenessä', + 'kenestä', + 'kenet', + 'kenettä', + 'kennessästä', + 'kenties', + 'kerran', + 'kerta', + 'kertaa', + 'keskellä', + 'kesken', + 'keskimäärin', + 'ketkä', + 'ketä', + 'kiitos', + 'kohti', + 'koko', + 'kokonaan', + 'kolmas', + 'kolme', + 'kolmen', + 'kolmesti', + 'koska', + 'koskaan', + 'kovin', + 'kuin', + 'kuinka', + 'kuinkan', + 'kuitenkaan', + 'kuitenkin', + 'kuka', + 'kukaan', + 'kukin', + 'kukka', + 'kumpainen', + 'kumpainenkaan', + 'kumpi', + 'kumpikaan', + 'kumpikin', + 'kun', + 'kuten', + 'kuuden', + 'kuusi', + 'kuutta', + 'kylliksi', + 'kyllä', + 'kymmenen', + 'kyse', + 'liian', + 'liki', + 'lisäksi', + 'lisää', + 'lla', + 'luo', + 'luona', + 'lähekkäin', + 'lähelle', + 'lähellä', + 'läheltä', + 'lähemmäs', + 'lähes', + 'lähinnä', + 'lähtien', + 'läpi', + 'mahdollisimman', + 'mahdollista', + 'me', + 'meidän', + 'meidät', + 'meihin', + 'meille', + 'meillä', + 'meiltä', + 'meissä', + 'meistä', + 'meitä', + 'melkein', + 'melko', + 'menee', + 'meneet', + 'menemme', + 'menen', + 'menet', + 'menette', + 'menevät', + 'meni', + 'menimme', + 'menin', + 'menit', + 'menivät', + 'mennessä', + 'mennyt', + 'menossa', + 'mihin', + 'mikin', + 'miksi', + 'mikä', + 'mikäli', + 'mikään', + 'mille', + 'milloin', + 'milloinkan', + 'millä', + 'miltä', + 'minkä', + 'minne', + 'minua', + 'minulla', + 'minulle', + 'minulta', + 'minun', + 'minussa', + 'minusta', + 'minut', + 'minuun', + 'minä', + 'missä', + 'mistä', + 'miten', + 'mitkä', + 'mitä', + 'mitään', + 'moi', + 'molemmat', + 'mones', + 'monesti', + 'monet', + 'moni', + 'moniaalla', + 'moniaalle', + 'moniaalta', + 'monta', + 'muassa', + 'muiden', + 'muita', + 'muka', + 'mukaan', + 'mukaansa', + 'mukana', + 'mutta', + 'muu', + 'muualla', + 'muualle', + 'muualta', + 'muuanne', + 'muulloin', + 'muun', + 'muut', + 'muuta', + 'muutama', + 'muutaman', + 'muuten', + 'myöhemmin', + 'myös', + 'myöskin', + 'myöskään', + 'myötä', + 'ne', + 'neljä', + 'neljän', + 'neljää', + 'niiden', + 'niihin', + 'niiksi', + 'niille', + 'niillä', + 'niiltä', + 'niin', + 'niinä', + 'niissä', + 'niistä', + 'niitä', + 'noiden', + 'noihin', + 'noiksi', + 'noilla', + 'noille', + 'noilta', + 'noin', + 'noina', + 'noissa', + 'noista', + 'noita', + 'nopeammin', + 'nopeasti', + 'nopeiten', + 'nro', + 'nuo', + 'nyt', + 'näiden', + 'näihin', + 'näiksi', + 'näille', + 'näillä', + 'näiltä', + 'näin', + 'näinä', + 'näissä', + 'näissähin', + 'näissälle', + 'näissältä', + 'näissästä', + 'näistä', + 'näitä', + 'nämä', + 'ohi', + 'oikea', + 'oikealla', + 'oikein', + 'ole', + 'olemme', + 'olen', + 'olet', + 'olette', + 'oleva', + 'olevan', + 'olevat', + 'oli', + 'olimme', + 'olin', + 'olisi', + 'olisimme', + 'olisin', + 'olisit', + 'olisitte', + 'olisivat', + 'olit', + 'olitte', + 'olivat', + 'olla', + 'olleet', + 'olli', + 'ollut', + 'oma', + 'omaa', + 'omaan', + 'omaksi', + 'omalle', + 'omalta', + 'oman', + 'omassa', + 'omat', + 'omia', + 'omien', + 'omiin', + 'omiksi', + 'omille', + 'omilta', + 'omissa', + 'omista', + 'on', + 'onkin', + 'onko', + 'ovat', + 'paikoittain', + 'paitsi', + 'pakosti', + 'paljon', + 'paremmin', + 'parempi', + 'parhaillaan', + 'parhaiten', + 'perusteella', + 'peräti', + 'pian', + 'pieneen', + 'pieneksi', + 'pienelle', + 'pienellä', + 'pieneltä', + 'pienempi', + 'pienestä', + 'pieni', + 'pienin', + 'poikki', + 'puolesta', + 'puolestaan', + 'päälle', + 'runsaasti', + 'saakka', + 'sadam', + 'sama', + 'samaa', + 'samaan', + 'samalla', + 'samallalta', + 'samallassa', + 'samallasta', + 'saman', + 'samat', + 'samoin', + 'sata', + 'sataa', + 'satojen', + 'se', + 'seitsemän', + 'sekä', + 'sen', + 'seuraavat', + 'siellä', + 'sieltä', + 'siihen', + 'siinä', + 'siis', + 'siitä', + 'sijaan', + 'siksi', + 'sille', + 'silloin', + 'sillä', + 'silti', + 'siltä', + 'sinne', + 'sinua', + 'sinulla', + 'sinulle', + 'sinulta', + 'sinun', + 'sinussa', + 'sinusta', + 'sinut', + 'sinuun', + 'sinä', + 'sisäkkäin', + 'sisällä', + 'siten', + 'sitten', + 'sitä', + 'ssa', + 'sta', + 'suoraan', + 'suuntaan', + 'suuren', + 'suuret', + 'suuri', + 'suuria', + 'suurin', + 'suurten', + 'taa', + 'taas', + 'taemmas', + 'tahansa', + 'tai', + 'takaa', + 'takaisin', + 'takana', + 'takia', + 'tallä', + 'tapauksessa', + 'tarpeeksi', + 'tavalla', + 'tavoitteena', + 'te', + 'teidän', + 'teidät', + 'teihin', + 'teille', + 'teillä', + 'teiltä', + 'teissä', + 'teistä', + 'teitä', + 'tietysti', + 'todella', + 'toinen', + 'toisaalla', + 'toisaalle', + 'toisaalta', + 'toiseen', + 'toiseksi', + 'toisella', + 'toiselle', + 'toiselta', + 'toisemme', + 'toisen', + 'toisensa', + 'toisessa', + 'toisesta', + 'toista', + 'toistaiseksi', + 'toki', + 'tosin', + 'tuhannen', + 'tuhat', + 'tule', + 'tulee', + 'tulemme', + 'tulen', + 'tulet', + 'tulette', + 'tulevat', + 'tulimme', + 'tulin', + 'tulisi', + 'tulisimme', + 'tulisin', + 'tulisit', + 'tulisitte', + 'tulisivat', + 'tulit', + 'tulitte', + 'tulivat', + 'tulla', + 'tulleet', + 'tullut', + 'tuntuu', + 'tuo', + 'tuohon', + 'tuoksi', + 'tuolla', + 'tuolle', + 'tuolloin', + 'tuolta', + 'tuon', + 'tuona', + 'tuonne', + 'tuossa', + 'tuosta', + 'tuota', + 'tuotä', + 'tuskin', + 'tykö', + 'tähän', + 'täksi', + 'tälle', + 'tällä', + 'tällöin', + 'tältä', + 'tämä', + 'tämän', + 'tänne', + 'tänä', + 'tänään', + 'tässä', + 'tästä', + 'täten', + 'tätä', + 'täysin', + 'täytyvät', + 'täytyy', + 'täällä', + 'täältä', + 'ulkopuolella', + 'usea', + 'useasti', + 'useimmiten', + 'usein', + 'useita', + 'uudeksi', + 'uudelleen', + 'uuden', + 'uudet', + 'uusi', + 'uusia', + 'uusien', + 'uusinta', + 'uuteen', + 'uutta', + 'vaan', + 'vahemmän', + 'vai', + 'vaiheessa', + 'vaikea', + 'vaikean', + 'vaikeat', + 'vaikeilla', + 'vaikeille', + 'vaikeilta', + 'vaikeissa', + 'vaikeista', + 'vaikka', + 'vain', + 'varmasti', + 'varsin', + 'varsinkin', + 'varten', + 'vasen', + 'vasenmalla', + 'vasta', + 'vastaan', + 'vastakkain', + 'vastan', + 'verran', + 'vielä', + 'vierekkäin', + 'vieressä', + 'vieri', + 'viiden', + 'viime', + 'viimeinen', + 'viimeisen', + 'viimeksi', + 'viisi', + 'voi', + 'voidaan', + 'voimme', + 'voin', + 'voisi', + 'voit', + 'voitte', + 'voivat', + 'vuoden', + 'vuoksi', + 'vuosi', + 'vuosien', + 'vuosina', + 'vuotta', + 'vähemmän', + 'vähintään', + 'vähiten', + 'vähän', + 'välillä', + 'yhdeksän', + 'yhden', + 'yhdessä', + 'yhteen', + 'yhteensä', + 'yhteydessä', + 'yhteyteen', + 'yhtä', + 'yhtäälle', + 'yhtäällä', + 'yhtäältä', + 'yhtään', + 'yhä', + 'yksi', + 'yksin', + 'yksittäin', + 'yleensä', + 'ylemmäs', + 'yli', + 'ylös', + 'ympäri', + 'älköön', + 'älä', + ], + fr: [ + 'a', + 'abord', + 'absolument', + 'afin', + 'ah', + 'ai', + 'aie', + 'aient', + 'aies', + 'ailleurs', + 'ainsi', + 'ait', + 'allaient', + 'allo', + 'allons', + 'allô', + 'alors', + 'anterieur', + 'anterieure', + 'anterieures', + 'apres', + 'après', + 'as', + 'assez', + 'attendu', + 'au', + 'aucun', + 'aucune', + 'aucuns', + 'aujourd', + "aujourd'hui", + 'aupres', + 'auquel', + 'aura', + 'aurai', + 'auraient', + 'aurais', + 'aurait', + 'auras', + 'aurez', + 'auriez', + 'aurions', + 'aurons', + 'auront', + 'aussi', + 'autant', + 'autre', + 'autrefois', + 'autrement', + 'autres', + 'autrui', + 'aux', + 'auxquelles', + 'auxquels', + 'avaient', + 'avais', + 'avait', + 'avant', + 'avec', + 'avez', + 'aviez', + 'avions', + 'avoir', + 'avons', + 'ayant', + 'ayez', + 'ayons', + 'b', + 'bah', + 'bas', + 'basee', + 'bat', + 'beau', + 'beaucoup', + 'bien', + 'bigre', + 'bon', + 'boum', + 'bravo', + 'brrr', + 'c', + 'car', + 'ce', + 'ceci', + 'cela', + 'celle', + 'celle-ci', + 'celle-là', + 'celles', + 'celles-ci', + 'celles-là', + 'celui', + 'celui-ci', + 'celui-là', + 'celà', + 'cent', + 'cependant', + 'certain', + 'certaine', + 'certaines', + 'certains', + 'certes', + 'ces', + 'cet', + 'cette', + 'ceux', + 'ceux-ci', + 'ceux-là', + 'chacun', + 'chacune', + 'chaque', + 'cher', + 'chers', + 'chez', + 'chiche', + 'chut', + 'chère', + 'chères', + 'ci', + 'cinq', + 'cinquantaine', + 'cinquante', + 'cinquantième', + 'cinquième', + 'clac', + 'clic', + 'combien', + 'comme', + 'comment', + 'comparable', + 'comparables', + 'compris', + 'concernant', + 'contre', + 'couic', + 'crac', + 'd', + 'da', + 'dans', + 'de', + 'debout', + 'dedans', + 'dehors', + 'deja', + 'delà', + 'depuis', + 'dernier', + 'derniere', + 'derriere', + 'derrière', + 'des', + 'desormais', + 'desquelles', + 'desquels', + 'dessous', + 'dessus', + 'deux', + 'deuxième', + 'deuxièmement', + 'devant', + 'devers', + 'devra', + 'devrait', + 'different', + 'differentes', + 'differents', + 'différent', + 'différente', + 'différentes', + 'différents', + 'dire', + 'directe', + 'directement', + 'dit', + 'dite', + 'dits', + 'divers', + 'diverse', + 'diverses', + 'dix', + 'dix-huit', + 'dix-neuf', + 'dix-sept', + 'dixième', + 'doit', + 'doivent', + 'donc', + 'dont', + 'dos', + 'douze', + 'douzième', + 'dring', + 'droite', + 'du', + 'duquel', + 'durant', + 'dès', + 'début', + 'désormais', + 'e', + 'effet', + 'egale', + 'egalement', + 'egales', + 'eh', + 'elle', + 'elle-même', + 'elles', + 'elles-mêmes', + 'en', + 'encore', + 'enfin', + 'entre', + 'envers', + 'environ', + 'es', + 'essai', + 'est', + 'et', + 'etant', + 'etc', + 'etre', + 'eu', + 'eue', + 'eues', + 'euh', + 'eurent', + 'eus', + 'eusse', + 'eussent', + 'eusses', + 'eussiez', + 'eussions', + 'eut', + 'eux', + 'eux-mêmes', + 'exactement', + 'excepté', + 'extenso', + 'exterieur', + 'eûmes', + 'eût', + 'eûtes', + 'f', + 'fais', + 'faisaient', + 'faisant', + 'fait', + 'faites', + 'façon', + 'feront', + 'fi', + 'flac', + 'floc', + 'fois', + 'font', + 'force', + 'furent', + 'fus', + 'fusse', + 'fussent', + 'fusses', + 'fussiez', + 'fussions', + 'fut', + 'fûmes', + 'fût', + 'fûtes', + 'g', + 'gens', + 'h', + 'ha', + 'haut', + 'hein', + 'hem', + 'hep', + 'hi', + 'ho', + 'holà', + 'hop', + 'hormis', + 'hors', + 'hou', + 'houp', + 'hue', + 'hui', + 'huit', + 'huitième', + 'hum', + 'hurrah', + 'hé', + 'hélas', + 'i', + 'ici', + 'il', + 'ils', + 'importe', + 'j', + 'je', + 'jusqu', + 'jusque', + 'juste', + 'k', + 'l', + 'la', + 'laisser', + 'laquelle', + 'las', + 'le', + 'lequel', + 'les', + 'lesquelles', + 'lesquels', + 'leur', + 'leurs', + 'longtemps', + 'lors', + 'lorsque', + 'lui', + 'lui-meme', + 'lui-même', + 'là', + 'lès', + 'm', + 'ma', + 'maint', + 'maintenant', + 'mais', + 'malgre', + 'malgré', + 'maximale', + 'me', + 'meme', + 'memes', + 'merci', + 'mes', + 'mien', + 'mienne', + 'miennes', + 'miens', + 'mille', + 'mince', + 'mine', + 'minimale', + 'moi', + 'moi-meme', + 'moi-même', + 'moindres', + 'moins', + 'mon', + 'mot', + 'moyennant', + 'multiple', + 'multiples', + 'même', + 'mêmes', + 'n', + 'na', + 'naturel', + 'naturelle', + 'naturelles', + 'ne', + 'neanmoins', + 'necessaire', + 'necessairement', + 'neuf', + 'neuvième', + 'ni', + 'nombreuses', + 'nombreux', + 'nommés', + 'non', + 'nos', + 'notamment', + 'notre', + 'nous', + 'nous-mêmes', + 'nouveau', + 'nouveaux', + 'nul', + 'néanmoins', + 'nôtre', + 'nôtres', + 'o', + 'oh', + 'ohé', + 'ollé', + 'olé', + 'on', + 'ont', + 'onze', + 'onzième', + 'ore', + 'ou', + 'ouf', + 'ouias', + 'oust', + 'ouste', + 'outre', + 'ouvert', + 'ouverte', + 'ouverts', + 'o|', + 'où', + 'p', + 'paf', + 'pan', + 'par', + 'parce', + 'parfois', + 'parle', + 'parlent', + 'parler', + 'parmi', + 'parole', + 'parseme', + 'partant', + 'particulier', + 'particulière', + 'particulièrement', + 'pas', + 'passé', + 'pendant', + 'pense', + 'permet', + 'personne', + 'personnes', + 'peu', + 'peut', + 'peuvent', + 'peux', + 'pff', + 'pfft', + 'pfut', + 'pif', + 'pire', + 'pièce', + 'plein', + 'plouf', + 'plupart', + 'plus', + 'plusieurs', + 'plutôt', + 'possessif', + 'possessifs', + 'possible', + 'possibles', + 'pouah', + 'pour', + 'pourquoi', + 'pourrais', + 'pourrait', + 'pouvait', + 'prealable', + 'precisement', + 'premier', + 'première', + 'premièrement', + 'pres', + 'probable', + 'probante', + 'procedant', + 'proche', + 'près', + 'psitt', + 'pu', + 'puis', + 'puisque', + 'pur', + 'pure', + 'q', + 'qu', + 'quand', + 'quant', + 'quant-à-soi', + 'quanta', + 'quarante', + 'quatorze', + 'quatre', + 'quatre-vingt', + 'quatrième', + 'quatrièmement', + 'que', + 'quel', + 'quelconque', + 'quelle', + 'quelles', + "quelqu'un", + 'quelque', + 'quelques', + 'quels', + 'qui', + 'quiconque', + 'quinze', + 'quoi', + 'quoique', + 'r', + 'rare', + 'rarement', + 'rares', + 'relative', + 'relativement', + 'remarquable', + 'rend', + 'rendre', + 'restant', + 'reste', + 'restent', + 'restrictif', + 'retour', + 'revoici', + 'revoilà', + 'rien', + 's', + 'sa', + 'sacrebleu', + 'sait', + 'sans', + 'sapristi', + 'sauf', + 'se', + 'sein', + 'seize', + 'selon', + 'semblable', + 'semblaient', + 'semble', + 'semblent', + 'sent', + 'sept', + 'septième', + 'sera', + 'serai', + 'seraient', + 'serais', + 'serait', + 'seras', + 'serez', + 'seriez', + 'serions', + 'serons', + 'seront', + 'ses', + 'seul', + 'seule', + 'seulement', + 'si', + 'sien', + 'sienne', + 'siennes', + 'siens', + 'sinon', + 'six', + 'sixième', + 'soi', + 'soi-même', + 'soient', + 'sois', + 'soit', + 'soixante', + 'sommes', + 'son', + 'sont', + 'sous', + 'souvent', + 'soyez', + 'soyons', + 'specifique', + 'specifiques', + 'speculatif', + 'stop', + 'strictement', + 'subtiles', + 'suffisant', + 'suffisante', + 'suffit', + 'suis', + 'suit', + 'suivant', + 'suivante', + 'suivantes', + 'suivants', + 'suivre', + 'sujet', + 'superpose', + 'sur', + 'surtout', + 't', + 'ta', + 'tac', + 'tandis', + 'tant', + 'tardive', + 'te', + 'tel', + 'telle', + 'tellement', + 'telles', + 'tels', + 'tenant', + 'tend', + 'tenir', + 'tente', + 'tes', + 'tic', + 'tien', + 'tienne', + 'tiennes', + 'tiens', + 'toc', + 'toi', + 'toi-même', + 'ton', + 'touchant', + 'toujours', + 'tous', + 'tout', + 'toute', + 'toutefois', + 'toutes', + 'treize', + 'trente', + 'tres', + 'trois', + 'troisième', + 'troisièmement', + 'trop', + 'très', + 'tsoin', + 'tsouin', + 'tu', + 'té', + 'u', + 'un', + 'une', + 'unes', + 'uniformement', + 'unique', + 'uniques', + 'uns', + 'v', + 'va', + 'vais', + 'valeur', + 'vas', + 'vers', + 'via', + 'vif', + 'vifs', + 'vingt', + 'vivat', + 'vive', + 'vives', + 'vlan', + 'voici', + 'voie', + 'voient', + 'voilà', + 'voire', + 'vont', + 'vos', + 'votre', + 'vous', + 'vous-mêmes', + 'vu', + 'vé', + 'vôtre', + 'vôtres', + 'w', + 'x', + 'y', + 'z', + 'zut', + 'à', + 'â', + 'ça', + 'ès', + 'étaient', + 'étais', + 'était', + 'étant', + 'état', + 'étiez', + 'étions', + 'été', + 'étée', + 'étées', + 'étés', + 'êtes', + 'être', + 'ô', + ], + gl: [ + 'a', + 'alí', + 'ao', + 'aos', + 'aquel', + 'aquela', + 'aquelas', + 'aqueles', + 'aquilo', + 'aquí', + 'as', + 'así', + 'aínda', + 'ben', + 'cando', + 'che', + 'co', + 'coa', + 'coas', + 'comigo', + 'con', + 'connosco', + 'contigo', + 'convosco', + 'cos', + 'cun', + 'cunha', + 'cunhas', + 'cuns', + 'da', + 'dalgunha', + 'dalgunhas', + 'dalgún', + 'dalgúns', + 'das', + 'de', + 'del', + 'dela', + 'delas', + 'deles', + 'desde', + 'deste', + 'do', + 'dos', + 'dun', + 'dunha', + 'dunhas', + 'duns', + 'e', + 'el', + 'ela', + 'elas', + 'eles', + 'en', + 'era', + 'eran', + 'esa', + 'esas', + 'ese', + 'eses', + 'esta', + 'estaba', + 'estar', + 'este', + 'estes', + 'estiven', + 'estou', + 'está', + 'están', + 'eu', + 'facer', + 'foi', + 'foron', + 'fun', + 'había', + 'hai', + 'iso', + 'isto', + 'la', + 'las', + 'lle', + 'lles', + 'lo', + 'los', + 'mais', + 'me', + 'meu', + 'meus', + 'min', + 'miña', + 'miñas', + 'moi', + 'na', + 'nas', + 'neste', + 'nin', + 'no', + 'non', + 'nos', + 'nosa', + 'nosas', + 'noso', + 'nosos', + 'nun', + 'nunha', + 'nunhas', + 'nuns', + 'nós', + 'o', + 'os', + 'ou', + 'para', + 'pero', + 'pode', + 'pois', + 'pola', + 'polas', + 'polo', + 'polos', + 'por', + 'que', + 'se', + 'senón', + 'ser', + 'seu', + 'seus', + 'sexa', + 'sido', + 'sobre', + 'súa', + 'súas', + 'tamén', + 'tan', + 'te', + 'ten', + 'ter', + 'teu', + 'teus', + 'teñen', + 'teño', + 'ti', + 'tido', + 'tiven', + 'tiña', + 'túa', + 'túas', + 'un', + 'unha', + 'unhas', + 'uns', + 'vos', + 'vosa', + 'vosas', + 'voso', + 'vosos', + 'vós', + 'á', + 'é', + 'ó', + 'ós', + ], + de: [ + 'a', + 'ab', + 'aber', + 'ach', + 'acht', + 'achte', + 'achten', + 'achter', + 'achtes', + 'ag', + 'alle', + 'allein', + 'allem', + 'allen', + 'aller', + 'allerdings', + 'alles', + 'allgemeinen', + 'als', + 'also', + 'am', + 'an', + 'ander', + 'andere', + 'anderem', + 'anderen', + 'anderer', + 'anderes', + 'anderm', + 'andern', + 'anderr', + 'anders', + 'au', + 'auch', + 'auf', + 'aus', + 'ausser', + 'ausserdem', + 'außer', + 'außerdem', + 'b', + 'bald', + 'bei', + 'beide', + 'beiden', + 'beim', + 'beispiel', + 'bekannt', + 'bereits', + 'besonders', + 'besser', + 'besten', + 'bin', + 'bis', + 'bisher', + 'bist', + 'c', + 'd', + 'd.h', + 'da', + 'dabei', + 'dadurch', + 'dafür', + 'dagegen', + 'daher', + 'dahin', + 'dahinter', + 'damals', + 'damit', + 'danach', + 'daneben', + 'dank', + 'dann', + 'daran', + 'darauf', + 'daraus', + 'darf', + 'darfst', + 'darin', + 'darum', + 'darunter', + 'darüber', + 'das', + 'dasein', + 'daselbst', + 'dass', + 'dasselbe', + 'davon', + 'davor', + 'dazu', + 'dazwischen', + 'daß', + 'dein', + 'deine', + 'deinem', + 'deinen', + 'deiner', + 'deines', + 'dem', + 'dementsprechend', + 'demgegenüber', + 'demgemäss', + 'demgemäß', + 'demselben', + 'demzufolge', + 'den', + 'denen', + 'denn', + 'denselben', + 'der', + 'deren', + 'derer', + 'derjenige', + 'derjenigen', + 'dermassen', + 'dermaßen', + 'derselbe', + 'derselben', + 'des', + 'deshalb', + 'desselben', + 'dessen', + 'deswegen', + 'dich', + 'die', + 'diejenige', + 'diejenigen', + 'dies', + 'diese', + 'dieselbe', + 'dieselben', + 'diesem', + 'diesen', + 'dieser', + 'dieses', + 'dir', + 'doch', + 'dort', + 'drei', + 'drin', + 'dritte', + 'dritten', + 'dritter', + 'drittes', + 'du', + 'durch', + 'durchaus', + 'durfte', + 'durften', + 'dürfen', + 'dürft', + 'e', + 'eben', + 'ebenso', + 'ehrlich', + 'ei', + 'ei,', + 'eigen', + 'eigene', + 'eigenen', + 'eigener', + 'eigenes', + 'ein', + 'einander', + 'eine', + 'einem', + 'einen', + 'einer', + 'eines', + 'einig', + 'einige', + 'einigem', + 'einigen', + 'einiger', + 'einiges', + 'einmal', + 'eins', + 'elf', + 'en', + 'ende', + 'endlich', + 'entweder', + 'er', + 'ernst', + 'erst', + 'erste', + 'ersten', + 'erster', + 'erstes', + 'es', + 'etwa', + 'etwas', + 'euch', + 'euer', + 'eure', + 'eurem', + 'euren', + 'eurer', + 'eures', + 'f', + 'folgende', + 'früher', + 'fünf', + 'fünfte', + 'fünften', + 'fünfter', + 'fünftes', + 'für', + 'g', + 'gab', + 'ganz', + 'ganze', + 'ganzen', + 'ganzer', + 'ganzes', + 'gar', + 'gedurft', + 'gegen', + 'gegenüber', + 'gehabt', + 'gehen', + 'geht', + 'gekannt', + 'gekonnt', + 'gemacht', + 'gemocht', + 'gemusst', + 'genug', + 'gerade', + 'gern', + 'gesagt', + 'geschweige', + 'gewesen', + 'gewollt', + 'geworden', + 'gibt', + 'ging', + 'gleich', + 'gott', + 'gross', + 'grosse', + 'grossen', + 'grosser', + 'grosses', + 'groß', + 'große', + 'großen', + 'großer', + 'großes', + 'gut', + 'gute', + 'guter', + 'gutes', + 'h', + 'hab', + 'habe', + 'haben', + 'habt', + 'hast', + 'hat', + 'hatte', + 'hatten', + 'hattest', + 'hattet', + 'heisst', + 'her', + 'heute', + 'hier', + 'hin', + 'hinter', + 'hoch', + 'hätte', + 'hätten', + 'i', + 'ich', + 'ihm', + 'ihn', + 'ihnen', + 'ihr', + 'ihre', + 'ihrem', + 'ihren', + 'ihrer', + 'ihres', + 'im', + 'immer', + 'in', + 'indem', + 'infolgedessen', + 'ins', + 'irgend', + 'ist', + 'j', + 'ja', + 'jahr', + 'jahre', + 'jahren', + 'je', + 'jede', + 'jedem', + 'jeden', + 'jeder', + 'jedermann', + 'jedermanns', + 'jedes', + 'jedoch', + 'jemand', + 'jemandem', + 'jemanden', + 'jene', + 'jenem', + 'jenen', + 'jener', + 'jenes', + 'jetzt', + 'k', + 'kam', + 'kann', + 'kannst', + 'kaum', + 'kein', + 'keine', + 'keinem', + 'keinen', + 'keiner', + 'keines', + 'kleine', + 'kleinen', + 'kleiner', + 'kleines', + 'kommen', + 'kommt', + 'konnte', + 'konnten', + 'kurz', + 'können', + 'könnt', + 'könnte', + 'l', + 'lang', + 'lange', + 'leicht', + 'leide', + 'lieber', + 'los', + 'm', + 'machen', + 'macht', + 'machte', + 'mag', + 'magst', + 'mahn', + 'mal', + 'man', + 'manche', + 'manchem', + 'manchen', + 'mancher', + 'manches', + 'mann', + 'mehr', + 'mein', + 'meine', + 'meinem', + 'meinen', + 'meiner', + 'meines', + 'mensch', + 'menschen', + 'mich', + 'mir', + 'mit', + 'mittel', + 'mochte', + 'mochten', + 'morgen', + 'muss', + 'musst', + 'musste', + 'mussten', + 'muß', + 'mußt', + 'möchte', + 'mögen', + 'möglich', + 'mögt', + 'müssen', + 'müsst', + 'müßt', + 'n', + 'na', + 'nach', + 'nachdem', + 'nahm', + 'natürlich', + 'neben', + 'nein', + 'neue', + 'neuen', + 'neun', + 'neunte', + 'neunten', + 'neunter', + 'neuntes', + 'nicht', + 'nichts', + 'nie', + 'niemand', + 'niemandem', + 'niemanden', + 'noch', + 'nun', + 'nur', + 'o', + 'ob', + 'oben', + 'oder', + 'offen', + 'oft', + 'ohne', + 'ordnung', + 'p', + 'q', + 'r', + 'recht', + 'rechte', + 'rechten', + 'rechter', + 'rechtes', + 'richtig', + 'rund', + 's', + 'sa', + 'sache', + 'sagt', + 'sagte', + 'sah', + 'satt', + 'schlecht', + 'schluss', + 'schon', + 'sechs', + 'sechste', + 'sechsten', + 'sechster', + 'sechstes', + 'sehr', + 'sei', + 'seid', + 'seien', + 'sein', + 'seine', + 'seinem', + 'seinen', + 'seiner', + 'seines', + 'seit', + 'seitdem', + 'selbst', + 'sich', + 'sie', + 'sieben', + 'siebente', + 'siebenten', + 'siebenter', + 'siebentes', + 'sind', + 'so', + 'solang', + 'solche', + 'solchem', + 'solchen', + 'solcher', + 'solches', + 'soll', + 'sollen', + 'sollst', + 'sollt', + 'sollte', + 'sollten', + 'sondern', + 'sonst', + 'soweit', + 'sowie', + 'später', + 'startseite', + 'statt', + 'steht', + 'suche', + 't', + 'tag', + 'tage', + 'tagen', + 'tat', + 'teil', + 'tel', + 'tritt', + 'trotzdem', + 'tun', + 'u', + 'uhr', + 'um', + 'und', + 'uns', + 'unse', + 'unsem', + 'unsen', + 'unser', + 'unsere', + 'unserer', + 'unses', + 'unter', + 'v', + 'vergangenen', + 'viel', + 'viele', + 'vielem', + 'vielen', + 'vielleicht', + 'vier', + 'vierte', + 'vierten', + 'vierter', + 'viertes', + 'vom', + 'von', + 'vor', + 'w', + 'wahr', + 'wann', + 'war', + 'waren', + 'warst', + 'wart', + 'warum', + 'was', + 'weg', + 'wegen', + 'weil', + 'weit', + 'weiter', + 'weitere', + 'weiteren', + 'weiteres', + 'welche', + 'welchem', + 'welchen', + 'welcher', + 'welches', + 'wem', + 'wen', + 'wenig', + 'wenige', + 'weniger', + 'weniges', + 'wenigstens', + 'wenn', + 'wer', + 'werde', + 'werden', + 'werdet', + 'weshalb', + 'wessen', + 'wie', + 'wieder', + 'wieso', + 'will', + 'willst', + 'wir', + 'wird', + 'wirklich', + 'wirst', + 'wissen', + 'wo', + 'woher', + 'wohin', + 'wohl', + 'wollen', + 'wollt', + 'wollte', + 'wollten', + 'worden', + 'wurde', + 'wurden', + 'während', + 'währenddem', + 'währenddessen', + 'wäre', + 'würde', + 'würden', + 'x', + 'y', + 'z', + 'z.b', + 'zehn', + 'zehnte', + 'zehnten', + 'zehnter', + 'zehntes', + 'zeit', + 'zu', + 'zuerst', + 'zugleich', + 'zum', + 'zunächst', + 'zur', + 'zurück', + 'zusammen', + 'zwanzig', + 'zwar', + 'zwei', + 'zweite', + 'zweiten', + 'zweiter', + 'zweites', + 'zwischen', + 'zwölf', + 'über', + 'überhaupt', + 'übrigens', + ], + el: [ + 'ένα', + 'έναν', + 'ένας', + 'αι', + 'ακομα', + 'ακομη', + 'ακριβως', + 'αληθεια', + 'αληθινα', + 'αλλα', + 'αλλαχου', + 'αλλες', + 'αλλη', + 'αλλην', + 'αλλης', + 'αλλιως', + 'αλλιωτικα', + 'αλλο', + 'αλλοι', + 'αλλοιως', + 'αλλοιωτικα', + 'αλλον', + 'αλλος', + 'αλλοτε', + 'αλλου', + 'αλλους', + 'αλλων', + 'αμα', + 'αμεσα', + 'αμεσως', + 'αν', + 'ανα', + 'αναμεσα', + 'αναμεταξυ', + 'ανευ', + 'αντι', + 'αντιπερα', + 'αντις', + 'ανω', + 'ανωτερω', + 'αξαφνα', + 'απ', + 'απεναντι', + 'απο', + 'αποψε', + 'από', + 'αρα', + 'αραγε', + 'αργα', + 'αργοτερο', + 'αριστερα', + 'αρκετα', + 'αρχικα', + 'ας', + 'αυριο', + 'αυτα', + 'αυτες', + 'αυτεσ', + 'αυτη', + 'αυτην', + 'αυτης', + 'αυτο', + 'αυτοι', + 'αυτον', + 'αυτος', + 'αυτοσ', + 'αυτου', + 'αυτους', + 'αυτουσ', + 'αυτων', + 'αφοτου', + 'αφου', + 'αἱ', + 'αἳ', + 'αἵ', + 'αὐτόσ', + 'αὐτὸς', + 'αὖ', + 'α∆ιακοπα', + 'βεβαια', + 'βεβαιοτατα', + 'γάρ', + 'γα', + 'γα^', + 'γε', + 'γι', + 'για', + 'γοῦν', + 'γρηγορα', + 'γυρω', + 'γὰρ', + "δ'", + 'δέ', + 'δή', + 'δαί', + 'δαίσ', + 'δαὶ', + 'δαὶς', + 'δε', + 'δεν', + 'δι', + "δι'", + 'διά', + 'δια', + 'διὰ', + 'δὲ', + 'δὴ', + 'δ’', + 'εαν', + 'εαυτο', + 'εαυτον', + 'εαυτου', + 'εαυτους', + 'εαυτων', + 'εγκαιρα', + 'εγκαιρως', + 'εγω', + 'ειθε', + 'ειμαι', + 'ειμαστε', + 'ειναι', + 'εις', + 'εισαι', + 'εισαστε', + 'ειστε', + 'ειτε', + 'ειχα', + 'ειχαμε', + 'ειχαν', + 'ειχατε', + 'ειχε', + 'ειχες', + 'ει∆εμη', + 'εκ', + 'εκαστα', + 'εκαστες', + 'εκαστη', + 'εκαστην', + 'εκαστης', + 'εκαστο', + 'εκαστοι', + 'εκαστον', + 'εκαστος', + 'εκαστου', + 'εκαστους', + 'εκαστων', + 'εκει', + 'εκεινα', + 'εκεινες', + 'εκεινεσ', + 'εκεινη', + 'εκεινην', + 'εκεινης', + 'εκεινο', + 'εκεινοι', + 'εκεινον', + 'εκεινος', + 'εκεινοσ', + 'εκεινου', + 'εκεινους', + 'εκεινουσ', + 'εκεινων', + 'εκτος', + 'εμας', + 'εμεις', + 'εμενα', + 'εμπρος', + 'εν', + 'ενα', + 'εναν', + 'ενας', + 'ενος', + 'εντελως', + 'εντος', + 'εντωμεταξυ', + 'ενω', + 'ενός', + 'εξ', + 'εξαφνα', + 'εξης', + 'εξισου', + 'εξω', + 'επ', + 'επί', + 'επανω', + 'επειτα', + 'επει∆η', + 'επι', + 'επισης', + 'επομενως', + 'εσας', + 'εσεις', + 'εσενα', + 'εστω', + 'εσυ', + 'ετερα', + 'ετεραι', + 'ετερας', + 'ετερες', + 'ετερη', + 'ετερης', + 'ετερο', + 'ετεροι', + 'ετερον', + 'ετερος', + 'ετερου', + 'ετερους', + 'ετερων', + 'ετουτα', + 'ετουτες', + 'ετουτη', + 'ετουτην', + 'ετουτης', + 'ετουτο', + 'ετουτοι', + 'ετουτον', + 'ετουτος', + 'ετουτου', + 'ετουτους', + 'ετουτων', + 'ετσι', + 'ευγε', + 'ευθυς', + 'ευτυχως', + 'εφεξης', + 'εχει', + 'εχεις', + 'εχετε', + 'εχθες', + 'εχομε', + 'εχουμε', + 'εχουν', + 'εχτες', + 'εχω', + 'εως', + 'εἰ', + 'εἰμί', + 'εἰμὶ', + 'εἰς', + 'εἰσ', + 'εἴ', + 'εἴμι', + 'εἴτε', + 'ε∆ω', + 'η', + 'ημασταν', + 'ημαστε', + 'ημουν', + 'ησασταν', + 'ησαστε', + 'ησουν', + 'ηταν', + 'ητανε', + 'ητοι', + 'ηττον', + 'η∆η', + 'θα', + 'ι', + 'ιι', + 'ιιι', + 'ισαμε', + 'ισια', + 'ισως', + 'ισωσ', + 'ι∆ια', + 'ι∆ιαν', + 'ι∆ιας', + 'ι∆ιες', + 'ι∆ιο', + 'ι∆ιοι', + 'ι∆ιον', + 'ι∆ιος', + 'ι∆ιου', + 'ι∆ιους', + 'ι∆ιων', + 'ι∆ιως', + 'κ', + 'καί', + 'καίτοι', + 'καθ', + 'καθε', + 'καθεμια', + 'καθεμιας', + 'καθενα', + 'καθενας', + 'καθενος', + 'καθετι', + 'καθολου', + 'καθως', + 'και', + 'κακα', + 'κακως', + 'καλα', + 'καλως', + 'καμια', + 'καμιαν', + 'καμιας', + 'καμποσα', + 'καμποσες', + 'καμποση', + 'καμποσην', + 'καμποσης', + 'καμποσο', + 'καμποσοι', + 'καμποσον', + 'καμποσος', + 'καμποσου', + 'καμποσους', + 'καμποσων', + 'κανεις', + 'κανεν', + 'κανενα', + 'κανεναν', + 'κανενας', + 'κανενος', + 'καποια', + 'καποιαν', + 'καποιας', + 'καποιες', + 'καποιο', + 'καποιοι', + 'καποιον', + 'καποιος', + 'καποιου', + 'καποιους', + 'καποιων', + 'καποτε', + 'καπου', + 'καπως', + 'κατ', + 'κατά', + 'κατα', + 'κατι', + 'κατιτι', + 'κατοπιν', + 'κατω', + 'κατὰ', + 'καὶ', + 'κι', + 'κιολας', + 'κλπ', + 'κοντα', + 'κτλ', + 'κυριως', + 'κἀν', + 'κἂν', + 'λιγακι', + 'λιγο', + 'λιγωτερο', + 'λογω', + 'λοιπα', + 'λοιπον', + 'μέν', + 'μέσα', + 'μή', + 'μήτε', + 'μία', + 'μα', + 'μαζι', + 'μακαρι', + 'μακρυα', + 'μαλιστα', + 'μαλλον', + 'μας', + 'με', + 'μεθ', + 'μεθαυριο', + 'μειον', + 'μελει', + 'μελλεται', + 'μεμιας', + 'μεν', + 'μερικα', + 'μερικες', + 'μερικοι', + 'μερικους', + 'μερικων', + 'μεσα', + 'μετ', + 'μετά', + 'μετα', + 'μεταξυ', + 'μετὰ', + 'μεχρι', + 'μη', + 'μην', + 'μηπως', + 'μητε', + 'μη∆ε', + 'μιά', + 'μια', + 'μιαν', + 'μιας', + 'μολις', + 'μολονοτι', + 'μοναχα', + 'μονες', + 'μονη', + 'μονην', + 'μονης', + 'μονο', + 'μονοι', + 'μονομιας', + 'μονος', + 'μονου', + 'μονους', + 'μονων', + 'μου', + 'μπορει', + 'μπορουν', + 'μπραβο', + 'μπρος', + 'μἐν', + 'μὲν', + 'μὴ', + 'μὴν', + 'να', + 'ναι', + 'νωρις', + 'ξανα', + 'ξαφνικα', + 'ο', + 'οι', + 'ολα', + 'ολες', + 'ολη', + 'ολην', + 'ολης', + 'ολο', + 'ολογυρα', + 'ολοι', + 'ολον', + 'ολονεν', + 'ολος', + 'ολοτελα', + 'ολου', + 'ολους', + 'ολων', + 'ολως', + 'ολως∆ιολου', + 'ομως', + 'ομωσ', + 'οποια', + 'οποιαν', + 'οποιαν∆ηποτε', + 'οποιας', + 'οποιας∆ηποτε', + 'οποια∆ηποτε', + 'οποιες', + 'οποιες∆ηποτε', + 'οποιο', + 'οποιοι', + 'οποιον', + 'οποιον∆ηποτε', + 'οποιος', + 'οποιος∆ηποτε', + 'οποιου', + 'οποιους', + 'οποιους∆ηποτε', + 'οποιου∆ηποτε', + 'οποιο∆ηποτε', + 'οποιων', + 'οποιων∆ηποτε', + 'οποι∆ηποτε', + 'οποτε', + 'οποτε∆ηποτε', + 'οπου', + 'οπου∆ηποτε', + 'οπως', + 'οπωσ', + 'ορισμενα', + 'ορισμενες', + 'ορισμενων', + 'ορισμενως', + 'οσα', + 'οσα∆ηποτε', + 'οσες', + 'οσες∆ηποτε', + 'οση', + 'οσην', + 'οσην∆ηποτε', + 'οσης', + 'οσης∆ηποτε', + 'οση∆ηποτε', + 'οσο', + 'οσοι', + 'οσοι∆ηποτε', + 'οσον', + 'οσον∆ηποτε', + 'οσος', + 'οσος∆ηποτε', + 'οσου', + 'οσους', + 'οσους∆ηποτε', + 'οσου∆ηποτε', + 'οσο∆ηποτε', + 'οσων', + 'οσων∆ηποτε', + 'οταν', + 'οτι', + 'οτι∆ηποτε', + 'οτου', + 'ου', + 'ουτε', + 'ου∆ε', + 'οχι', + 'οἱ', + 'οἳ', + 'οἷς', + 'οὐ', + 'οὐδ', + 'οὐδέ', + 'οὐδείσ', + 'οὐδεὶς', + 'οὐδὲ', + 'οὐδὲν', + 'οὐκ', + 'οὐχ', + 'οὐχὶ', + 'οὓς', + 'οὔτε', + 'οὕτω', + 'οὕτως', + 'οὕτωσ', + 'οὖν', + 'οὗ', + 'οὗτος', + 'οὗτοσ', + 'παλι', + 'παντοτε', + 'παντου', + 'παντως', + 'παρ', + 'παρά', + 'παρα', + 'παρὰ', + 'περί', + 'περα', + 'περι', + 'περιπου', + 'περισσοτερο', + 'περσι', + 'περυσι', + 'περὶ', + 'πια', + 'πιθανον', + 'πιο', + 'πισω', + 'πλαι', + 'πλεον', + 'πλην', + 'ποια', + 'ποιαν', + 'ποιας', + 'ποιες', + 'ποιεσ', + 'ποιο', + 'ποιοι', + 'ποιον', + 'ποιος', + 'ποιοσ', + 'ποιου', + 'ποιους', + 'ποιουσ', + 'ποιων', + 'πολυ', + 'ποσες', + 'ποση', + 'ποσην', + 'ποσης', + 'ποσοι', + 'ποσος', + 'ποσους', + 'ποτε', + 'που', + 'πουθε', + 'πουθενα', + 'ποῦ', + 'πρεπει', + 'πριν', + 'προ', + 'προκειμενου', + 'προκειται', + 'προπερσι', + 'προς', + 'προσ', + 'προτου', + 'προχθες', + 'προχτες', + 'πρωτυτερα', + 'πρόσ', + 'πρὸ', + 'πρὸς', + 'πως', + 'πωσ', + 'σαν', + 'σας', + 'σε', + 'σεις', + 'σημερα', + 'σιγα', + 'σου', + 'στα', + 'στη', + 'στην', + 'στης', + 'στις', + 'στο', + 'στον', + 'στου', + 'στους', + 'στων', + 'συγχρονως', + 'συν', + 'συναμα', + 'συνεπως', + 'συνηθως', + 'συχνα', + 'συχνας', + 'συχνες', + 'συχνη', + 'συχνην', + 'συχνης', + 'συχνο', + 'συχνοι', + 'συχνον', + 'συχνος', + 'συχνου', + 'συχνους', + 'συχνων', + 'συχνως', + 'σχε∆ον', + 'σωστα', + 'σόσ', + 'σύ', + 'σύν', + 'σὸς', + 'σὺ', + 'σὺν', + 'τά', + 'τήν', + 'τί', + 'τίς', + 'τίσ', + 'τα', + 'ταυτα', + 'ταυτες', + 'ταυτη', + 'ταυτην', + 'ταυτης', + 'ταυτο,ταυτον', + 'ταυτος', + 'ταυτου', + 'ταυτων', + 'ταχα', + 'ταχατε', + 'ταῖς', + 'τα∆ε', + 'τε', + 'τελικα', + 'τελικως', + 'τες', + 'τετοια', + 'τετοιαν', + 'τετοιας', + 'τετοιες', + 'τετοιο', + 'τετοιοι', + 'τετοιον', + 'τετοιος', + 'τετοιου', + 'τετοιους', + 'τετοιων', + 'τη', + 'την', + 'της', + 'τησ', + 'τι', + 'τινα', + 'τιποτα', + 'τιποτε', + 'τις', + 'τισ', + 'το', + 'τοί', + 'τοι', + 'τοιοῦτος', + 'τοιοῦτοσ', + 'τον', + 'τος', + 'τοσα', + 'τοσες', + 'τοση', + 'τοσην', + 'τοσης', + 'τοσο', + 'τοσοι', + 'τοσον', + 'τοσος', + 'τοσου', + 'τοσους', + 'τοσων', + 'τοτε', + 'του', + 'τουλαχιστο', + 'τουλαχιστον', + 'τους', + 'τουτα', + 'τουτες', + 'τουτη', + 'τουτην', + 'τουτης', + 'τουτο', + 'τουτοι', + 'τουτοις', + 'τουτον', + 'τουτος', + 'τουτου', + 'τουτους', + 'τουτων', + 'τούσ', + 'τοὺς', + 'τοῖς', + 'τοῦ', + 'τυχον', + 'των', + 'τωρα', + 'τό', + 'τόν', + 'τότε', + 'τὰ', + 'τὰς', + 'τὴν', + 'τὸ', + 'τὸν', + 'τῆς', + 'τῆσ', + 'τῇ', + 'τῶν', + 'τῷ', + 'υπ', + 'υπερ', + 'υπο', + 'υποψη', + 'υποψιν', + 'υπό', + 'υστερα', + 'φετος', + 'χαμηλα', + 'χθες', + 'χτες', + 'χωρις', + 'χωριστα', + 'ψηλα', + 'ω', + 'ωραια', + 'ως', + 'ωσ', + 'ωσαν', + 'ωσοτου', + 'ωσπου', + 'ωστε', + 'ωστοσο', + 'ωχ', + "ἀλλ'", + 'ἀλλά', + 'ἀλλὰ', + 'ἀλλ’', + 'ἀπ', + 'ἀπό', + 'ἀπὸ', + 'ἀφ', + 'ἂν', + 'ἃ', + 'ἄλλος', + 'ἄλλοσ', + 'ἄν', + 'ἄρα', + 'ἅμα', + 'ἐάν', + 'ἐγώ', + 'ἐγὼ', + 'ἐκ', + 'ἐμόσ', + 'ἐμὸς', + 'ἐν', + 'ἐξ', + 'ἐπί', + 'ἐπεὶ', + 'ἐπὶ', + 'ἐστι', + 'ἐφ', + 'ἐὰν', + 'ἑαυτοῦ', + 'ἔτι', + 'ἡ', + 'ἢ', + 'ἣ', + 'ἤ', + 'ἥ', + 'ἧς', + 'ἵνα', + 'ὁ', + 'ὃ', + 'ὃν', + 'ὃς', + 'ὅ', + 'ὅδε', + 'ὅθεν', + 'ὅπερ', + 'ὅς', + 'ὅσ', + 'ὅστις', + 'ὅστισ', + 'ὅτε', + 'ὅτι', + 'ὑμόσ', + 'ὑπ', + 'ὑπέρ', + 'ὑπό', + 'ὑπὲρ', + 'ὑπὸ', + 'ὡς', + 'ὡσ', + 'ὥς', + 'ὥστε', + 'ὦ', + 'ᾧ', + '∆α', + '∆ε', + '∆εινα', + '∆εν', + '∆εξια', + '∆ηθεν', + '∆ηλα∆η', + '∆ι', + '∆ια', + '∆ιαρκως', + '∆ικα', + '∆ικο', + '∆ικοι', + '∆ικος', + '∆ικου', + '∆ικους', + '∆ιολου', + '∆ιπλα', + '∆ιχως', + ], + gu: [ + 'અંગે', + 'અંદર', + 'અથવા', + 'અને', + 'અમને', + 'અમારું', + 'અમે', + 'અહીં', + 'આ', + 'આગળ', + 'આથી', + 'આનું', + 'આને', + 'આપણને', + 'આપણું', + 'આપણે', + 'આપી', + 'આર', + 'આવી', + 'આવે', + 'ઉપર', + 'ઉભા', + 'ઊંચે', + 'ઊભું', + 'એ', + 'એક', + 'એન', + 'એના', + 'એનાં', + 'એની', + 'એનું', + 'એને', + 'એનો', + 'એમ', + 'એવા', + 'એવાં', + 'એવી', + 'એવું', + 'એવો', + 'ઓછું', + 'કંઈક', + 'કઈ', + 'કયું', + 'કયો', + 'કરતાં', + 'કરવું', + 'કરી', + 'કરીએ', + 'કરું', + 'કરે', + 'કરેલું', + 'કર્યા', + 'કર્યાં', + 'કર્યું', + 'કર્યો', + 'કાંઈ', + 'કે', + 'કેટલું', + 'કેમ', + 'કેવી', + 'કેવું', + 'કોઈ', + 'કોઈક', + 'કોણ', + 'કોણે', + 'કોને', + 'ક્યાં', + 'ક્યારે', + 'ખૂબ', + 'ગઈ', + 'ગયા', + 'ગયાં', + 'ગયું', + 'ગયો', + 'ઘણું', + 'છ', + 'છતાં', + 'છીએ', + 'છું', + 'છે', + 'છેક', + 'છો', + 'જ', + 'જાય', + 'જી', + 'જે', + 'જેટલું', + 'જેને', + 'જેમ', + 'જેવી', + 'જેવું', + 'જેવો', + 'જો', + 'જોઈએ', + 'જ્યાં', + 'જ્યારે', + 'ઝાઝું', + 'તને', + 'તમને', + 'તમારું', + 'તમે', + 'તા', + 'તારાથી', + 'તારામાં', + 'તારું', + 'તું', + 'તે', + 'તેં', + 'તેઓ', + 'તેણે', + 'તેથી', + 'તેના', + 'તેની', + 'તેનું', + 'તેને', + 'તેમ', + 'તેમનું', + 'તેમને', + 'તેવી', + 'તેવું', + 'તો', + 'ત્યાં', + 'ત્યારે', + 'થઇ', + 'થઈ', + 'થઈએ', + 'થતા', + 'થતાં', + 'થતી', + 'થતું', + 'થતો', + 'થયા', + 'થયાં', + 'થયું', + 'થયેલું', + 'થયો', + 'થવું', + 'થાઉં', + 'થાઓ', + 'થાય', + 'થી', + 'થોડું', + 'દરેક', + 'ન', + 'નં', + 'નં.', + 'નથી', + 'નહિ', + 'નહી', + 'નહીં', + 'ના', + 'ની', + 'નીચે', + 'નું', + 'ને', + 'નો', + 'પછી', + 'પણ', + 'પર', + 'પરંતુ', + 'પહેલાં', + 'પાછળ', + 'પાસે', + 'પોતાનું', + 'પ્રત્યેક', + 'ફક્ત', + 'ફરી', + 'ફરીથી', + 'બંને', + 'બધા', + 'બધું', + 'બની', + 'બહાર', + 'બહુ', + 'બાદ', + 'બે', + 'મને', + 'મા', + 'માં', + 'માટે', + 'માત્ર', + 'મારું', + 'મી', + 'મૂકવું', + 'મૂકી', + 'મૂક્યા', + 'મૂક્યાં', + 'મૂક્યું', + 'મેં', + 'રહી', + 'રહે', + 'રહેવું', + 'રહ્યા', + 'રહ્યાં', + 'રહ્યો', + 'રીતે', + 'રૂ.', + 'રૂા', + 'લેતા', + 'લેતું', + 'લેવા', + 'વગેરે', + 'વધુ', + 'શકે', + 'શા', + 'શું', + 'સરખું', + 'સામે', + 'સુધી', + 'હતા', + 'હતાં', + 'હતી', + 'હતું', + 'હવે', + 'હશે', + 'હશો', + 'હા', + 'હું', + 'હો', + 'હોઈ', + 'હોઈશ', + 'હોઈશું', + 'હોય', + 'હોવા', + ], + ha: [ + 'a', + 'amma', + 'ba', + 'ban', + 'ce', + 'cikin', + 'da', + 'don', + 'ga', + 'in', + 'ina', + 'ita', + 'ji', + 'ka', + 'ko', + 'kuma', + 'lokacin', + 'ma', + 'mai', + 'na', + 'ne', + 'ni', + 'sai', + 'shi', + 'su', + 'suka', + 'sun', + 'ta', + 'tafi', + 'take', + 'tana', + 'wani', + 'wannan', + 'wata', + 'ya', + 'yake', + 'yana', + 'yi', + 'za', + ], + he: [ + 'אבל', + 'או', + 'אולי', + 'אותה', + 'אותו', + 'אותי', + 'אותך', + 'אותם', + 'אותן', + 'אותנו', + 'אז', + 'אחר', + 'אחרות', + 'אחרי', + 'אחריכן', + 'אחרים', + 'אחרת', + 'אי', + 'איזה', + 'איך', + 'אין', + 'איפה', + 'איתה', + 'איתו', + 'איתי', + 'איתך', + 'איתכם', + 'איתכן', + 'איתם', + 'איתן', + 'איתנו', + 'אך', + 'אל', + 'אלה', + 'אלו', + 'אם', + 'אנחנו', + 'אני', + 'אס', + 'אף', + 'אצל', + 'אשר', + 'את', + 'אתה', + 'אתכם', + 'אתכן', + 'אתם', + 'אתן', + 'באיזומידה', + 'באמצע', + 'באמצעות', + 'בגלל', + 'בין', + 'בלי', + 'במידה', + 'במקוםשבו', + 'ברם', + 'בשביל', + 'בשעהש', + 'בתוך', + 'גם', + 'דרך', + 'הוא', + 'היא', + 'היה', + 'היכן', + 'היתה', + 'היתי', + 'הם', + 'הן', + 'הנה', + 'הסיבהשבגללה', + 'הרי', + 'ואילו', + 'ואת', + 'זאת', + 'זה', + 'זות', + 'יהיה', + 'יוכל', + 'יוכלו', + 'יותרמדי', + 'יכול', + 'יכולה', + 'יכולות', + 'יכולים', + 'יכל', + 'יכלה', + 'יכלו', + 'יש', + 'כאן', + 'כאשר', + 'כולם', + 'כולן', + 'כזה', + 'כי', + 'כיצד', + 'כך', + 'ככה', + 'כל', + 'כלל', + 'כמו', + 'כן', + 'כפי', + 'כש', + 'לא', + 'לאו', + 'לאיזותכלית', + 'לאן', + 'לבין', + 'לה', + 'להיות', + 'להם', + 'להן', + 'לו', + 'לי', + 'לכם', + 'לכן', + 'למה', + 'למטה', + 'למעלה', + 'למקוםשבו', + 'למרות', + 'לנו', + 'לעבר', + 'לעיכן', + 'לפיכך', + 'לפני', + 'מאד', + 'מאחורי', + 'מאיזוסיבה', + 'מאין', + 'מאיפה', + 'מבלי', + 'מבעד', + 'מדוע', + 'מה', + 'מהיכן', + 'מול', + 'מחוץ', + 'מי', + 'מכאן', + 'מכיוון', + 'מלבד', + 'מן', + 'מנין', + 'מסוגל', + 'מעט', + 'מעטים', + 'מעל', + 'מצד', + 'מקוםבו', + 'מתחת', + 'מתי', + 'נגד', + 'נגר', + 'נו', + 'עד', + 'עז', + 'על', + 'עלי', + 'עליה', + 'עליהם', + 'עליהן', + 'עליו', + 'עליך', + 'עליכם', + 'עלינו', + 'עם', + 'עצמה', + 'עצמהם', + 'עצמהן', + 'עצמו', + 'עצמי', + 'עצמם', + 'עצמן', + 'עצמנו', + 'פה', + 'רק', + 'שוב', + 'של', + 'שלה', + 'שלהם', + 'שלהן', + 'שלו', + 'שלי', + 'שלך', + 'שלכה', + 'שלכם', + 'שלכן', + 'שלנו', + 'שם', + 'תהיה', + 'תחת', + ], + hi: [ + 'अंदर', + 'अत', + 'अदि', + 'अप', + 'अपना', + 'अपनि', + 'अपनी', + 'अपने', + 'अभि', + 'अभी', + 'आदि', + 'आप', + 'इंहिं', + 'इंहें', + 'इंहों', + 'इतयादि', + 'इत्यादि', + 'इन', + 'इनका', + 'इन्हीं', + 'इन्हें', + 'इन्हों', + 'इस', + 'इसका', + 'इसकि', + 'इसकी', + 'इसके', + 'इसमें', + 'इसि', + 'इसी', + 'इसे', + 'उंहिं', + 'उंहें', + 'उंहों', + 'उन', + 'उनका', + 'उनकि', + 'उनकी', + 'उनके', + 'उनको', + 'उन्हीं', + 'उन्हें', + 'उन्हों', + 'उस', + 'उसके', + 'उसि', + 'उसी', + 'उसे', + 'एक', + 'एवं', + 'एस', + 'एसे', + 'ऐसे', + 'ओर', + 'और', + 'कइ', + 'कई', + 'कर', + 'करता', + 'करते', + 'करना', + 'करने', + 'करें', + 'कहते', + 'कहा', + 'का', + 'काफि', + 'काफ़ी', + 'कि', + 'किंहें', + 'किंहों', + 'कितना', + 'किन्हें', + 'किन्हों', + 'किया', + 'किर', + 'किस', + 'किसि', + 'किसी', + 'किसे', + 'की', + 'कुछ', + 'कुल', + 'के', + 'को', + 'कोइ', + 'कोई', + 'कोन', + 'कोनसा', + 'कौन', + 'कौनसा', + 'गया', + 'घर', + 'जब', + 'जहाँ', + 'जहां', + 'जा', + 'जिंहें', + 'जिंहों', + 'जितना', + 'जिधर', + 'जिन', + 'जिन्हें', + 'जिन्हों', + 'जिस', + 'जिसे', + 'जीधर', + 'जेसा', + 'जेसे', + 'जैसा', + 'जैसे', + 'जो', + 'तक', + 'तब', + 'तरह', + 'तिंहें', + 'तिंहों', + 'तिन', + 'तिन्हें', + 'तिन्हों', + 'तिस', + 'तिसे', + 'तो', + 'था', + 'थि', + 'थी', + 'थे', + 'दबारा', + 'दवारा', + 'दिया', + 'दुसरा', + 'दुसरे', + 'दूसरे', + 'दो', + 'द्वारा', + 'न', + 'नहिं', + 'नहीं', + 'ना', + 'निचे', + 'निहायत', + 'नीचे', + 'ने', + 'पर', + 'पहले', + 'पुरा', + 'पूरा', + 'पे', + 'फिर', + 'बनि', + 'बनी', + 'बहि', + 'बही', + 'बहुत', + 'बाद', + 'बाला', + 'बिलकुल', + 'भि', + 'भितर', + 'भी', + 'भीतर', + 'मगर', + 'मानो', + 'मे', + 'में', + 'यदि', + 'यह', + 'यहाँ', + 'यहां', + 'यहि', + 'यही', + 'या', + 'यिह', + 'ये', + 'रखें', + 'रवासा', + 'रहा', + 'रहे', + 'ऱ्वासा', + 'लिए', + 'लिये', + 'लेकिन', + 'व', + 'वगेरह', + 'वरग', + 'वर्ग', + 'वह', + 'वहाँ', + 'वहां', + 'वहिं', + 'वहीं', + 'वाले', + 'वुह', + 'वे', + 'वग़ैरह', + 'संग', + 'सकता', + 'सकते', + 'सबसे', + 'सभि', + 'सभी', + 'साथ', + 'साबुत', + 'साभ', + 'सारा', + 'से', + 'सो', + 'हि', + 'ही', + 'हुअ', + 'हुआ', + 'हुइ', + 'हुई', + 'हुए', + 'हे', + 'हें', + 'है', + 'हैं', + 'हो', + 'होता', + 'होति', + 'होती', + 'होते', + 'होना', + 'होने', + ], + hu: [ + 'a', + 'abba', + 'abban', + 'abból', + 'addig', + 'ahhoz', + 'ahogy', + 'ahol', + 'aki', + 'akik', + 'akkor', + 'akár', + 'alapján', + 'alatt', + 'alatta', + 'alattad', + 'alattam', + 'alattatok', + 'alattuk', + 'alattunk', + 'alá', + 'alád', + 'alájuk', + 'alám', + 'alánk', + 'alátok', + 'alól', + 'alóla', + 'alólad', + 'alólam', + 'alólatok', + 'alóluk', + 'alólunk', + 'amely', + 'amelybol', + 'amelyek', + 'amelyekben', + 'amelyeket', + 'amelyet', + 'amelyik', + 'amelynek', + 'ami', + 'amikor', + 'amit', + 'amolyan', + 'amott', + 'amíg', + 'annak', + 'annál', + 'arra', + 'arról', + 'attól', + 'az', + 'aznap', + 'azok', + 'azokat', + 'azokba', + 'azokban', + 'azokból', + 'azokhoz', + 'azokig', + 'azokkal', + 'azokká', + 'azoknak', + 'azoknál', + 'azokon', + 'azokra', + 'azokról', + 'azoktól', + 'azokért', + 'azon', + 'azonban', + 'azonnal', + 'azt', + 'aztán', + 'azután', + 'azzal', + 'azzá', + 'azért', + 'bal', + 'balra', + 'ban', + 'be', + 'belé', + 'beléd', + 'beléjük', + 'belém', + 'belénk', + 'belétek', + 'belül', + 'belőle', + 'belőled', + 'belőlem', + 'belőletek', + 'belőlük', + 'belőlünk', + 'ben', + 'benne', + 'benned', + 'bennem', + 'bennetek', + 'bennük', + 'bennünk', + 'bár', + 'bárcsak', + 'bármilyen', + 'búcsú', + 'cikk', + 'cikkek', + 'cikkeket', + 'csak', + 'csakhogy', + 'csupán', + 'de', + 'dehogy', + 'e', + 'ebbe', + 'ebben', + 'ebből', + 'eddig', + 'egy', + 'egyebek', + 'egyebet', + 'egyedül', + 'egyelőre', + 'egyes', + 'egyet', + 'egyetlen', + 'egyik', + 'egymás', + 'egyre', + 'egyszerre', + 'egyéb', + 'együtt', + 'egész', + 'egészen', + 'ehhez', + 'ekkor', + 'el', + 'eleinte', + 'ellen', + 'ellenes', + 'elleni', + 'ellenére', + 'elmondta', + 'elsõ', + 'első', + 'elsők', + 'elsősorban', + 'elsőt', + 'elé', + 'eléd', + 'elég', + 'eléjük', + 'elém', + 'elénk', + 'elétek', + 'elõ', + 'elõször', + 'elõtt', + 'elő', + 'előbb', + 'elől', + 'előle', + 'előled', + 'előlem', + 'előletek', + 'előlük', + 'előlünk', + 'először', + 'előtt', + 'előtte', + 'előtted', + 'előttem', + 'előttetek', + 'előttük', + 'előttünk', + 'előző', + 'emilyen', + 'engem', + 'ennek', + 'ennyi', + 'ennél', + 'enyém', + 'erre', + 'erről', + 'esetben', + 'ettől', + 'ez', + 'ezek', + 'ezekbe', + 'ezekben', + 'ezekből', + 'ezeken', + 'ezeket', + 'ezekhez', + 'ezekig', + 'ezekkel', + 'ezekké', + 'ezeknek', + 'ezeknél', + 'ezekre', + 'ezekről', + 'ezektől', + 'ezekért', + 'ezen', + 'ezentúl', + 'ezer', + 'ezret', + 'ezt', + 'ezután', + 'ezzel', + 'ezzé', + 'ezért', + 'fel', + 'fele', + 'felek', + 'felet', + 'felett', + 'felé', + 'fent', + 'fenti', + 'fél', + 'fölé', + 'gyakran', + 'ha', + 'halló', + 'hamar', + 'hanem', + 'harmadik', + 'harmadikat', + 'harminc', + 'hat', + 'hatodik', + 'hatodikat', + 'hatot', + 'hatvan', + 'helyett', + 'hetedik', + 'hetediket', + 'hetet', + 'hetven', + 'hirtelen', + 'hiszen', + 'hiába', + 'hogy', + 'hogyan', + 'hol', + 'holnap', + 'holnapot', + 'honnan', + 'hova', + 'hozzá', + 'hozzád', + 'hozzájuk', + 'hozzám', + 'hozzánk', + 'hozzátok', + 'hurrá', + 'huszadik', + 'hány', + 'hányszor', + 'hármat', + 'három', + 'hát', + 'hátha', + 'hátulsó', + 'hét', + 'húsz', + 'ide', + 'ide-оda', + 'idén', + 'igazán', + 'igen', + 'ill', + 'ill.', + 'illetve', + 'ilyen', + 'ilyenkor', + 'immár', + 'inkább', + 'is', + 'ismét', + 'ison', + 'itt', + 'jelenleg', + 'jobban', + 'jobbra', + 'jó', + 'jól', + 'jólesik', + 'jóval', + 'jövőre', + 'kell', + 'kellene', + 'kellett', + 'kelljen', + 'keressünk', + 'keresztül', + 'ketten', + 'kettő', + 'kettőt', + 'kevés', + 'ki', + 'kiben', + 'kiből', + 'kicsit', + 'kicsoda', + 'kihez', + 'kik', + 'kikbe', + 'kikben', + 'kikből', + 'kiken', + 'kiket', + 'kikhez', + 'kikkel', + 'kikké', + 'kiknek', + 'kiknél', + 'kikre', + 'kikről', + 'kiktől', + 'kikért', + 'kilenc', + 'kilencedik', + 'kilencediket', + 'kilencet', + 'kilencven', + 'kin', + 'kinek', + 'kinél', + 'kire', + 'kiről', + 'kit', + 'kitől', + 'kivel', + 'kivé', + 'kié', + 'kiért', + 'korábban', + 'képest', + 'kérem', + 'kérlek', + 'kész', + 'késő', + 'később', + 'későn', + 'két', + 'kétszer', + 'kívül', + 'körül', + 'köszönhetően', + 'köszönöm', + 'közben', + 'közel', + 'közepesen', + 'közepén', + 'közé', + 'között', + 'közül', + 'külön', + 'különben', + 'különböző', + 'különbözőbb', + 'különbözőek', + 'lassan', + 'le', + 'legalább', + 'legyen', + 'lehet', + 'lehetetlen', + 'lehetett', + 'lehetőleg', + 'lehetőség', + 'lenne', + 'lenni', + 'lennék', + 'lennének', + 'lesz', + 'leszek', + 'lesznek', + 'leszünk', + 'lett', + 'lettek', + 'lettem', + 'lettünk', + 'lévő', + 'ma', + 'maga', + 'magad', + 'magam', + 'magatokat', + 'magukat', + 'magunkat', + 'magát', + 'mai', + 'majd', + 'majdnem', + 'manapság', + 'meg', + 'megcsinál', + 'megcsinálnak', + 'megint', + 'megvan', + 'mellett', + 'mellette', + 'melletted', + 'mellettem', + 'mellettetek', + 'mellettük', + 'mellettünk', + 'mellé', + 'melléd', + 'melléjük', + 'mellém', + 'mellénk', + 'mellétek', + 'mellől', + 'mellőle', + 'mellőled', + 'mellőlem', + 'mellőletek', + 'mellőlük', + 'mellőlünk', + 'mely', + 'melyek', + 'melyik', + 'mennyi', + 'mert', + 'mi', + 'miatt', + 'miatta', + 'miattad', + 'miattam', + 'miattatok', + 'miattuk', + 'miattunk', + 'mibe', + 'miben', + 'miből', + 'mihez', + 'mik', + 'mikbe', + 'mikben', + 'mikből', + 'miken', + 'miket', + 'mikhez', + 'mikkel', + 'mikké', + 'miknek', + 'miknél', + 'mikor', + 'mikre', + 'mikről', + 'miktől', + 'mikért', + 'milyen', + 'min', + 'mind', + 'mindegyik', + 'mindegyiket', + 'minden', + 'mindenesetre', + 'mindenki', + 'mindent', + 'mindenütt', + 'mindig', + 'mindketten', + 'minek', + 'minket', + 'mint', + 'mintha', + 'minél', + 'mire', + 'miről', + 'mit', + 'mitől', + 'mivel', + 'mivé', + 'miért', + 'mondta', + 'most', + 'mostanáig', + 'már', + 'más', + 'másik', + 'másikat', + 'másnap', + 'második', + 'másodszor', + 'mások', + 'másokat', + 'mást', + 'még', + 'mégis', + 'míg', + 'mögé', + 'mögéd', + 'mögéjük', + 'mögém', + 'mögénk', + 'mögétek', + 'mögött', + 'mögötte', + 'mögötted', + 'mögöttem', + 'mögöttetek', + 'mögöttük', + 'mögöttünk', + 'mögül', + 'mögüle', + 'mögüled', + 'mögülem', + 'mögületek', + 'mögülük', + 'mögülünk', + 'múltkor', + 'múlva', + 'na', + 'nagy', + 'nagyobb', + 'nagyon', + 'naponta', + 'napot', + 'ne', + 'negyedik', + 'negyediket', + 'negyven', + 'neked', + 'nekem', + 'neki', + 'nekik', + 'nektek', + 'nekünk', + 'nem', + 'nemcsak', + 'nemrég', + 'nincs', + 'nyolc', + 'nyolcadik', + 'nyolcadikat', + 'nyolcat', + 'nyolcvan', + 'nála', + 'nálad', + 'nálam', + 'nálatok', + 'náluk', + 'nálunk', + 'négy', + 'négyet', + 'néha', + 'néhány', + 'nélkül', + 'o', + 'oda', + 'ok', + 'olyan', + 'onnan', + 'ott', + 'pedig', + 'persze', + 'pár', + 'például', + 'rajta', + 'rajtad', + 'rajtam', + 'rajtatok', + 'rajtuk', + 'rajtunk', + 'rendben', + 'rosszul', + 'rá', + 'rád', + 'rájuk', + 'rám', + 'ránk', + 'rátok', + 'régen', + 'régóta', + 'részére', + 'róla', + 'rólad', + 'rólam', + 'rólatok', + 'róluk', + 'rólunk', + 'rögtön', + 's', + 'saját', + 'se', + 'sem', + 'semmi', + 'semmilyen', + 'semmiség', + 'senki', + 'soha', + 'sok', + 'sokan', + 'sokat', + 'sokkal', + 'sokszor', + 'sokáig', + 'során', + 'stb.', + 'szemben', + 'szerbusz', + 'szerint', + 'szerinte', + 'szerinted', + 'szerintem', + 'szerintetek', + 'szerintük', + 'szerintünk', + 'szervusz', + 'szinte', + 'számára', + 'száz', + 'századik', + 'százat', + 'szépen', + 'szét', + 'szíves', + 'szívesen', + 'szíveskedjék', + 'sőt', + 'talán', + 'tavaly', + 'te', + 'tegnap', + 'tegnapelőtt', + 'tehát', + 'tele', + 'teljes', + 'tessék', + 'ti', + 'tied', + 'titeket', + 'tizedik', + 'tizediket', + 'tizenegy', + 'tizenegyedik', + 'tizenhat', + 'tizenhárom', + 'tizenhét', + 'tizenkettedik', + 'tizenkettő', + 'tizenkilenc', + 'tizenkét', + 'tizennyolc', + 'tizennégy', + 'tizenöt', + 'tizet', + 'tovább', + 'további', + 'továbbá', + 'távol', + 'téged', + 'tényleg', + 'tíz', + 'több', + 'többi', + 'többször', + 'túl', + 'tőle', + 'tőled', + 'tőlem', + 'tőletek', + 'tőlük', + 'tőlünk', + 'ugyanakkor', + 'ugyanez', + 'ugyanis', + 'ugye', + 'urak', + 'uram', + 'urat', + 'utoljára', + 'utolsó', + 'után', + 'utána', + 'vagy', + 'vagyis', + 'vagyok', + 'vagytok', + 'vagyunk', + 'vajon', + 'valahol', + 'valaki', + 'valakit', + 'valamelyik', + 'valami', + 'valamint', + 'való', + 'van', + 'vannak', + 'vele', + 'veled', + 'velem', + 'veletek', + 'velük', + 'velünk', + 'vissza', + 'viszlát', + 'viszont', + 'viszontlátásra', + 'volna', + 'volnának', + 'volnék', + 'volt', + 'voltak', + 'voltam', + 'voltunk', + 'végre', + 'végén', + 'végül', + 'által', + 'általában', + 'ám', + 'át', + 'éljen', + 'én', + 'éppen', + 'érte', + 'érted', + 'értem', + 'értetek', + 'értük', + 'értünk', + 'és', + 'év', + 'évben', + 'éve', + 'évek', + 'éves', + 'évi', + 'évvel', + 'így', + 'óta', + 'õ', + 'õk', + 'õket', + 'ön', + 'önbe', + 'önben', + 'önből', + 'önhöz', + 'önnek', + 'önnel', + 'önnél', + 'önre', + 'önről', + 'önt', + 'öntől', + 'önért', + 'önök', + 'önökbe', + 'önökben', + 'önökből', + 'önöket', + 'önökhöz', + 'önökkel', + 'önöknek', + 'önöknél', + 'önökre', + 'önökről', + 'önöktől', + 'önökért', + 'önökön', + 'önön', + 'össze', + 'öt', + 'ötven', + 'ötödik', + 'ötödiket', + 'ötöt', + 'úgy', + 'úgyis', + 'úgynevezett', + 'új', + 'újabb', + 'újra', + 'úr', + 'ő', + 'ők', + 'őket', + 'őt', + ], + id: [ + 'ada', + 'adalah', + 'adanya', + 'adapun', + 'agak', + 'agaknya', + 'agar', + 'akan', + 'akankah', + 'akhir', + 'akhiri', + 'akhirnya', + 'aku', + 'akulah', + 'amat', + 'amatlah', + 'anda', + 'andalah', + 'antar', + 'antara', + 'antaranya', + 'apa', + 'apaan', + 'apabila', + 'apakah', + 'apalagi', + 'apatah', + 'artinya', + 'asal', + 'asalkan', + 'atas', + 'atau', + 'ataukah', + 'ataupun', + 'awal', + 'awalnya', + 'bagai', + 'bagaikan', + 'bagaimana', + 'bagaimanakah', + 'bagaimanapun', + 'bagi', + 'bagian', + 'bahkan', + 'bahwa', + 'bahwasanya', + 'baik', + 'bakal', + 'bakalan', + 'balik', + 'banyak', + 'bapak', + 'baru', + 'bawah', + 'beberapa', + 'begini', + 'beginian', + 'beginikah', + 'beginilah', + 'begitu', + 'begitukah', + 'begitulah', + 'begitupun', + 'bekerja', + 'belakang', + 'belakangan', + 'belum', + 'belumlah', + 'benar', + 'benarkah', + 'benarlah', + 'berada', + 'berakhir', + 'berakhirlah', + 'berakhirnya', + 'berapa', + 'berapakah', + 'berapalah', + 'berapapun', + 'berarti', + 'berawal', + 'berbagai', + 'berdatangan', + 'beri', + 'berikan', + 'berikut', + 'berikutnya', + 'berjumlah', + 'berkali-kali', + 'berkata', + 'berkehendak', + 'berkeinginan', + 'berkenaan', + 'berlainan', + 'berlalu', + 'berlangsung', + 'berlebihan', + 'bermacam', + 'bermacam-macam', + 'bermaksud', + 'bermula', + 'bersama', + 'bersama-sama', + 'bersiap', + 'bersiap-siap', + 'bertanya', + 'bertanya-tanya', + 'berturut', + 'berturut-turut', + 'bertutur', + 'berujar', + 'berupa', + 'besar', + 'betul', + 'betulkah', + 'biasa', + 'biasanya', + 'bila', + 'bilakah', + 'bisa', + 'bisakah', + 'boleh', + 'bolehkah', + 'bolehlah', + 'buat', + 'bukan', + 'bukankah', + 'bukanlah', + 'bukannya', + 'bulan', + 'bung', + 'cara', + 'caranya', + 'cukup', + 'cukupkah', + 'cukuplah', + 'cuma', + 'dahulu', + 'dalam', + 'dan', + 'dapat', + 'dari', + 'daripada', + 'datang', + 'dekat', + 'demi', + 'demikian', + 'demikianlah', + 'dengan', + 'depan', + 'di', + 'dia', + 'diakhiri', + 'diakhirinya', + 'dialah', + 'diantara', + 'diantaranya', + 'diberi', + 'diberikan', + 'diberikannya', + 'dibuat', + 'dibuatnya', + 'didapat', + 'didatangkan', + 'digunakan', + 'diibaratkan', + 'diibaratkannya', + 'diingat', + 'diingatkan', + 'diinginkan', + 'dijawab', + 'dijelaskan', + 'dijelaskannya', + 'dikarenakan', + 'dikatakan', + 'dikatakannya', + 'dikerjakan', + 'diketahui', + 'diketahuinya', + 'dikira', + 'dilakukan', + 'dilalui', + 'dilihat', + 'dimaksud', + 'dimaksudkan', + 'dimaksudkannya', + 'dimaksudnya', + 'diminta', + 'dimintai', + 'dimisalkan', + 'dimulai', + 'dimulailah', + 'dimulainya', + 'dimungkinkan', + 'dini', + 'dipastikan', + 'diperbuat', + 'diperbuatnya', + 'dipergunakan', + 'diperkirakan', + 'diperlihatkan', + 'diperlukan', + 'diperlukannya', + 'dipersoalkan', + 'dipertanyakan', + 'dipunyai', + 'diri', + 'dirinya', + 'disampaikan', + 'disebut', + 'disebutkan', + 'disebutkannya', + 'disini', + 'disinilah', + 'ditambahkan', + 'ditandaskan', + 'ditanya', + 'ditanyai', + 'ditanyakan', + 'ditegaskan', + 'ditujukan', + 'ditunjuk', + 'ditunjuki', + 'ditunjukkan', + 'ditunjukkannya', + 'ditunjuknya', + 'dituturkan', + 'dituturkannya', + 'diucapkan', + 'diucapkannya', + 'diungkapkan', + 'dong', + 'dua', + 'dulu', + 'empat', + 'enggak', + 'enggaknya', + 'entah', + 'entahlah', + 'guna', + 'gunakan', + 'hal', + 'hampir', + 'hanya', + 'hanyalah', + 'hari', + 'harus', + 'haruslah', + 'harusnya', + 'hendak', + 'hendaklah', + 'hendaknya', + 'hingga', + 'ia', + 'ialah', + 'ibarat', + 'ibaratkan', + 'ibaratnya', + 'ibu', + 'ikut', + 'ingat', + 'ingat-ingat', + 'ingin', + 'inginkah', + 'inginkan', + 'ini', + 'inikah', + 'inilah', + 'itu', + 'itukah', + 'itulah', + 'jadi', + 'jadilah', + 'jadinya', + 'jangan', + 'jangankan', + 'janganlah', + 'jauh', + 'jawab', + 'jawaban', + 'jawabnya', + 'jelas', + 'jelaskan', + 'jelaslah', + 'jelasnya', + 'jika', + 'jikalau', + 'juga', + 'jumlah', + 'jumlahnya', + 'justru', + 'kala', + 'kalau', + 'kalaulah', + 'kalaupun', + 'kalian', + 'kami', + 'kamilah', + 'kamu', + 'kamulah', + 'kan', + 'kapan', + 'kapankah', + 'kapanpun', + 'karena', + 'karenanya', + 'kasus', + 'kata', + 'katakan', + 'katakanlah', + 'katanya', + 'ke', + 'keadaan', + 'kebetulan', + 'kecil', + 'kedua', + 'keduanya', + 'keinginan', + 'kelamaan', + 'kelihatan', + 'kelihatannya', + 'kelima', + 'keluar', + 'kembali', + 'kemudian', + 'kemungkinan', + 'kemungkinannya', + 'kenapa', + 'kepada', + 'kepadanya', + 'kesampaian', + 'keseluruhan', + 'keseluruhannya', + 'keterlaluan', + 'ketika', + 'khususnya', + 'kini', + 'kinilah', + 'kira', + 'kira-kira', + 'kiranya', + 'kita', + 'kitalah', + 'kok', + 'kurang', + 'lagi', + 'lagian', + 'lah', + 'lain', + 'lainnya', + 'lalu', + 'lama', + 'lamanya', + 'lanjut', + 'lanjutnya', + 'lebih', + 'lewat', + 'lima', + 'luar', + 'macam', + 'maka', + 'makanya', + 'makin', + 'malah', + 'malahan', + 'mampu', + 'mampukah', + 'mana', + 'manakala', + 'manalagi', + 'masa', + 'masalah', + 'masalahnya', + 'masih', + 'masihkah', + 'masing', + 'masing-masing', + 'mau', + 'maupun', + 'melainkan', + 'melakukan', + 'melalui', + 'melihat', + 'melihatnya', + 'memang', + 'memastikan', + 'memberi', + 'memberikan', + 'membuat', + 'memerlukan', + 'memihak', + 'meminta', + 'memintakan', + 'memisalkan', + 'memperbuat', + 'mempergunakan', + 'memperkirakan', + 'memperlihatkan', + 'mempersiapkan', + 'mempersoalkan', + 'mempertanyakan', + 'mempunyai', + 'memulai', + 'memungkinkan', + 'menaiki', + 'menambahkan', + 'menandaskan', + 'menanti', + 'menanti-nanti', + 'menantikan', + 'menanya', + 'menanyai', + 'menanyakan', + 'mendapat', + 'mendapatkan', + 'mendatang', + 'mendatangi', + 'mendatangkan', + 'menegaskan', + 'mengakhiri', + 'mengapa', + 'mengatakan', + 'mengatakannya', + 'mengenai', + 'mengerjakan', + 'mengetahui', + 'menggunakan', + 'menghendaki', + 'mengibaratkan', + 'mengibaratkannya', + 'mengingat', + 'mengingatkan', + 'menginginkan', + 'mengira', + 'mengucapkan', + 'mengucapkannya', + 'mengungkapkan', + 'menjadi', + 'menjawab', + 'menjelaskan', + 'menuju', + 'menunjuk', + 'menunjuki', + 'menunjukkan', + 'menunjuknya', + 'menurut', + 'menuturkan', + 'menyampaikan', + 'menyangkut', + 'menyatakan', + 'menyebutkan', + 'menyeluruh', + 'menyiapkan', + 'merasa', + 'mereka', + 'merekalah', + 'merupakan', + 'meski', + 'meskipun', + 'meyakini', + 'meyakinkan', + 'minta', + 'mirip', + 'misal', + 'misalkan', + 'misalnya', + 'mula', + 'mulai', + 'mulailah', + 'mulanya', + 'mungkin', + 'mungkinkah', + 'nah', + 'naik', + 'namun', + 'nanti', + 'nantinya', + 'nyaris', + 'nyatanya', + 'oleh', + 'olehnya', + 'pada', + 'padahal', + 'padanya', + 'pak', + 'paling', + 'panjang', + 'pantas', + 'para', + 'pasti', + 'pastilah', + 'penting', + 'pentingnya', + 'per', + 'percuma', + 'perlu', + 'perlukah', + 'perlunya', + 'pernah', + 'persoalan', + 'pertama', + 'pertama-tama', + 'pertanyaan', + 'pertanyakan', + 'pihak', + 'pihaknya', + 'pukul', + 'pula', + 'pun', + 'punya', + 'rasa', + 'rasanya', + 'rata', + 'rupanya', + 'saat', + 'saatnya', + 'saja', + 'sajalah', + 'saling', + 'sama', + 'sama-sama', + 'sambil', + 'sampai', + 'sampai-sampai', + 'sampaikan', + 'sana', + 'sangat', + 'sangatlah', + 'satu', + 'saya', + 'sayalah', + 'se', + 'sebab', + 'sebabnya', + 'sebagai', + 'sebagaimana', + 'sebagainya', + 'sebagian', + 'sebaik', + 'sebaik-baiknya', + 'sebaiknya', + 'sebaliknya', + 'sebanyak', + 'sebegini', + 'sebegitu', + 'sebelum', + 'sebelumnya', + 'sebenarnya', + 'seberapa', + 'sebesar', + 'sebetulnya', + 'sebisanya', + 'sebuah', + 'sebut', + 'sebutlah', + 'sebutnya', + 'secara', + 'secukupnya', + 'sedang', + 'sedangkan', + 'sedemikian', + 'sedikit', + 'sedikitnya', + 'seenaknya', + 'segala', + 'segalanya', + 'segera', + 'seharusnya', + 'sehingga', + 'seingat', + 'sejak', + 'sejauh', + 'sejenak', + 'sejumlah', + 'sekadar', + 'sekadarnya', + 'sekali', + 'sekali-kali', + 'sekalian', + 'sekaligus', + 'sekalipun', + 'sekarang', + 'sekecil', + 'seketika', + 'sekiranya', + 'sekitar', + 'sekitarnya', + 'sekurang-kurangnya', + 'sekurangnya', + 'sela', + 'selagi', + 'selain', + 'selaku', + 'selalu', + 'selama', + 'selama-lamanya', + 'selamanya', + 'selanjutnya', + 'seluruh', + 'seluruhnya', + 'semacam', + 'semakin', + 'semampu', + 'semampunya', + 'semasa', + 'semasih', + 'semata', + 'semata-mata', + 'semaunya', + 'sementara', + 'semisal', + 'semisalnya', + 'sempat', + 'semua', + 'semuanya', + 'semula', + 'sendiri', + 'sendirian', + 'sendirinya', + 'seolah', + 'seolah-olah', + 'seorang', + 'sepanjang', + 'sepantasnya', + 'sepantasnyalah', + 'seperlunya', + 'seperti', + 'sepertinya', + 'sepihak', + 'sering', + 'seringnya', + 'serta', + 'serupa', + 'sesaat', + 'sesama', + 'sesampai', + 'sesegera', + 'sesekali', + 'seseorang', + 'sesuatu', + 'sesuatunya', + 'sesudah', + 'sesudahnya', + 'setelah', + 'setempat', + 'setengah', + 'seterusnya', + 'setiap', + 'setiba', + 'setibanya', + 'setidak-tidaknya', + 'setidaknya', + 'setinggi', + 'seusai', + 'sewaktu', + 'siap', + 'siapa', + 'siapakah', + 'siapapun', + 'sini', + 'sinilah', + 'soal', + 'soalnya', + 'suatu', + 'sudah', + 'sudahkah', + 'sudahlah', + 'supaya', + 'tadi', + 'tadinya', + 'tahu', + 'tahun', + 'tak', + 'tambah', + 'tambahnya', + 'tampak', + 'tampaknya', + 'tandas', + 'tandasnya', + 'tanpa', + 'tanya', + 'tanyakan', + 'tanyanya', + 'tapi', + 'tegas', + 'tegasnya', + 'telah', + 'tempat', + 'tengah', + 'tentang', + 'tentu', + 'tentulah', + 'tentunya', + 'tepat', + 'terakhir', + 'terasa', + 'terbanyak', + 'terdahulu', + 'terdapat', + 'terdiri', + 'terhadap', + 'terhadapnya', + 'teringat', + 'teringat-ingat', + 'terjadi', + 'terjadilah', + 'terjadinya', + 'terkira', + 'terlalu', + 'terlebih', + 'terlihat', + 'termasuk', + 'ternyata', + 'tersampaikan', + 'tersebut', + 'tersebutlah', + 'tertentu', + 'tertuju', + 'terus', + 'terutama', + 'tetap', + 'tetapi', + 'tiap', + 'tiba', + 'tiba-tiba', + 'tidak', + 'tidakkah', + 'tidaklah', + 'tiga', + 'tinggi', + 'toh', + 'tunjuk', + 'turut', + 'tutur', + 'tuturnya', + 'ucap', + 'ucapnya', + 'ujar', + 'ujarnya', + 'umum', + 'umumnya', + 'ungkap', + 'ungkapnya', + 'untuk', + 'usah', + 'usai', + 'waduh', + 'wah', + 'wahai', + 'waktu', + 'waktunya', + 'walau', + 'walaupun', + 'wong', + 'yaitu', + 'yakin', + 'yakni', + 'yang', + ], + ga: [ + 'a', + 'ach', + 'ag', + 'agus', + 'an', + 'aon', + 'ar', + 'arna', + 'as', + "b'", + 'ba', + 'beirt', + 'bhúr', + 'caoga', + 'ceathair', + 'ceathrar', + 'chomh', + 'chtó', + 'chuig', + 'chun', + 'cois', + 'céad', + 'cúig', + 'cúigear', + "d'", + 'daichead', + 'dar', + 'de', + 'deich', + 'deichniúr', + 'den', + 'dhá', + 'do', + 'don', + 'dtí', + 'dá', + 'dár', + 'dó', + 'faoi', + 'faoin', + 'faoina', + 'faoinár', + 'fara', + 'fiche', + 'gach', + 'gan', + 'go', + 'gur', + 'haon', + 'hocht', + 'i', + 'iad', + 'idir', + 'in', + 'ina', + 'ins', + 'inár', + 'is', + 'le', + 'leis', + 'lena', + 'lenár', + "m'", + 'mar', + 'mo', + 'mé', + 'na', + 'nach', + 'naoi', + 'naonúr', + 'ná', + 'ní', + 'níor', + 'nó', + 'nócha', + 'ocht', + 'ochtar', + 'os', + 'roimh', + 'sa', + 'seacht', + 'seachtar', + 'seachtó', + 'seasca', + 'seisear', + 'siad', + 'sibh', + 'sinn', + 'sna', + 'sé', + 'sí', + 'tar', + 'thar', + 'thú', + 'triúr', + 'trí', + 'trína', + 'trínár', + 'tríocha', + 'tú', + 'um', + 'ár', + 'é', + 'éis', + 'í', + 'ó', + 'ón', + 'óna', + 'ónár', + ], + it: [ + 'a', + 'abbastanza', + 'abbia', + 'abbiamo', + 'abbiano', + 'abbiate', + 'accidenti', + 'ad', + 'adesso', + 'affinché', + 'agl', + 'agli', + 'ahime', + 'ahimè', + 'ai', + 'al', + 'alcuna', + 'alcuni', + 'alcuno', + 'all', + 'alla', + 'alle', + 'allo', + 'allora', + 'altre', + 'altri', + 'altrimenti', + 'altro', + 'altrove', + 'altrui', + 'anche', + 'ancora', + 'anni', + 'anno', + 'ansa', + 'anticipo', + 'assai', + 'attesa', + 'attraverso', + 'avanti', + 'avemmo', + 'avendo', + 'avente', + 'aver', + 'avere', + 'averlo', + 'avesse', + 'avessero', + 'avessi', + 'avessimo', + 'aveste', + 'avesti', + 'avete', + 'aveva', + 'avevamo', + 'avevano', + 'avevate', + 'avevi', + 'avevo', + 'avrai', + 'avranno', + 'avrebbe', + 'avrebbero', + 'avrei', + 'avremmo', + 'avremo', + 'avreste', + 'avresti', + 'avrete', + 'avrà', + 'avrò', + 'avuta', + 'avute', + 'avuti', + 'avuto', + 'basta', + 'ben', + 'bene', + 'benissimo', + 'brava', + 'bravo', + 'buono', + 'c', + 'caso', + 'cento', + 'certa', + 'certe', + 'certi', + 'certo', + 'che', + 'chi', + 'chicchessia', + 'chiunque', + 'ci', + 'ciascuna', + 'ciascuno', + 'cima', + 'cinque', + 'cio', + 'cioe', + 'cioè', + 'circa', + 'citta', + 'città', + 'ciò', + 'co', + 'codesta', + 'codesti', + 'codesto', + 'cogli', + 'coi', + 'col', + 'colei', + 'coll', + 'coloro', + 'colui', + 'come', + 'cominci', + 'comprare', + 'comunque', + 'con', + 'concernente', + 'conclusione', + 'consecutivi', + 'consecutivo', + 'consiglio', + 'contro', + 'cortesia', + 'cos', + 'cosa', + 'cosi', + 'così', + 'cui', + 'd', + 'da', + 'dagl', + 'dagli', + 'dai', + 'dal', + 'dall', + 'dalla', + 'dalle', + 'dallo', + 'dappertutto', + 'davanti', + 'degl', + 'degli', + 'dei', + 'del', + 'dell', + 'della', + 'delle', + 'dello', + 'dentro', + 'detto', + 'deve', + 'devo', + 'di', + 'dice', + 'dietro', + 'dire', + 'dirimpetto', + 'diventa', + 'diventare', + 'diventato', + 'dopo', + 'doppio', + 'dov', + 'dove', + 'dovra', + 'dovrà', + 'dovunque', + 'due', + 'dunque', + 'durante', + 'e', + 'ebbe', + 'ebbero', + 'ebbi', + 'ecc', + 'ecco', + 'ed', + 'effettivamente', + 'egli', + 'ella', + 'entrambi', + 'eppure', + 'era', + 'erano', + 'eravamo', + 'eravate', + 'eri', + 'ero', + 'esempio', + 'esse', + 'essendo', + 'esser', + 'essere', + 'essi', + 'ex', + 'fa', + 'faccia', + 'facciamo', + 'facciano', + 'facciate', + 'faccio', + 'facemmo', + 'facendo', + 'facesse', + 'facessero', + 'facessi', + 'facessimo', + 'faceste', + 'facesti', + 'faceva', + 'facevamo', + 'facevano', + 'facevate', + 'facevi', + 'facevo', + 'fai', + 'fanno', + 'farai', + 'faranno', + 'fare', + 'farebbe', + 'farebbero', + 'farei', + 'faremmo', + 'faremo', + 'fareste', + 'faresti', + 'farete', + 'farà', + 'farò', + 'fatto', + 'favore', + 'fece', + 'fecero', + 'feci', + 'fin', + 'finalmente', + 'finche', + 'fine', + 'fino', + 'forse', + 'forza', + 'fosse', + 'fossero', + 'fossi', + 'fossimo', + 'foste', + 'fosti', + 'fra', + 'frattempo', + 'fu', + 'fui', + 'fummo', + 'fuori', + 'furono', + 'futuro', + 'generale', + 'gente', + 'gia', + 'giacche', + 'giorni', + 'giorno', + 'giu', + 'già', + 'gli', + 'gliela', + 'gliele', + 'glieli', + 'glielo', + 'gliene', + 'grande', + 'grazie', + 'gruppo', + 'ha', + 'haha', + 'hai', + 'hanno', + 'ho', + 'i', + 'ie', + 'ieri', + 'il', + 'improvviso', + 'in', + 'inc', + 'indietro', + 'infatti', + 'inoltre', + 'insieme', + 'intanto', + 'intorno', + 'invece', + 'io', + 'l', + 'la', + 'lasciato', + 'lato', + 'le', + 'lei', + 'li', + 'lo', + 'lontano', + 'loro', + 'lui', + 'lungo', + 'luogo', + 'là', + 'ma', + 'macche', + 'magari', + 'maggior', + 'mai', + 'male', + 'malgrado', + 'malissimo', + 'me', + 'medesimo', + 'mediante', + 'meglio', + 'meno', + 'mentre', + 'mesi', + 'mezzo', + 'mi', + 'mia', + 'mie', + 'miei', + 'mila', + 'miliardi', + 'milioni', + 'minimi', + 'mio', + 'modo', + 'molta', + 'molti', + 'moltissimo', + 'molto', + 'momento', + 'mondo', + 'ne', + 'negl', + 'negli', + 'nei', + 'nel', + 'nell', + 'nella', + 'nelle', + 'nello', + 'nemmeno', + 'neppure', + 'nessun', + 'nessuna', + 'nessuno', + 'niente', + 'no', + 'noi', + 'nome', + 'non', + 'nondimeno', + 'nonostante', + 'nonsia', + 'nostra', + 'nostre', + 'nostri', + 'nostro', + 'novanta', + 'nove', + 'nulla', + 'nuovi', + 'nuovo', + 'o', + 'od', + 'oggi', + 'ogni', + 'ognuna', + 'ognuno', + 'oltre', + 'oppure', + 'ora', + 'ore', + 'osi', + 'ossia', + 'ottanta', + 'otto', + 'paese', + 'parecchi', + 'parecchie', + 'parecchio', + 'parte', + 'partendo', + 'peccato', + 'peggio', + 'per', + 'perche', + 'perchè', + 'perché', + 'percio', + 'perciò', + 'perfino', + 'pero', + 'persino', + 'persone', + 'però', + 'piedi', + 'pieno', + 'piglia', + 'piu', + 'piuttosto', + 'più', + 'po', + 'pochissimo', + 'poco', + 'poi', + 'poiche', + 'possa', + 'possedere', + 'posteriore', + 'posto', + 'potrebbe', + 'preferibilmente', + 'presa', + 'press', + 'prima', + 'primo', + 'principalmente', + 'probabilmente', + 'promesso', + 'proprio', + 'puo', + 'pure', + 'purtroppo', + 'può', + 'qua', + 'qualche', + 'qualcosa', + 'qualcuna', + 'qualcuno', + 'quale', + 'quali', + 'qualunque', + 'quando', + 'quanta', + 'quante', + 'quanti', + 'quanto', + 'quantunque', + 'quarto', + 'quasi', + 'quattro', + 'quel', + 'quella', + 'quelle', + 'quelli', + 'quello', + 'quest', + 'questa', + 'queste', + 'questi', + 'questo', + 'qui', + 'quindi', + 'quinto', + 'realmente', + 'recente', + 'recentemente', + 'registrazione', + 'relativo', + 'riecco', + 'rispetto', + 'salvo', + 'sara', + 'sarai', + 'saranno', + 'sarebbe', + 'sarebbero', + 'sarei', + 'saremmo', + 'saremo', + 'sareste', + 'saresti', + 'sarete', + 'sarà', + 'sarò', + 'scola', + 'scopo', + 'scorso', + 'se', + 'secondo', + 'seguente', + 'seguito', + 'sei', + 'sembra', + 'sembrare', + 'sembrato', + 'sembrava', + 'sembri', + 'sempre', + 'senza', + 'sette', + 'si', + 'sia', + 'siamo', + 'siano', + 'siate', + 'siete', + 'sig', + 'solito', + 'solo', + 'soltanto', + 'sono', + 'sopra', + 'soprattutto', + 'sotto', + 'spesso', + 'sta', + 'stai', + 'stando', + 'stanno', + 'starai', + 'staranno', + 'starebbe', + 'starebbero', + 'starei', + 'staremmo', + 'staremo', + 'stareste', + 'staresti', + 'starete', + 'starà', + 'starò', + 'stata', + 'state', + 'stati', + 'stato', + 'stava', + 'stavamo', + 'stavano', + 'stavate', + 'stavi', + 'stavo', + 'stemmo', + 'stessa', + 'stesse', + 'stessero', + 'stessi', + 'stessimo', + 'stesso', + 'steste', + 'stesti', + 'stette', + 'stettero', + 'stetti', + 'stia', + 'stiamo', + 'stiano', + 'stiate', + 'sto', + 'su', + 'sua', + 'subito', + 'successivamente', + 'successivo', + 'sue', + 'sugl', + 'sugli', + 'sui', + 'sul', + 'sull', + 'sulla', + 'sulle', + 'sullo', + 'suo', + 'suoi', + 'tale', + 'tali', + 'talvolta', + 'tanto', + 'te', + 'tempo', + 'terzo', + 'th', + 'ti', + 'titolo', + 'tra', + 'tranne', + 'tre', + 'trenta', + 'triplo', + 'troppo', + 'trovato', + 'tu', + 'tua', + 'tue', + 'tuo', + 'tuoi', + 'tutta', + 'tuttavia', + 'tutte', + 'tutti', + 'tutto', + 'uguali', + 'ulteriore', + 'ultimo', + 'un', + 'una', + 'uno', + 'uomo', + 'va', + 'vai', + 'vale', + 'vari', + 'varia', + 'varie', + 'vario', + 'verso', + 'vi', + 'vicino', + 'visto', + 'vita', + 'voi', + 'volta', + 'volte', + 'vostra', + 'vostre', + 'vostri', + 'vostro', + 'è', + ], + ja: [ + 'あそこ', + 'あっ', + 'あの', + 'あのかた', + 'あの人', + 'あり', + 'あります', + 'ある', + 'あれ', + 'い', + 'いう', + 'います', + 'いる', + 'う', + 'うち', + 'え', + 'お', + 'および', + 'おり', + 'おります', + 'か', + 'かつて', + 'から', + 'が', + 'き', + 'ここ', + 'こちら', + 'こと', + 'この', + 'これ', + 'これら', + 'さ', + 'さらに', + 'し', + 'しかし', + 'する', + 'ず', + 'せ', + 'せる', + 'そこ', + 'そして', + 'その', + 'その他', + 'その後', + 'それ', + 'それぞれ', + 'それで', + 'た', + 'ただし', + 'たち', + 'ため', + 'たり', + 'だ', + 'だっ', + 'だれ', + 'つ', + 'て', + 'で', + 'でき', + 'できる', + 'です', + 'では', + 'でも', + 'と', + 'という', + 'といった', + 'とき', + 'ところ', + 'として', + 'とともに', + 'とも', + 'と共に', + 'どこ', + 'どの', + 'な', + 'ない', + 'なお', + 'なかっ', + 'ながら', + 'なく', + 'なっ', + 'など', + 'なに', + 'なら', + 'なり', + 'なる', + 'なん', + 'に', + 'において', + 'における', + 'について', + 'にて', + 'によって', + 'により', + 'による', + 'に対して', + 'に対する', + 'に関する', + 'の', + 'ので', + 'のみ', + 'は', + 'ば', + 'へ', + 'ほか', + 'ほとんど', + 'ほど', + 'ます', + 'また', + 'または', + 'まで', + 'も', + 'もの', + 'ものの', + 'や', + 'よう', + 'より', + 'ら', + 'られ', + 'られる', + 'れ', + 'れる', + 'を', + 'ん', + '何', + '及び', + '彼', + '彼女', + '我々', + '特に', + '私', + '私達', + '貴方', + '貴方方', + ], + ko: [ + '!', + '"', + '$', + '%', + '&', + "'", + '(', + ')', + '*', + '+', + ',', + '-', + '.', + '...', + '0', + '1', + '2', + '3', + '4', + '5', + '6', + '7', + '8', + '9', + ';', + '<', + '=', + '>', + '?', + '@', + '\\', + '^', + '_', + '`', + '|', + '~', + '·', + '—', + '——', + '‘', + '’', + '“', + '”', + '…', + '、', + '。', + '〈', + '〉', + '《', + '》', + '가', + '가까스로', + '가령', + '각', + '각각', + '각자', + '각종', + '갖고말하자면', + '같다', + '같이', + '개의치않고', + '거니와', + '거바', + '거의', + '것', + '것과 같이', + '것들', + '게다가', + '게우다', + '겨우', + '견지에서', + '결과에 이르다', + '결국', + '결론을 낼 수 있다', + '겸사겸사', + '고려하면', + '고로', + '곧', + '공동으로', + '과', + '과연', + '관계가 있다', + '관계없이', + '관련이 있다', + '관하여', + '관한', + '관해서는', + '구', + '구체적으로', + '구토하다', + '그', + '그들', + '그때', + '그래', + '그래도', + '그래서', + '그러나', + '그러니', + '그러니까', + '그러면', + '그러므로', + '그러한즉', + '그런 까닭에', + '그런데', + '그런즉', + '그럼', + '그럼에도 불구하고', + '그렇게 함으로써', + '그렇지', + '그렇지 않다면', + '그렇지 않으면', + '그렇지만', + '그렇지않으면', + '그리고', + '그리하여', + '그만이다', + '그에 따르는', + '그위에', + '그저', + '그중에서', + '그치지 않다', + '근거로', + '근거하여', + '기대여', + '기점으로', + '기준으로', + '기타', + '까닭으로', + '까악', + '까지', + '까지 미치다', + '까지도', + '꽈당', + '끙끙', + '끼익', + '나', + '나머지는', + '남들', + '남짓', + '너', + '너희', + '너희들', + '네', + '넷', + '년', + '논하지 않다', + '놀라다', + '누가 알겠는가', + '누구', + '다른', + '다른 방면으로', + '다만', + '다섯', + '다소', + '다수', + '다시 말하자면', + '다시말하면', + '다음', + '다음에', + '다음으로', + '단지', + '답다', + '당신', + '당장', + '대로 하다', + '대하면', + '대하여', + '대해 말하자면', + '대해서', + '댕그', + '더구나', + '더군다나', + '더라도', + '더불어', + '더욱더', + '더욱이는', + '도달하다', + '도착하다', + '동시에', + '동안', + '된바에야', + '된이상', + '두번째로', + '둘', + '둥둥', + '뒤따라', + '뒤이어', + '든간에', + '들', + '등', + '등등', + '딩동', + '따라', + '따라서', + '따위', + '따지지 않다', + '딱', + '때', + '때가 되어', + '때문에', + '또', + '또한', + '뚝뚝', + '라 해도', + '령', + '로', + '로 인하여', + '로부터', + '로써', + '륙', + '를', + '마음대로', + '마저', + '마저도', + '마치', + '막론하고', + '만 못하다', + '만약', + '만약에', + '만은 아니다', + '만이 아니다', + '만일', + '만큼', + '말하자면', + '말할것도 없고', + '매', + '매번', + '메쓰겁다', + '몇', + '모', + '모두', + '무렵', + '무릎쓰고', + '무슨', + '무엇', + '무엇때문에', + '물론', + '및', + '바꾸어말하면', + '바꾸어말하자면', + '바꾸어서 말하면', + '바꾸어서 한다면', + '바꿔 말하면', + '바로', + '바와같이', + '밖에 안된다', + '반대로', + '반대로 말하자면', + '반드시', + '버금', + '보는데서', + '보다더', + '보드득', + '본대로', + '봐', + '봐라', + '부류의 사람들', + '부터', + '불구하고', + '불문하고', + '붕붕', + '비걱거리다', + '비교적', + '비길수 없다', + '비로소', + '비록', + '비슷하다', + '비추어 보아', + '비하면', + '뿐만 아니라', + '뿐만아니라', + '뿐이다', + '삐걱', + '삐걱거리다', + '사', + '삼', + '상대적으로 말하자면', + '생각한대로', + '설령', + '설마', + '설사', + '셋', + '소생', + '소인', + '솨', + '쉿', + '습니까', + '습니다', + '시각', + '시간', + '시작하여', + '시초에', + '시키다', + '실로', + '심지어', + '아', + '아니', + '아니나다를가', + '아니라면', + '아니면', + '아니었다면', + '아래윗', + '아무거나', + '아무도', + '아야', + '아울러', + '아이', + '아이고', + '아이구', + '아이야', + '아이쿠', + '아하', + '아홉', + '안 그러면', + '않기 위하여', + '않기 위해서', + '알 수 있다', + '알았어', + '앗', + '앞에서', + '앞의것', + '야', + '약간', + '양자', + '어', + '어기여차', + '어느', + '어느 년도', + '어느것', + '어느곳', + '어느때', + '어느쪽', + '어느해', + '어디', + '어때', + '어떠한', + '어떤', + '어떤것', + '어떤것들', + '어떻게', + '어떻해', + '어이', + '어째서', + '어쨋든', + '어쩔수 없다', + '어찌', + '어찌됏든', + '어찌됏어', + '어찌하든지', + '어찌하여', + '언제', + '언젠가', + '얼마', + '얼마 안 되는 것', + '얼마간', + '얼마나', + '얼마든지', + '얼마만큼', + '얼마큼', + '엉엉', + '에', + '에 가서', + '에 달려 있다', + '에 대해', + '에 있다', + '에 한하다', + '에게', + '에서', + '여', + '여기', + '여덟', + '여러분', + '여보시오', + '여부', + '여섯', + '여전히', + '여차', + '연관되다', + '연이서', + '영', + '영차', + '옆사람', + '예', + '예를 들면', + '예를 들자면', + '예컨대', + '예하면', + '오', + '오로지', + '오르다', + '오자마자', + '오직', + '오호', + '오히려', + '와', + '와 같은 사람들', + '와르르', + '와아', + '왜', + '왜냐하면', + '외에도', + '요만큼', + '요만한 것', + '요만한걸', + '요컨대', + '우르르', + '우리', + '우리들', + '우선', + '우에 종합한것과같이', + '운운', + '월', + '위에서 서술한바와같이', + '위하여', + '위해서', + '윙윙', + '육', + '으로', + '으로 인하여', + '으로서', + '으로써', + '을', + '응', + '응당', + '의', + '의거하여', + '의지하여', + '의해', + '의해되다', + '의해서', + '이', + '이 되다', + '이 때문에', + '이 밖에', + '이 외에', + '이 정도의', + '이것', + '이곳', + '이때', + '이라면', + '이래', + '이러이러하다', + '이러한', + '이런', + '이럴정도로', + '이렇게 많은 것', + '이렇게되면', + '이렇게말하자면', + '이렇구나', + '이로 인하여', + '이르기까지', + '이리하여', + '이만큼', + '이번', + '이봐', + '이상', + '이어서', + '이었다', + '이와 같다', + '이와 같은', + '이와 반대로', + '이와같다면', + '이외에도', + '이용하여', + '이유만으로', + '이젠', + '이지만', + '이쪽', + '이천구', + '이천육', + '이천칠', + '이천팔', + '인 듯하다', + '인젠', + '일', + '일것이다', + '일곱', + '일단', + '일때', + '일반적으로', + '일지라도', + '임에 틀림없다', + '입각하여', + '입장에서', + '잇따라', + '있다', + '자', + '자기', + '자기집', + '자마자', + '자신', + '잠깐', + '잠시', + '저', + '저것', + '저것만큼', + '저기', + '저쪽', + '저희', + '전부', + '전자', + '전후', + '점에서 보아', + '정도에 이르다', + '제', + '제각기', + '제외하고', + '조금', + '조차', + '조차도', + '졸졸', + '좀', + '좋아', + '좍좍', + '주룩주룩', + '주저하지 않고', + '줄은 몰랏다', + '줄은모른다', + '중에서', + '중의하나', + '즈음하여', + '즉', + '즉시', + '지든지', + '지만', + '지말고', + '진짜로', + '쪽으로', + '차라리', + '참', + '참나', + '첫번째로', + '쳇', + '총적으로', + '총적으로 말하면', + '총적으로 보면', + '칠', + '콸콸', + '쾅쾅', + '쿵', + '타다', + '타인', + '탕탕', + '토하다', + '통하여', + '툭', + '퉤', + '틈타', + '팍', + '팔', + '퍽', + '펄렁', + '하', + '하게될것이다', + '하게하다', + '하겠는가', + '하고 있다', + '하고있었다', + '하곤하였다', + '하구나', + '하기 때문에', + '하기 위하여', + '하기는한데', + '하기만 하면', + '하기보다는', + '하기에', + '하나', + '하느니', + '하는 김에', + '하는 편이 낫다', + '하는것도', + '하는것만 못하다', + '하는것이 낫다', + '하는바', + '하더라도', + '하도다', + '하도록시키다', + '하도록하다', + '하든지', + '하려고하다', + '하마터면', + '하면 할수록', + '하면된다', + '하면서', + '하물며', + '하여금', + '하여야', + '하자마자', + '하지 않는다면', + '하지 않도록', + '하지마', + '하지마라', + '하지만', + '하하', + '한 까닭에', + '한 이유는', + '한 후', + '한다면', + '한다면 몰라도', + '한데', + '한마디', + '한적이있다', + '한켠으로는', + '한항목', + '할 따름이다', + '할 생각이다', + '할 줄 안다', + '할 지경이다', + '할 힘이 있다', + '할때', + '할만하다', + '할망정', + '할뿐', + '할수있다', + '할수있어', + '할줄알다', + '할지라도', + '할지언정', + '함께', + '해도된다', + '해도좋다', + '해봐요', + '해서는 안된다', + '해야한다', + '해요', + '했어요', + '향하다', + '향하여', + '향해서', + '허', + '허걱', + '허허', + '헉', + '헉헉', + '헐떡헐떡', + '형식으로 쓰여', + '혹시', + '혹은', + '혼자', + '훨씬', + '휘익', + '휴', + '흐흐', + '흥', + '힘입어', + '︿', + '!', + '#', + '$', + '%', + '&', + '(', + ')', + '*', + '+', + ',', + '0', + '1', + '2', + '3', + '4', + '5', + '6', + '7', + '8', + '9', + ':', + ';', + '<', + '>', + '?', + '@', + '[', + ']', + '{', + '|', + '}', + '~', + '¥', + ], + ku: [ + 'ئێمە', + 'ئێوە', + 'ئەم', + 'ئەو', + 'ئەوان', + 'ئەوەی', + 'بۆ', + 'بێ', + 'بێجگە', + 'بە', + 'بەبێ', + 'بەدەم', + 'بەردەم', + 'بەرلە', + 'بەرەوی', + 'بەرەوە', + 'بەلای', + 'بەپێی', + 'تۆ', + 'تێ', + 'جگە', + 'دوای', + 'دوو', + 'دە', + 'دەکات', + 'دەگەڵ', + 'سەر', + 'لێ', + 'لە', + 'لەبابەت', + 'لەباتی', + 'لەبارەی', + 'لەبرێتی', + 'لەبن', + 'لەبەر', + 'لەبەینی', + 'لەدەم', + 'لەرێ', + 'لەرێگا', + 'لەرەوی', + 'لەسەر', + 'لەلایەن', + 'لەناو', + 'لەنێو', + 'لەو', + 'لەپێناوی', + 'لەژێر', + 'لەگەڵ', + 'من', + 'ناو', + 'نێوان', + 'هەر', + 'هەروەها', + 'و', + 'وەک', + 'پاش', + 'پێ', + 'پێش', + 'چەند', + 'کرد', + 'کە', + 'ی', + ], + la: [ + 'a', + 'ab', + 'ac', + 'ad', + 'at', + 'atque', + 'aut', + 'autem', + 'cum', + 'de', + 'dum', + 'e', + 'erant', + 'erat', + 'est', + 'et', + 'etiam', + 'ex', + 'haec', + 'hic', + 'hoc', + 'in', + 'ita', + 'me', + 'nec', + 'neque', + 'non', + 'per', + 'qua', + 'quae', + 'quam', + 'qui', + 'quibus', + 'quidem', + 'quo', + 'quod', + 're', + 'rebus', + 'rem', + 'res', + 'sed', + 'si', + 'sic', + 'sunt', + 'tamen', + 'tandem', + 'te', + 'ut', + 'vel', + ], + lt: [ + 'abi', + 'abidvi', + 'abiejose', + 'abiejuose', + 'abiejø', + 'abiem', + 'abigaliai', + 'abipus', + 'abu', + 'abudu', + 'ai', + 'ana', + 'anaiptol', + 'anaisiais', + 'anajai', + 'anajam', + 'anajame', + 'anapus', + 'anas', + 'anasai', + 'anasis', + 'anei', + 'aniedvi', + 'anieji', + 'aniesiems', + 'anoji', + 'anojo', + 'anojoje', + 'anokia', + 'anoks', + 'anosiomis', + 'anosioms', + 'anosios', + 'anosiose', + 'anot', + 'ant', + 'antai', + 'anuodu', + 'anuoju', + 'anuosiuose', + 'anuosius', + 'anàja', + 'anàjà', + 'anàjá', + 'anàsias', + 'anøjø', + 'apie', + 'aplink', + 'ar', + 'arba', + 'argi', + 'arti', + 'aukðèiau', + 'að', + 'be', + 'bei', + 'beje', + 'bemaþ', + 'bent', + 'bet', + 'betgi', + 'beveik', + 'dar', + 'dargi', + 'daugmaþ', + 'deja', + 'dëka', + 'dël', + 'dëlei', + 'dëlto', + 'ech', + 'et', + 'gal', + 'galbût', + 'galgi', + 'gan', + 'gana', + 'gi', + 'greta', + 'idant', + 'iki', + 'ir', + 'irgi', + 'it', + 'itin', + 'ið', + 'iðilgai', + 'iðvis', + 'jaisiais', + 'jajai', + 'jajam', + 'jajame', + 'jei', + 'jeigu', + 'ji', + 'jiedu', + 'jiedvi', + 'jieji', + 'jiesiems', + 'jinai', + 'jis', + 'jisai', + 'jog', + 'joji', + 'jojo', + 'jojoje', + 'jokia', + 'joks', + 'josiomis', + 'josioms', + 'josios', + 'josiose', + 'judu', + 'judvi', + 'juk', + 'jumis', + 'jums', + 'jumyse', + 'juodu', + 'juoju', + 'juosiuose', + 'juosius', + 'jus', + 'jàja', + 'jàjà', + 'jàsias', + 'jájá', + 'jøjø', + 'jûs', + 'jûsiðkis', + 'jûsiðkë', + 'jûsø', + 'kad', + 'kada', + 'kadangi', + 'kai', + 'kaip', + 'kaipgi', + 'kas', + 'katra', + 'katras', + 'katriedvi', + 'katruodu', + 'kaþin', + 'kaþkas', + 'kaþkatra', + 'kaþkatras', + 'kaþkokia', + 'kaþkoks', + 'kaþkuri', + 'kaþkuris', + 'kiaurai', + 'kiek', + 'kiekvienas', + 'kieno', + 'kita', + 'kitas', + 'kitokia', + 'kitoks', + 'kodël', + 'kokia', + 'koks', + 'kol', + 'kolei', + 'kone', + 'kuomet', + 'kur', + 'kurgi', + 'kuri', + 'kuriedvi', + 'kuris', + 'kuriuodu', + 'lai', + 'lig', + 'ligi', + 'link', + 'lyg', + 'man', + 'manaisiais', + 'manajai', + 'manajam', + 'manajame', + 'manas', + 'manasai', + 'manasis', + 'mane', + 'manieji', + 'maniesiems', + 'manim', + 'manimi', + 'maniðkis', + 'maniðkë', + 'mano', + 'manoji', + 'manojo', + 'manojoje', + 'manosiomis', + 'manosioms', + 'manosios', + 'manosiose', + 'manuoju', + 'manuosiuose', + 'manuosius', + 'manyje', + 'manàja', + 'manàjà', + 'manàjá', + 'manàsias', + 'manæs', + 'manøjø', + 'mat', + 'maþdaug', + 'maþne', + 'mes', + 'mudu', + 'mudvi', + 'mumis', + 'mums', + 'mumyse', + 'mus', + 'mûsiðkis', + 'mûsiðkë', + 'mûsø', + 'na', + 'nagi', + 'ne', + 'nebe', + 'nebent', + 'negi', + 'negu', + 'nei', + 'nejau', + 'nejaugi', + 'nekaip', + 'nelyginant', + 'nes', + 'net', + 'netgi', + 'netoli', + 'neva', + 'nors', + 'nuo', + 'në', + 'o', + 'ogi', + 'oi', + 'paeiliui', + 'pagal', + 'pakeliui', + 'palaipsniui', + 'palei', + 'pas', + 'pasak', + 'paskos', + 'paskui', + 'paskum', + 'pat', + 'pati', + 'patiems', + 'paties', + 'pats', + 'patys', + 'patá', + 'paèiais', + 'paèiam', + 'paèiame', + 'paèiu', + 'paèiuose', + 'paèius', + 'paèiø', + 'per', + 'pernelyg', + 'pirm', + 'pirma', + 'pirmiau', + 'po', + 'prie', + 'prieð', + 'prieðais', + 'pro', + 'pusiau', + 'rasi', + 'rodos', + 'sau', + 'savaisiais', + 'savajai', + 'savajam', + 'savajame', + 'savas', + 'savasai', + 'savasis', + 'save', + 'savieji', + 'saviesiems', + 'savimi', + 'saviðkis', + 'saviðkë', + 'savo', + 'savoji', + 'savojo', + 'savojoje', + 'savosiomis', + 'savosioms', + 'savosios', + 'savosiose', + 'savuoju', + 'savuosiuose', + 'savuosius', + 'savyje', + 'savàja', + 'savàjà', + 'savàjá', + 'savàsias', + 'savæs', + 'savøjø', + 'skersai', + 'skradþiai', + 'staèiai', + 'su', + 'sulig', + 'ta', + 'tad', + 'tai', + 'taigi', + 'taip', + 'taipogi', + 'taisiais', + 'tajai', + 'tajam', + 'tajame', + 'tamsta', + 'tarp', + 'tarsi', + 'tartum', + 'tarytum', + 'tas', + 'tasai', + 'tau', + 'tavaisiais', + 'tavajai', + 'tavajam', + 'tavajame', + 'tavas', + 'tavasai', + 'tavasis', + 'tave', + 'tavieji', + 'taviesiems', + 'tavimi', + 'taviðkis', + 'taviðkë', + 'tavo', + 'tavoji', + 'tavojo', + 'tavojoje', + 'tavosiomis', + 'tavosioms', + 'tavosios', + 'tavosiose', + 'tavuoju', + 'tavuosiuose', + 'tavuosius', + 'tavyje', + 'tavàja', + 'tavàjà', + 'tavàjá', + 'tavàsias', + 'tavæs', + 'tavøjø', + 'taèiau', + 'te', + 'tegu', + 'tegul', + 'tiedvi', + 'tieji', + 'ties', + 'tiesiems', + 'tiesiog', + 'tik', + 'tikriausiai', + 'tiktai', + 'toji', + 'tojo', + 'tojoje', + 'tokia', + 'toks', + 'tol', + 'tolei', + 'toliau', + 'tosiomis', + 'tosioms', + 'tosios', + 'tosiose', + 'tu', + 'tuodu', + 'tuoju', + 'tuosiuose', + 'tuosius', + 'turbût', + 'tàja', + 'tàjà', + 'tàjá', + 'tàsias', + 'tøjø', + 'tûlas', + 'uþ', + 'uþtat', + 'uþvis', + 'va', + 'vai', + 'viduj', + 'vidury', + 'vien', + 'vienas', + 'vienokia', + 'vienoks', + 'vietoj', + 'virð', + 'virðuj', + 'virðum', + 'vis', + 'vis dëlto', + 'visa', + 'visas', + 'visgi', + 'visokia', + 'visoks', + 'vos', + 'vël', + 'vëlgi', + 'ypaè', + 'á', + 'ákypai', + 'ástriþai', + 'ðalia', + 'ðe', + 'ði', + 'ðiaisiais', + 'ðiajai', + 'ðiajam', + 'ðiajame', + 'ðiapus', + 'ðiedvi', + 'ðieji', + 'ðiesiems', + 'ðioji', + 'ðiojo', + 'ðiojoje', + 'ðiokia', + 'ðioks', + 'ðiosiomis', + 'ðiosioms', + 'ðiosios', + 'ðiosiose', + 'ðis', + 'ðisai', + 'ðit', + 'ðita', + 'ðitas', + 'ðitiedvi', + 'ðitokia', + 'ðitoks', + 'ðituodu', + 'ðiuodu', + 'ðiuoju', + 'ðiuosiuose', + 'ðiuosius', + 'ðiàja', + 'ðiàjà', + 'ðiàsias', + 'ðiøjø', + 'ðtai', + 'ðájá', + 'þemiau', + ], + lv: [ + 'aiz', + 'ap', + 'apakš', + 'apakšpus', + 'ar', + 'arī', + 'augšpus', + 'bet', + 'bez', + 'bija', + 'biji', + 'biju', + 'bijām', + 'bijāt', + 'būs', + 'būsi', + 'būsiet', + 'būsim', + 'būt', + 'būšu', + 'caur', + 'diemžēl', + 'diezin', + 'droši', + 'dēļ', + 'esam', + 'esat', + 'esi', + 'esmu', + 'gan', + 'gar', + 'iekam', + 'iekams', + 'iekām', + 'iekāms', + 'iekš', + 'iekšpus', + 'ik', + 'ir', + 'it', + 'itin', + 'iz', + 'ja', + 'jau', + 'jeb', + 'jebšu', + 'jel', + 'jo', + 'jā', + 'ka', + 'kamēr', + 'kaut', + 'kolīdz', + 'kopš', + 'kā', + 'kļuva', + 'kļuvi', + 'kļuvu', + 'kļuvām', + 'kļuvāt', + 'kļūs', + 'kļūsi', + 'kļūsiet', + 'kļūsim', + 'kļūst', + 'kļūstam', + 'kļūstat', + 'kļūsti', + 'kļūstu', + 'kļūt', + 'kļūšu', + 'labad', + 'lai', + 'lejpus', + 'līdz', + 'līdzko', + 'ne', + 'nebūt', + 'nedz', + 'nekā', + 'nevis', + 'nezin', + 'no', + 'nu', + 'nē', + 'otrpus', + 'pa', + 'par', + 'pat', + 'pie', + 'pirms', + 'pret', + 'priekš', + 'pār', + 'pēc', + 'starp', + 'tad', + 'tak', + 'tapi', + 'taps', + 'tapsi', + 'tapsiet', + 'tapsim', + 'tapt', + 'tapāt', + 'tapšu', + 'taču', + 'te', + 'tiec', + 'tiek', + 'tiekam', + 'tiekat', + 'tieku', + 'tik', + 'tika', + 'tikai', + 'tiki', + 'tikko', + 'tiklab', + 'tiklīdz', + 'tiks', + 'tiksiet', + 'tiksim', + 'tikt', + 'tiku', + 'tikvien', + 'tikām', + 'tikāt', + 'tikšu', + 'tomēr', + 'topat', + 'turpretim', + 'turpretī', + 'tā', + 'tādēļ', + 'tālab', + 'tāpēc', + 'un', + 'uz', + 'vai', + 'var', + 'varat', + 'varēja', + 'varēji', + 'varēju', + 'varējām', + 'varējāt', + 'varēs', + 'varēsi', + 'varēsiet', + 'varēsim', + 'varēt', + 'varēšu', + 'vien', + 'virs', + 'virspus', + 'vis', + 'viņpus', + 'zem', + 'ārpus', + 'šaipus', + ], + ms: [ + 'abdul', + 'abdullah', + 'acara', + 'ada', + 'adalah', + 'ahmad', + 'air', + 'akan', + 'akhbar', + 'akhir', + 'aktiviti', + 'alam', + 'amat', + 'amerika', + 'anak', + 'anggota', + 'antara', + 'antarabangsa', + 'apa', + 'apabila', + 'april', + 'as', + 'asas', + 'asean', + 'asia', + 'asing', + 'atas', + 'atau', + 'australia', + 'awal', + 'awam', + 'bagaimanapun', + 'bagi', + 'bahagian', + 'bahan', + 'baharu', + 'bahawa', + 'baik', + 'bandar', + 'bank', + 'banyak', + 'barangan', + 'baru', + 'baru-baru', + 'bawah', + 'beberapa', + 'bekas', + 'beliau', + 'belum', + 'berada', + 'berakhir', + 'berbanding', + 'berdasarkan', + 'berharap', + 'berikutan', + 'berjaya', + 'berjumlah', + 'berkaitan', + 'berkata', + 'berkenaan', + 'berlaku', + 'bermula', + 'bernama', + 'bernilai', + 'bersama', + 'berubah', + 'besar', + 'bhd', + 'bidang', + 'bilion', + 'bn', + 'boleh', + 'bukan', + 'bulan', + 'bursa', + 'cadangan', + 'china', + 'dagangan', + 'dalam', + 'dan', + 'dana', + 'dapat', + 'dari', + 'daripada', + 'dasar', + 'datang', + 'datuk', + 'demikian', + 'dengan', + 'depan', + 'derivatives', + 'dewan', + 'di', + 'diadakan', + 'dibuka', + 'dicatatkan', + 'dijangka', + 'diniagakan', + 'dis', + 'disember', + 'ditutup', + 'dolar', + 'dr', + 'dua', + 'dunia', + 'ekonomi', + 'eksekutif', + 'eksport', + 'empat', + 'enam', + 'faedah', + 'feb', + 'global', + 'hadapan', + 'hanya', + 'harga', + 'hari', + 'hasil', + 'hingga', + 'hubungan', + 'ia', + 'iaitu', + 'ialah', + 'indeks', + 'india', + 'indonesia', + 'industri', + 'ini', + 'islam', + 'isnin', + 'isu', + 'itu', + 'jabatan', + 'jalan', + 'jan', + 'jawatan', + 'jawatankuasa', + 'jepun', + 'jika', + 'jualan', + 'juga', + 'julai', + 'jumaat', + 'jumlah', + 'jun', + 'juta', + 'kadar', + 'kalangan', + 'kali', + 'kami', + 'kata', + 'katanya', + 'kaunter', + 'kawasan', + 'ke', + 'keadaan', + 'kecil', + 'kedua', + 'kedua-dua', + 'kedudukan', + 'kekal', + 'kementerian', + 'kemudahan', + 'kenaikan', + 'kenyataan', + 'kepada', + 'kepentingan', + 'keputusan', + 'kerajaan', + 'kerana', + 'kereta', + 'kerja', + 'kerjasama', + 'kes', + 'keselamatan', + 'keseluruhan', + 'kesihatan', + 'ketika', + 'ketua', + 'keuntungan', + 'kewangan', + 'khamis', + 'kini', + 'kira-kira', + 'kita', + 'klci', + 'klibor', + 'komposit', + 'kontrak', + 'kos', + 'kuala', + 'kuasa', + 'kukuh', + 'kumpulan', + 'lagi', + 'lain', + 'langkah', + 'laporan', + 'lebih', + 'lepas', + 'lima', + 'lot', + 'luar', + 'lumpur', + 'mac', + 'mahkamah', + 'mahu', + 'majlis', + 'makanan', + 'maklumat', + 'malam', + 'malaysia', + 'mana', + 'manakala', + 'masa', + 'masalah', + 'masih', + 'masing-masing', + 'masyarakat', + 'mata', + 'media', + 'mei', + 'melalui', + 'melihat', + 'memandangkan', + 'memastikan', + 'membantu', + 'membawa', + 'memberi', + 'memberikan', + 'membolehkan', + 'membuat', + 'mempunyai', + 'menambah', + 'menarik', + 'menawarkan', + 'mencapai', + 'mencatatkan', + 'mendapat', + 'mendapatkan', + 'menerima', + 'menerusi', + 'mengadakan', + 'mengambil', + 'mengenai', + 'menggalakkan', + 'menggunakan', + 'mengikut', + 'mengumumkan', + 'mengurangkan', + 'meningkat', + 'meningkatkan', + 'menjadi', + 'menjelang', + 'menokok', + 'menteri', + 'menunjukkan', + 'menurut', + 'menyaksikan', + 'menyediakan', + 'mereka', + 'merosot', + 'merupakan', + 'mesyuarat', + 'minat', + 'minggu', + 'minyak', + 'modal', + 'mohd', + 'mudah', + 'mungkin', + 'naik', + 'najib', + 'nasional', + 'negara', + 'negara-negara', + 'negeri', + 'niaga', + 'nilai', + 'nov', + 'ogos', + 'okt', + 'oleh', + 'operasi', + 'orang', + 'pada', + 'pagi', + 'paling', + 'pameran', + 'papan', + 'para', + 'paras', + 'parlimen', + 'parti', + 'pasaran', + 'pasukan', + 'pegawai', + 'pejabat', + 'pekerja', + 'pelabur', + 'pelaburan', + 'pelancongan', + 'pelanggan', + 'pelbagai', + 'peluang', + 'pembangunan', + 'pemberita', + 'pembinaan', + 'pemimpin', + 'pendapatan', + 'pendidikan', + 'penduduk', + 'penerbangan', + 'pengarah', + 'pengeluaran', + 'pengerusi', + 'pengguna', + 'pengurusan', + 'peniaga', + 'peningkatan', + 'penting', + 'peratus', + 'perdagangan', + 'perdana', + 'peringkat', + 'perjanjian', + 'perkara', + 'perkhidmatan', + 'perladangan', + 'perlu', + 'permintaan', + 'perniagaan', + 'persekutuan', + 'persidangan', + 'pertama', + 'pertubuhan', + 'pertumbuhan', + 'perusahaan', + 'peserta', + 'petang', + 'pihak', + 'pilihan', + 'pinjaman', + 'polis', + 'politik', + 'presiden', + 'prestasi', + 'produk', + 'program', + 'projek', + 'proses', + 'proton', + 'pukul', + 'pula', + 'pusat', + 'rabu', + 'rakan', + 'rakyat', + 'ramai', + 'rantau', + 'raya', + 'rendah', + 'ringgit', + 'rumah', + 'sabah', + 'sahaja', + 'saham', + 'sama', + 'sarawak', + 'satu', + 'sawit', + 'saya', + 'sdn', + 'sebagai', + 'sebahagian', + 'sebanyak', + 'sebarang', + 'sebelum', + 'sebelumnya', + 'sebuah', + 'secara', + 'sedang', + 'segi', + 'sehingga', + 'sejak', + 'sekarang', + 'sektor', + 'sekuriti', + 'selain', + 'selama', + 'selasa', + 'selatan', + 'selepas', + 'seluruh', + 'semakin', + 'semalam', + 'semasa', + 'sementara', + 'semua', + 'semula', + 'sen', + 'sendiri', + 'seorang', + 'sepanjang', + 'seperti', + 'sept', + 'september', + 'serantau', + 'seri', + 'serta', + 'sesi', + 'setiap', + 'setiausaha', + 'sidang', + 'singapura', + 'sini', + 'sistem', + 'sokongan', + 'sri', + 'sudah', + 'sukan', + 'suku', + 'sumber', + 'supaya', + 'susut', + 'syarikat', + 'syed', + 'tahap', + 'tahun', + 'tan', + 'tanah', + 'tanpa', + 'tawaran', + 'teknologi', + 'telah', + 'tempat', + 'tempatan', + 'tempoh', + 'tenaga', + 'tengah', + 'tentang', + 'terbaik', + 'terbang', + 'terbesar', + 'terbuka', + 'terdapat', + 'terhadap', + 'termasuk', + 'tersebut', + 'terus', + 'tetapi', + 'thailand', + 'tiada', + 'tidak', + 'tiga', + 'timbalan', + 'timur', + 'tindakan', + 'tinggi', + 'tun', + 'tunai', + 'turun', + 'turut', + 'umno', + 'unit', + 'untuk', + 'untung', + 'urus', + 'usaha', + 'utama', + 'walaupun', + 'wang', + 'wanita', + 'wilayah', + 'yang', + ], + mr: [ + 'अधिक', + 'अनेक', + 'अशी', + 'असलयाचे', + 'असलेल्या', + 'असा', + 'असून', + 'असे', + 'आज', + 'आणि', + 'आता', + 'आपल्या', + 'आला', + 'आली', + 'आले', + 'आहे', + 'आहेत', + 'एक', + 'एका', + 'कमी', + 'करणयात', + 'करून', + 'का', + 'काम', + 'काय', + 'काही', + 'किवा', + 'की', + 'केला', + 'केली', + 'केले', + 'कोटी', + 'गेल्या', + 'घेऊन', + 'जात', + 'झाला', + 'झाली', + 'झाले', + 'झालेल्या', + 'टा', + 'डॉ', + 'तर', + 'तरी', + 'तसेच', + 'ता', + 'ती', + 'तीन', + 'ते', + 'तो', + 'त्या', + 'त्याचा', + 'त्याची', + 'त्याच्या', + 'त्याना', + 'त्यानी', + 'त्यामुळे', + 'त्री', + 'दिली', + 'दोन', + 'न', + 'नाही', + 'निर्ण्य', + 'पण', + 'पम', + 'परयतन', + 'पाटील', + 'म', + 'मात्र', + 'माहिती', + 'मी', + 'मुबी', + 'म्हणजे', + 'म्हणाले', + 'म्हणून', + 'या', + 'याचा', + 'याची', + 'याच्या', + 'याना', + 'यानी', + 'येणार', + 'येत', + 'येथील', + 'येथे', + 'लाख', + 'व', + 'व्यकत', + 'सर्व', + 'सागित्ले', + 'सुरू', + 'हजार', + 'हा', + 'ही', + 'हे', + 'होणार', + 'होत', + 'होता', + 'होती', + 'होते', + ], + no: [ + 'alle', + 'andre', + 'arbeid', + 'at', + 'av', + 'bare', + 'begge', + 'ble', + 'blei', + 'bli', + 'blir', + 'blitt', + 'bort', + 'bra', + 'bruke', + 'både', + 'båe', + 'da', + 'de', + 'deg', + 'dei', + 'deim', + 'deira', + 'deires', + 'dem', + 'den', + 'denne', + 'der', + 'dere', + 'deres', + 'det', + 'dette', + 'di', + 'din', + 'disse', + 'ditt', + 'du', + 'dykk', + 'dykkar', + 'då', + 'eg', + 'ein', + 'eit', + 'eitt', + 'eller', + 'elles', + 'en', + 'ene', + 'eneste', + 'enhver', + 'enn', + 'er', + 'et', + 'ett', + 'etter', + 'folk', + 'for', + 'fordi', + 'forsûke', + 'fra', + 'få', + 'før', + 'fûr', + 'fûrst', + 'gjorde', + 'gjûre', + 'god', + 'gå', + 'ha', + 'hadde', + 'han', + 'hans', + 'har', + 'hennar', + 'henne', + 'hennes', + 'her', + 'hjå', + 'ho', + 'hoe', + 'honom', + 'hoss', + 'hossen', + 'hun', + 'hva', + 'hvem', + 'hver', + 'hvilke', + 'hvilken', + 'hvis', + 'hvor', + 'hvordan', + 'hvorfor', + 'i', + 'ikke', + 'ikkje', + 'ingen', + 'ingi', + 'inkje', + 'inn', + 'innen', + 'inni', + 'ja', + 'jeg', + 'kan', + 'kom', + 'korleis', + 'korso', + 'kun', + 'kunne', + 'kva', + 'kvar', + 'kvarhelst', + 'kven', + 'kvi', + 'kvifor', + 'lage', + 'lang', + 'lik', + 'like', + 'makt', + 'man', + 'mange', + 'me', + 'med', + 'medan', + 'meg', + 'meget', + 'mellom', + 'men', + 'mens', + 'mer', + 'mest', + 'mi', + 'min', + 'mine', + 'mitt', + 'mot', + 'mye', + 'mykje', + 'må', + 'måte', + 'navn', + 'ned', + 'nei', + 'no', + 'noe', + 'noen', + 'noka', + 'noko', + 'nokon', + 'nokor', + 'nokre', + 'ny', + 'nå', + 'når', + 'og', + 'også', + 'om', + 'opp', + 'oss', + 'over', + 'part', + 'punkt', + 'på', + 'rett', + 'riktig', + 'samme', + 'sant', + 'seg', + 'selv', + 'si', + 'sia', + 'sidan', + 'siden', + 'sin', + 'sine', + 'sist', + 'sitt', + 'sjøl', + 'skal', + 'skulle', + 'slik', + 'slutt', + 'so', + 'som', + 'somme', + 'somt', + 'start', + 'stille', + 'så', + 'sånn', + 'tid', + 'til', + 'tilbake', + 'tilstand', + 'um', + 'under', + 'upp', + 'ut', + 'uten', + 'var', + 'vart', + 'varte', + 'ved', + 'verdi', + 'vere', + 'verte', + 'vi', + 'vil', + 'ville', + 'vite', + 'vore', + 'vors', + 'vort', + 'vår', + 'være', + 'vært', + 'vöre', + 'vört', + 'å', + ], + fa: [ + '!', + ',', + '.', + ':', + ';', + '،', + '؛', + '؟', + 'آباد', + 'آره', + 'آری', + 'آمد', + 'آمده', + 'آن', + 'آنان', + 'آنجا', + 'آنطور', + 'آنقدر', + 'آنكه', + 'آنها', + 'آنچه', + 'آنکه', + 'آورد', + 'آورده', + 'آيد', + 'آی', + 'آیا', + 'آیند', + 'اتفاقا', + 'اثرِ', + 'احتراما', + 'احتمالا', + 'اخیر', + 'اری', + 'از', + 'ازجمله', + 'اساسا', + 'است', + 'استفاد', + 'استفاده', + 'اش', + 'اشکارا', + 'اصلا', + 'اصولا', + 'اعلام', + 'اغلب', + 'اكنون', + 'الان', + 'البته', + 'البتّه', + 'ام', + 'اما', + 'امروز', + 'امروزه', + 'امسال', + 'امشب', + 'امور', + 'ان', + 'انجام', + 'اند', + 'انشاالله', + 'انصافا', + 'انطور', + 'انقدر', + 'انها', + 'انچنان', + 'انکه', + 'انگار', + 'او', + 'اول', + 'اولا', + 'اي', + 'ايشان', + 'ايم', + 'اين', + 'اينكه', + 'اکثرا', + 'اکنون', + 'اگر', + 'ای', + 'ایا', + 'اید', + 'ایشان', + 'ایم', + 'این', + 'اینجا', + 'ایند', + 'اینطور', + 'اینقدر', + 'اینها', + 'اینچنین', + 'اینک', + 'اینکه', + 'اینگونه', + 'با', + 'بار', + 'بارة', + 'باره', + 'بارها', + 'باز', + 'بازهم', + 'باش', + 'باشد', + 'باشم', + 'باشند', + 'باشيم', + 'باشی', + 'باشید', + 'باشیم', + 'بالا', + 'بالاخره', + 'بالایِ', + 'بالطبع', + 'بايد', + 'باید', + 'بتوان', + 'بتواند', + 'بتوانی', + 'بتوانیم', + 'بخش', + 'بخشی', + 'بخواه', + 'بخواهد', + 'بخواهم', + 'بخواهند', + 'بخواهی', + 'بخواهید', + 'بخواهیم', + 'بد', + 'بدون', + 'بر', + 'برابر', + 'برابرِ', + 'براحتی', + 'براساس', + 'براستی', + 'براي', + 'برای', + 'برایِ', + 'برخوردار', + 'برخي', + 'برخی', + 'برداري', + 'برعکس', + 'بروز', + 'بزرگ', + 'بزودی', + 'بسا', + 'بسيار', + 'بسياري', + 'بسیار', + 'بسیاری', + 'بطور', + 'بعد', + 'بعدا', + 'بعدها', + 'بعری', + 'بعضا', + 'بعضي', + 'بلافاصله', + 'بلكه', + 'بله', + 'بلکه', + 'بلی', + 'بنابراين', + 'بنابراین', + 'بندي', + 'به', + 'بهتر', + 'بهترين', + 'بود', + 'بودم', + 'بودن', + 'بودند', + 'بوده', + 'بودی', + 'بودید', + 'بودیم', + 'بویژه', + 'بي', + 'بيست', + 'بيش', + 'بيشتر', + 'بيشتري', + 'بين', + 'بکن', + 'بکند', + 'بکنم', + 'بکنند', + 'بکنی', + 'بکنید', + 'بکنیم', + 'بگو', + 'بگوید', + 'بگویم', + 'بگویند', + 'بگویی', + 'بگویید', + 'بگوییم', + 'بگیر', + 'بگیرد', + 'بگیرم', + 'بگیرند', + 'بگیری', + 'بگیرید', + 'بگیریم', + 'بی', + 'بیا', + 'بیاب', + 'بیابد', + 'بیابم', + 'بیابند', + 'بیابی', + 'بیابید', + 'بیابیم', + 'بیاور', + 'بیاورد', + 'بیاورم', + 'بیاورند', + 'بیاوری', + 'بیاورید', + 'بیاوریم', + 'بیاید', + 'بیایم', + 'بیایند', + 'بیایی', + 'بیایید', + 'بیاییم', + 'بیرون', + 'بیرونِ', + 'بیش', + 'بیشتر', + 'بیشتری', + 'بین', + 'ت', + 'تا', + 'تازه', + 'تاكنون', + 'تان', + 'تاکنون', + 'تحت', + 'تر', + 'تر براساس', + 'ترين', + 'تقریبا', + 'تلویحا', + 'تمام', + 'تماما', + 'تمامي', + 'تنها', + 'تو', + 'تواند', + 'توانست', + 'توانستم', + 'توانستن', + 'توانستند', + 'توانسته', + 'توانستی', + 'توانستیم', + 'توانم', + 'توانند', + 'توانی', + 'توانید', + 'توانیم', + 'توسط', + 'تولِ', + 'تویِ', + 'ثانیا', + 'جا', + 'جاي', + 'جايي', + 'جای', + 'جدا', + 'جديد', + 'جدید', + 'جريان', + 'جریان', + 'جز', + 'جلوگيري', + 'جلویِ', + 'جمعا', + 'جناح', + 'جهت', + 'حاضر', + 'حال', + 'حالا', + 'حتما', + 'حتي', + 'حتی', + 'حداکثر', + 'حدودا', + 'حدودِ', + 'حق', + 'خارجِ', + 'خب', + 'خدمات', + 'خصوصا', + 'خلاصه', + 'خواست', + 'خواستم', + 'خواستن', + 'خواستند', + 'خواسته', + 'خواستی', + 'خواستید', + 'خواستیم', + 'خواهد', + 'خواهم', + 'خواهند', + 'خواهيم', + 'خواهی', + 'خواهید', + 'خواهیم', + 'خوب', + 'خود', + 'خودت', + 'خودتان', + 'خودش', + 'خودشان', + 'خودم', + 'خودمان', + 'خوشبختانه', + 'خويش', + 'خویش', + 'خویشتن', + 'خیاه', + 'خیر', + 'خیلی', + 'داد', + 'دادم', + 'دادن', + 'دادند', + 'داده', + 'دادی', + 'دادید', + 'دادیم', + 'دار', + 'دارد', + 'دارم', + 'دارند', + 'داريم', + 'داری', + 'دارید', + 'داریم', + 'داشت', + 'داشتم', + 'داشتن', + 'داشتند', + 'داشته', + 'داشتی', + 'داشتید', + 'داشتیم', + 'دانست', + 'دانند', + 'دایم', + 'دایما', + 'در', + 'درباره', + 'درمجموع', + 'درون', + 'دریغ', + 'دقیقا', + 'دنبالِ', + 'ده', + 'دهد', + 'دهم', + 'دهند', + 'دهی', + 'دهید', + 'دهیم', + 'دو', + 'دوباره', + 'دوم', + 'ديده', + 'ديروز', + 'ديگر', + 'ديگران', + 'ديگري', + 'دیر', + 'دیروز', + 'دیگر', + 'دیگران', + 'دیگری', + 'را', + 'راحت', + 'راسا', + 'راستی', + 'راه', + 'رسما', + 'رسید', + 'رفت', + 'رفته', + 'رو', + 'روب', + 'روز', + 'روزانه', + 'روزهاي', + 'روي', + 'روی', + 'رویِ', + 'ريزي', + 'زمان', + 'زمانی', + 'زمینه', + 'زود', + 'زياد', + 'زير', + 'زيرا', + 'زیر', + 'زیرِ', + 'سابق', + 'ساخته', + 'سازي', + 'سالانه', + 'سالیانه', + 'سایر', + 'سراسر', + 'سرانجام', + 'سریعا', + 'سریِ', + 'سعي', + 'سمتِ', + 'سوم', + 'سوي', + 'سوی', + 'سویِ', + 'سپس', + 'شان', + 'شايد', + 'شاید', + 'شخصا', + 'شد', + 'شدم', + 'شدن', + 'شدند', + 'شده', + 'شدی', + 'شدید', + 'شدیدا', + 'شدیم', + 'شش', + 'شش نداشته', + 'شما', + 'شناسي', + 'شود', + 'شوم', + 'شوند', + 'شونده', + 'شوی', + 'شوید', + 'شویم', + 'صرفا', + 'صورت', + 'ضدِّ', + 'ضدِّ', + 'ضمن', + 'طبعا', + 'طبقِ', + 'طبیعتا', + 'طرف', + 'طريق', + 'طریق', + 'طور', + 'طي', + 'طی', + 'ظاهرا', + 'عدم', + 'عقبِ', + 'علّتِ', + 'علیه', + 'عمدا', + 'عمدتا', + 'عمل', + 'عملا', + 'عنوان', + 'عنوانِ', + 'غالبا', + 'غير', + 'غیر', + 'فردا', + 'فعلا', + 'فقط', + 'فكر', + 'فوق', + 'قابل', + 'قبل', + 'قبلا', + 'قدری', + 'قصدِ', + 'قطعا', + 'كرد', + 'كردم', + 'كردن', + 'كردند', + 'كرده', + 'كسي', + 'كل', + 'كمتر', + 'كند', + 'كنم', + 'كنند', + 'كنيد', + 'كنيم', + 'كه', + 'لااقل', + 'لطفا', + 'لطفاً', + 'ما', + 'مان', + 'مانند', + 'مانندِ', + 'مبادا', + 'متاسفانه', + 'متعاقبا', + 'مثل', + 'مثلا', + 'مثلِ', + 'مجانی', + 'مجددا', + 'مجموعا', + 'مختلف', + 'مدام', + 'مدت', + 'مدّتی', + 'مردم', + 'مرسی', + 'مستقیما', + 'مسلما', + 'مطمینا', + 'معمولا', + 'مقابل', + 'ممکن', + 'من', + 'موارد', + 'مورد', + 'موقتا', + 'مي', + 'ميليارد', + 'ميليون', + 'مگر', + 'می', + 'می شود', + 'میان', + 'می‌رسد', + 'می‌رود', + 'می‌شود', + 'می‌کنیم', + 'ناشي', + 'نام', + 'ناگاه', + 'ناگهان', + 'ناگهانی', + 'نبايد', + 'نباید', + 'نبود', + 'نخست', + 'نخستين', + 'نخواهد', + 'نخواهم', + 'نخواهند', + 'نخواهی', + 'نخواهید', + 'نخواهیم', + 'ندارد', + 'ندارم', + 'ندارند', + 'نداری', + 'ندارید', + 'نداریم', + 'نداشت', + 'نداشتم', + 'نداشتند', + 'نداشته', + 'نداشتی', + 'نداشتید', + 'نداشتیم', + 'نزديك', + 'نزدِ', + 'نزدیکِ', + 'نسبتا', + 'نشان', + 'نشده', + 'نظير', + 'نظیر', + 'نكرده', + 'نمايد', + 'نمي', + 'نمی', + 'نمی‌شود', + 'نه', + 'نهایتا', + 'نوع', + 'نوعي', + 'نوعی', + 'نيز', + 'نيست', + 'نگاه', + 'نیز', + 'نیست', + 'ها', + 'هاي', + 'هايي', + 'های', + 'هایی', + 'هبچ', + 'هر', + 'هرچه', + 'هرگز', + 'هزار', + 'هست', + 'هستم', + 'هستند', + 'هستيم', + 'هستی', + 'هستید', + 'هستیم', + 'هفت', + 'هم', + 'همان', + 'همه', + 'همواره', + 'همين', + 'همچنان', + 'همچنين', + 'همچنین', + 'همچون', + 'همیشه', + 'همین', + 'هنوز', + 'هنگام', + 'هنگامِ', + 'هنگامی', + 'هيچ', + 'هیچ', + 'هیچگاه', + 'و', + 'واقعا', + 'واقعی', + 'وجود', + 'وسطِ', + 'وضع', + 'وقتي', + 'وقتی', + 'وقتیکه', + 'ولی', + 'وي', + 'وگو', + 'وی', + 'ویژه', + 'يا', + 'يابد', + 'يك', + 'يكديگر', + 'يكي', + 'ّه', + '٪', + 'پارسال', + 'پاعینِ', + 'پس', + 'پنج', + 'پيش', + 'پیدا', + 'پیش', + 'پیشاپیش', + 'پیشتر', + 'پیشِ', + 'چرا', + 'چطور', + 'چقدر', + 'چنان', + 'چنانچه', + 'چنانکه', + 'چند', + 'چندین', + 'چنين', + 'چنین', + 'چه', + 'چهار', + 'چو', + 'چون', + 'چيزي', + 'چگونه', + 'چیز', + 'چیزی', + 'چیست', + 'کاش', + 'کامل', + 'کاملا', + 'کتبا', + 'کجا', + 'کجاست', + 'کدام', + 'کرد', + 'کردم', + 'کردن', + 'کردند', + 'کرده', + 'کردی', + 'کردید', + 'کردیم', + 'کس', + 'کسانی', + 'کسی', + 'کل', + 'کلا', + 'کم', + 'کماکان', + 'کمتر', + 'کمتری', + 'کمی', + 'کن', + 'کنار', + 'کنارِ', + 'کند', + 'کنم', + 'کنند', + 'کننده', + 'کنون', + 'کنونی', + 'کنی', + 'کنید', + 'کنیم', + 'که', + 'کو', + 'کَی', + 'کی', + 'گاه', + 'گاهی', + 'گذاري', + 'گذاشته', + 'گذشته', + 'گردد', + 'گرفت', + 'گرفتم', + 'گرفتن', + 'گرفتند', + 'گرفته', + 'گرفتی', + 'گرفتید', + 'گرفتیم', + 'گروهي', + 'گفت', + 'گفتم', + 'گفتن', + 'گفتند', + 'گفته', + 'گفتی', + 'گفتید', + 'گفتیم', + 'گه', + 'گهگاه', + 'گو', + 'گويد', + 'گويند', + 'گویا', + 'گوید', + 'گویم', + 'گویند', + 'گویی', + 'گویید', + 'گوییم', + 'گيرد', + 'گيري', + 'گیرد', + 'گیرم', + 'گیرند', + 'گیری', + 'گیرید', + 'گیریم', + 'ی', + 'یا', + 'یابد', + 'یابم', + 'یابند', + 'یابی', + 'یابید', + 'یابیم', + 'یافت', + 'یافتم', + 'یافتن', + 'یافته', + 'یافتی', + 'یافتید', + 'یافتیم', + 'یعنی', + 'یقینا', + 'یه', + 'یک', + 'یکی', + '۰', + '۱', + '۲', + '۳', + '۴', + '۵', + '۶', + '۷', + '۸', + '۹', + ], + pl: [ + 'a', + 'aby', + 'ach', + 'acz', + 'aczkolwiek', + 'aj', + 'albo', + 'ale', + 'ależ', + 'ani', + 'aż', + 'bardziej', + 'bardzo', + 'bez', + 'bo', + 'bowiem', + 'by', + 'byli', + 'bym', + 'bynajmniej', + 'być', + 'był', + 'była', + 'było', + 'były', + 'będzie', + 'będą', + 'cali', + 'cała', + 'cały', + 'chce', + 'choć', + 'ci', + 'ciebie', + 'cię', + 'co', + 'cokolwiek', + 'coraz', + 'coś', + 'czasami', + 'czasem', + 'czemu', + 'czy', + 'czyli', + 'często', + 'daleko', + 'dla', + 'dlaczego', + 'dlatego', + 'do', + 'dobrze', + 'dokąd', + 'dość', + 'dr', + 'dużo', + 'dwa', + 'dwaj', + 'dwie', + 'dwoje', + 'dzisiaj', + 'dziś', + 'gdy', + 'gdyby', + 'gdyż', + 'gdzie', + 'gdziekolwiek', + 'gdzieś', + 'go', + 'godz', + 'hab', + 'i', + 'ich', + 'ii', + 'iii', + 'ile', + 'im', + 'inna', + 'inne', + 'inny', + 'innych', + 'inż', + 'iv', + 'ix', + 'iż', + 'ja', + 'jak', + 'jakaś', + 'jakby', + 'jaki', + 'jakichś', + 'jakie', + 'jakiś', + 'jakiż', + 'jakkolwiek', + 'jako', + 'jakoś', + 'je', + 'jeden', + 'jedna', + 'jednak', + 'jednakże', + 'jedno', + 'jednym', + 'jedynie', + 'jego', + 'jej', + 'jemu', + 'jest', + 'jestem', + 'jeszcze', + 'jeśli', + 'jeżeli', + 'już', + 'ją', + 'każdy', + 'kiedy', + 'kierunku', + 'kilka', + 'kilku', + 'kimś', + 'kto', + 'ktokolwiek', + 'ktoś', + 'która', + 'które', + 'którego', + 'której', + 'który', + 'których', + 'którym', + 'którzy', + 'ku', + 'lat', + 'lecz', + 'lub', + 'ma', + 'mają', + 'mam', + 'mamy', + 'mało', + 'mgr', + 'mi', + 'miał', + 'mimo', + 'między', + 'mnie', + 'mną', + 'mogą', + 'moi', + 'moim', + 'moja', + 'moje', + 'może', + 'możliwe', + 'można', + 'mu', + 'musi', + 'my', + 'mój', + 'na', + 'nad', + 'nam', + 'nami', + 'nas', + 'nasi', + 'nasz', + 'nasza', + 'nasze', + 'naszego', + 'naszych', + 'natomiast', + 'natychmiast', + 'nawet', + 'nic', + 'nich', + 'nie', + 'niech', + 'niego', + 'niej', + 'niemu', + 'nigdy', + 'nim', + 'nimi', + 'nią', + 'niż', + 'no', + 'nowe', + 'np', + 'nr', + 'o', + 'o.o.', + 'obok', + 'od', + 'ok', + 'około', + 'on', + 'ona', + 'one', + 'oni', + 'ono', + 'oraz', + 'oto', + 'owszem', + 'pan', + 'pana', + 'pani', + 'pl', + 'po', + 'pod', + 'podczas', + 'pomimo', + 'ponad', + 'ponieważ', + 'powinien', + 'powinna', + 'powinni', + 'powinno', + 'poza', + 'prawie', + 'prof', + 'przecież', + 'przed', + 'przede', + 'przedtem', + 'przez', + 'przy', + 'raz', + 'razie', + 'roku', + 'również', + 'sam', + 'sama', + 'się', + 'skąd', + 'sobie', + 'sobą', + 'sposób', + 'swoje', + 'są', + 'ta', + 'tak', + 'taka', + 'taki', + 'takich', + 'takie', + 'także', + 'tam', + 'te', + 'tego', + 'tej', + 'tel', + 'temu', + 'ten', + 'teraz', + 'też', + 'to', + 'tobie', + 'tobą', + 'toteż', + 'totobą', + 'trzeba', + 'tu', + 'tutaj', + 'twoi', + 'twoim', + 'twoja', + 'twoje', + 'twym', + 'twój', + 'ty', + 'tych', + 'tylko', + 'tym', + 'tys', + 'tzw', + 'tę', + 'u', + 'ul', + 'vi', + 'vii', + 'viii', + 'vol', + 'w', + 'wam', + 'wami', + 'was', + 'wasi', + 'wasz', + 'wasza', + 'wasze', + 'we', + 'według', + 'wie', + 'wiele', + 'wielu', + 'więc', + 'więcej', + 'wszyscy', + 'wszystkich', + 'wszystkie', + 'wszystkim', + 'wszystko', + 'wtedy', + 'www', + 'wy', + 'właśnie', + 'wśród', + 'xi', + 'xii', + 'xiii', + 'xiv', + 'xv', + 'z', + 'za', + 'zapewne', + 'zawsze', + 'zaś', + 'ze', + 'zeznowu', + 'znowu', + 'znów', + 'został', + 'zł', + 'żaden', + 'żadna', + 'żadne', + 'żadnych', + 'że', + 'żeby', + ], + pt: [ + 'a', + 'acerca', + 'adeus', + 'agora', + 'ainda', + 'alem', + 'algmas', + 'algo', + 'algumas', + 'alguns', + 'ali', + 'além', + 'ambas', + 'ambos', + 'ano', + 'anos', + 'antes', + 'ao', + 'aonde', + 'aos', + 'apenas', + 'apoio', + 'apontar', + 'apos', + 'após', + 'aquela', + 'aquelas', + 'aquele', + 'aqueles', + 'aqui', + 'aquilo', + 'as', + 'assim', + 'através', + 'atrás', + 'até', + 'aí', + 'baixo', + 'bastante', + 'bem', + 'boa', + 'boas', + 'bom', + 'bons', + 'breve', + 'cada', + 'caminho', + 'catorze', + 'cedo', + 'cento', + 'certamente', + 'certeza', + 'cima', + 'cinco', + 'coisa', + 'com', + 'como', + 'comprido', + 'conhecido', + 'conselho', + 'contra', + 'contudo', + 'corrente', + 'cuja', + 'cujas', + 'cujo', + 'cujos', + 'custa', + 'cá', + 'da', + 'daquela', + 'daquelas', + 'daquele', + 'daqueles', + 'dar', + 'das', + 'de', + 'debaixo', + 'dela', + 'delas', + 'dele', + 'deles', + 'demais', + 'dentro', + 'depois', + 'desde', + 'desligado', + 'dessa', + 'dessas', + 'desse', + 'desses', + 'desta', + 'destas', + 'deste', + 'destes', + 'deve', + 'devem', + 'deverá', + 'dez', + 'dezanove', + 'dezasseis', + 'dezassete', + 'dezoito', + 'dia', + 'diante', + 'direita', + 'dispoe', + 'dispoem', + 'diversa', + 'diversas', + 'diversos', + 'diz', + 'dizem', + 'dizer', + 'do', + 'dois', + 'dos', + 'doze', + 'duas', + 'durante', + 'dá', + 'dão', + 'dúvida', + 'e', + 'ela', + 'elas', + 'ele', + 'eles', + 'em', + 'embora', + 'enquanto', + 'entao', + 'entre', + 'então', + 'era', + 'eram', + 'essa', + 'essas', + 'esse', + 'esses', + 'esta', + 'estado', + 'estamos', + 'estar', + 'estará', + 'estas', + 'estava', + 'estavam', + 'este', + 'esteja', + 'estejam', + 'estejamos', + 'estes', + 'esteve', + 'estive', + 'estivemos', + 'estiver', + 'estivera', + 'estiveram', + 'estiverem', + 'estivermos', + 'estivesse', + 'estivessem', + 'estiveste', + 'estivestes', + 'estivéramos', + 'estivéssemos', + 'estou', + 'está', + 'estás', + 'estávamos', + 'estão', + 'eu', + 'exemplo', + 'falta', + 'fará', + 'favor', + 'faz', + 'fazeis', + 'fazem', + 'fazemos', + 'fazer', + 'fazes', + 'fazia', + 'faço', + 'fez', + 'fim', + 'final', + 'foi', + 'fomos', + 'for', + 'fora', + 'foram', + 'forem', + 'forma', + 'formos', + 'fosse', + 'fossem', + 'foste', + 'fostes', + 'fui', + 'fôramos', + 'fôssemos', + 'geral', + 'grande', + 'grandes', + 'grupo', + 'ha', + 'haja', + 'hajam', + 'hajamos', + 'havemos', + 'havia', + 'hei', + 'hoje', + 'hora', + 'horas', + 'houve', + 'houvemos', + 'houver', + 'houvera', + 'houveram', + 'houverei', + 'houverem', + 'houveremos', + 'houveria', + 'houveriam', + 'houvermos', + 'houverá', + 'houverão', + 'houveríamos', + 'houvesse', + 'houvessem', + 'houvéramos', + 'houvéssemos', + 'há', + 'hão', + 'iniciar', + 'inicio', + 'ir', + 'irá', + 'isso', + 'ista', + 'iste', + 'isto', + 'já', + 'lado', + 'lhe', + 'lhes', + 'ligado', + 'local', + 'logo', + 'longe', + 'lugar', + 'lá', + 'maior', + 'maioria', + 'maiorias', + 'mais', + 'mal', + 'mas', + 'me', + 'mediante', + 'meio', + 'menor', + 'menos', + 'meses', + 'mesma', + 'mesmas', + 'mesmo', + 'mesmos', + 'meu', + 'meus', + 'mil', + 'minha', + 'minhas', + 'momento', + 'muito', + 'muitos', + 'máximo', + 'mês', + 'na', + 'nada', + 'nao', + 'naquela', + 'naquelas', + 'naquele', + 'naqueles', + 'nas', + 'nem', + 'nenhuma', + 'nessa', + 'nessas', + 'nesse', + 'nesses', + 'nesta', + 'nestas', + 'neste', + 'nestes', + 'no', + 'noite', + 'nome', + 'nos', + 'nossa', + 'nossas', + 'nosso', + 'nossos', + 'nova', + 'novas', + 'nove', + 'novo', + 'novos', + 'num', + 'numa', + 'numas', + 'nunca', + 'nuns', + 'não', + 'nível', + 'nós', + 'número', + 'o', + 'obra', + 'obrigada', + 'obrigado', + 'oitava', + 'oitavo', + 'oito', + 'onde', + 'ontem', + 'onze', + 'os', + 'ou', + 'outra', + 'outras', + 'outro', + 'outros', + 'para', + 'parece', + 'parte', + 'partir', + 'paucas', + 'pegar', + 'pela', + 'pelas', + 'pelo', + 'pelos', + 'perante', + 'perto', + 'pessoas', + 'pode', + 'podem', + 'poder', + 'poderá', + 'podia', + 'pois', + 'ponto', + 'pontos', + 'por', + 'porque', + 'porquê', + 'portanto', + 'posição', + 'possivelmente', + 'posso', + 'possível', + 'pouca', + 'pouco', + 'poucos', + 'povo', + 'primeira', + 'primeiras', + 'primeiro', + 'primeiros', + 'promeiro', + 'propios', + 'proprio', + 'própria', + 'próprias', + 'próprio', + 'próprios', + 'próxima', + 'próximas', + 'próximo', + 'próximos', + 'puderam', + 'pôde', + 'põe', + 'põem', + 'quais', + 'qual', + 'qualquer', + 'quando', + 'quanto', + 'quarta', + 'quarto', + 'quatro', + 'que', + 'quem', + 'quer', + 'quereis', + 'querem', + 'queremas', + 'queres', + 'quero', + 'questão', + 'quieto', + 'quinta', + 'quinto', + 'quinze', + 'quáis', + 'quê', + 'relação', + 'sabe', + 'sabem', + 'saber', + 'se', + 'segunda', + 'segundo', + 'sei', + 'seis', + 'seja', + 'sejam', + 'sejamos', + 'sem', + 'sempre', + 'sendo', + 'ser', + 'serei', + 'seremos', + 'seria', + 'seriam', + 'será', + 'serão', + 'seríamos', + 'sete', + 'seu', + 'seus', + 'sexta', + 'sexto', + 'sim', + 'sistema', + 'sob', + 'sobre', + 'sois', + 'somente', + 'somos', + 'sou', + 'sua', + 'suas', + 'são', + 'sétima', + 'sétimo', + 'só', + 'tal', + 'talvez', + 'tambem', + 'também', + 'tanta', + 'tantas', + 'tanto', + 'tarde', + 'te', + 'tem', + 'temos', + 'tempo', + 'tendes', + 'tenha', + 'tenham', + 'tenhamos', + 'tenho', + 'tens', + 'tentar', + 'tentaram', + 'tente', + 'tentei', + 'ter', + 'terceira', + 'terceiro', + 'terei', + 'teremos', + 'teria', + 'teriam', + 'terá', + 'terão', + 'teríamos', + 'teu', + 'teus', + 'teve', + 'tinha', + 'tinham', + 'tipo', + 'tive', + 'tivemos', + 'tiver', + 'tivera', + 'tiveram', + 'tiverem', + 'tivermos', + 'tivesse', + 'tivessem', + 'tiveste', + 'tivestes', + 'tivéramos', + 'tivéssemos', + 'toda', + 'todas', + 'todo', + 'todos', + 'trabalhar', + 'trabalho', + 'treze', + 'três', + 'tu', + 'tua', + 'tuas', + 'tudo', + 'tão', + 'tém', + 'têm', + 'tínhamos', + 'um', + 'uma', + 'umas', + 'uns', + 'usa', + 'usar', + 'vai', + 'vais', + 'valor', + 'veja', + 'vem', + 'vens', + 'ver', + 'verdade', + 'verdadeiro', + 'vez', + 'vezes', + 'viagem', + 'vindo', + 'vinte', + 'você', + 'vocês', + 'vos', + 'vossa', + 'vossas', + 'vosso', + 'vossos', + 'vários', + 'vão', + 'vêm', + 'vós', + 'zero', + 'à', + 'às', + 'área', + 'é', + 'éramos', + 'és', + 'último', + ], + ro: [ + 'a', + 'abia', + 'acea', + 'aceasta', + 'această', + 'aceea', + 'aceeasi', + 'acei', + 'aceia', + 'acel', + 'acela', + 'acelasi', + 'acele', + 'acelea', + 'acest', + 'acesta', + 'aceste', + 'acestea', + 'acestei', + 'acestia', + 'acestui', + 'aceşti', + 'aceştia', + 'acolo', + 'acord', + 'acum', + 'adica', + 'ai', + 'aia', + 'aibă', + 'aici', + 'aiurea', + 'al', + 'ala', + 'alaturi', + 'ale', + 'alea', + 'alt', + 'alta', + 'altceva', + 'altcineva', + 'alte', + 'altfel', + 'alti', + 'altii', + 'altul', + 'am', + 'anume', + 'apoi', + 'ar', + 'are', + 'as', + 'asa', + 'asemenea', + 'asta', + 'astazi', + 'astea', + 'astfel', + 'astăzi', + 'asupra', + 'atare', + 'atat', + 'atata', + 'atatea', + 'atatia', + 'ati', + 'atit', + 'atita', + 'atitea', + 'atitia', + 'atunci', + 'au', + 'avea', + 'avem', + 'aveţi', + 'avut', + 'azi', + 'aş', + 'aşadar', + 'aţi', + 'b', + 'ba', + 'bine', + 'bucur', + 'bună', + 'c', + 'ca', + 'cam', + 'cand', + 'capat', + 'care', + 'careia', + 'carora', + 'caruia', + 'cat', + 'catre', + 'caut', + 'ce', + 'cea', + 'ceea', + 'cei', + 'ceilalti', + 'cel', + 'cele', + 'celor', + 'ceva', + 'chiar', + 'ci', + 'cinci', + 'cind', + 'cine', + 'cineva', + 'cit', + 'cita', + 'cite', + 'citeva', + 'citi', + 'citiva', + 'conform', + 'contra', + 'cu', + 'cui', + 'cum', + 'cumva', + 'curând', + 'curînd', + 'când', + 'cât', + 'câte', + 'câtva', + 'câţi', + 'cînd', + 'cît', + 'cîte', + 'cîtva', + 'cîţi', + 'că', + 'căci', + 'cărei', + 'căror', + 'cărui', + 'către', + 'd', + 'da', + 'daca', + 'dacă', + 'dar', + 'dat', + 'datorită', + 'dată', + 'dau', + 'de', + 'deasupra', + 'deci', + 'decit', + 'degraba', + 'deja', + 'deoarece', + 'departe', + 'desi', + 'despre', + 'deşi', + 'din', + 'dinaintea', + 'dintr', + 'dintr-', + 'dintre', + 'doar', + 'doi', + 'doilea', + 'două', + 'drept', + 'dupa', + 'după', + 'dă', + 'e', + 'ea', + 'ei', + 'el', + 'ele', + 'era', + 'eram', + 'este', + 'eu', + 'exact', + 'eşti', + 'f', + 'face', + 'fara', + 'fata', + 'fel', + 'fi', + 'fie', + 'fiecare', + 'fii', + 'fim', + 'fiu', + 'fiţi', + 'foarte', + 'fost', + 'frumos', + 'fără', + 'g', + 'geaba', + 'graţie', + 'h', + 'halbă', + 'i', + 'ia', + 'iar', + 'ieri', + 'ii', + 'il', + 'imi', + 'in', + 'inainte', + 'inapoi', + 'inca', + 'incit', + 'insa', + 'intr', + 'intre', + 'isi', + 'iti', + 'j', + 'k', + 'l', + 'la', + 'le', + 'li', + 'lor', + 'lui', + 'lângă', + 'lîngă', + 'm', + 'ma', + 'mai', + 'mare', + 'mea', + 'mei', + 'mele', + 'mereu', + 'meu', + 'mi', + 'mie', + 'mine', + 'mod', + 'mult', + 'multa', + 'multe', + 'multi', + 'multă', + 'mulţi', + 'mulţumesc', + 'mâine', + 'mîine', + 'mă', + 'n', + 'ne', + 'nevoie', + 'ni', + 'nici', + 'niciodata', + 'nicăieri', + 'nimeni', + 'nimeri', + 'nimic', + 'niste', + 'nişte', + 'noastre', + 'noastră', + 'noi', + 'noroc', + 'nostri', + 'nostru', + 'nou', + 'noua', + 'nouă', + 'noştri', + 'nu', + 'numai', + 'o', + 'opt', + 'or', + 'ori', + 'oricare', + 'orice', + 'oricine', + 'oricum', + 'oricând', + 'oricât', + 'oricînd', + 'oricît', + 'oriunde', + 'p', + 'pai', + 'parca', + 'patra', + 'patru', + 'patrulea', + 'pe', + 'pentru', + 'peste', + 'pic', + 'pina', + 'plus', + 'poate', + 'pot', + 'prea', + 'prima', + 'primul', + 'prin', + 'printr-', + 'putini', + 'puţin', + 'puţina', + 'puţină', + 'până', + 'pînă', + 'r', + 'rog', + 's', + 'sa', + 'sa-mi', + 'sa-ti', + 'sai', + 'sale', + 'sau', + 'se', + 'si', + 'sint', + 'sintem', + 'spate', + 'spre', + 'sub', + 'sunt', + 'suntem', + 'sunteţi', + 'sus', + 'sută', + 'sînt', + 'sîntem', + 'sînteţi', + 'să', + 'săi', + 'său', + 't', + 'ta', + 'tale', + 'te', + 'ti', + 'timp', + 'tine', + 'toata', + 'toate', + 'toată', + 'tocmai', + 'tot', + 'toti', + 'totul', + 'totusi', + 'totuşi', + 'toţi', + 'trei', + 'treia', + 'treilea', + 'tu', + 'tuturor', + 'tăi', + 'tău', + 'u', + 'ul', + 'ului', + 'un', + 'una', + 'unde', + 'undeva', + 'unei', + 'uneia', + 'unele', + 'uneori', + 'unii', + 'unor', + 'unora', + 'unu', + 'unui', + 'unuia', + 'unul', + 'v', + 'va', + 'vi', + 'voastre', + 'voastră', + 'voi', + 'vom', + 'vor', + 'vostru', + 'vouă', + 'voştri', + 'vreme', + 'vreo', + 'vreun', + 'vă', + 'x', + 'z', + 'zece', + 'zero', + 'zi', + 'zice', + 'îi', + 'îl', + 'îmi', + 'împotriva', + 'în', + 'înainte', + 'înaintea', + 'încotro', + 'încât', + 'încît', + 'între', + 'întrucât', + 'întrucît', + 'îţi', + 'ăla', + 'ălea', + 'ăsta', + 'ăstea', + 'ăştia', + 'şapte', + 'şase', + 'şi', + 'ştiu', + 'ţi', + 'ţie', + ], + ru: [ + 'c', + 'а', + 'алло', + 'без', + 'белый', + 'близко', + 'более', + 'больше', + 'большой', + 'будем', + 'будет', + 'будете', + 'будешь', + 'будто', + 'буду', + 'будут', + 'будь', + 'бы', + 'бывает', + 'бывь', + 'был', + 'была', + 'были', + 'было', + 'быть', + 'в', + 'важная', + 'важное', + 'важные', + 'важный', + 'вам', + 'вами', + 'вас', + 'ваш', + 'ваша', + 'ваше', + 'ваши', + 'вверх', + 'вдали', + 'вдруг', + 'ведь', + 'везде', + 'вернуться', + 'весь', + 'вечер', + 'взгляд', + 'взять', + 'вид', + 'видел', + 'видеть', + 'вместе', + 'вне', + 'вниз', + 'внизу', + 'во', + 'вода', + 'война', + 'вокруг', + 'вон', + 'вообще', + 'вопрос', + 'восемнадцатый', + 'восемнадцать', + 'восемь', + 'восьмой', + 'вот', + 'впрочем', + 'времени', + 'время', + 'все', + 'все еще', + 'всегда', + 'всего', + 'всем', + 'всеми', + 'всему', + 'всех', + 'всею', + 'всю', + 'всюду', + 'вся', + 'всё', + 'второй', + 'вы', + 'выйти', + 'г', + 'где', + 'главный', + 'глаз', + 'говорил', + 'говорит', + 'говорить', + 'год', + 'года', + 'году', + 'голова', + 'голос', + 'город', + 'да', + 'давать', + 'давно', + 'даже', + 'далекий', + 'далеко', + 'дальше', + 'даром', + 'дать', + 'два', + 'двадцатый', + 'двадцать', + 'две', + 'двенадцатый', + 'двенадцать', + 'дверь', + 'двух', + 'девятнадцатый', + 'девятнадцать', + 'девятый', + 'девять', + 'действительно', + 'дел', + 'делал', + 'делать', + 'делаю', + 'дело', + 'день', + 'деньги', + 'десятый', + 'десять', + 'для', + 'до', + 'довольно', + 'долго', + 'должен', + 'должно', + 'должный', + 'дом', + 'дорога', + 'друг', + 'другая', + 'другие', + 'других', + 'друго', + 'другое', + 'другой', + 'думать', + 'душа', + 'е', + 'его', + 'ее', + 'ей', + 'ему', + 'если', + 'есть', + 'еще', + 'ещё', + 'ею', + 'её', + 'ж', + 'ждать', + 'же', + 'жена', + 'женщина', + 'жизнь', + 'жить', + 'за', + 'занят', + 'занята', + 'занято', + 'заняты', + 'затем', + 'зато', + 'зачем', + 'здесь', + 'земля', + 'знать', + 'значит', + 'значить', + 'и', + 'иди', + 'идти', + 'из', + 'или', + 'им', + 'имеет', + 'имел', + 'именно', + 'иметь', + 'ими', + 'имя', + 'иногда', + 'их', + 'к', + 'каждая', + 'каждое', + 'каждые', + 'каждый', + 'кажется', + 'казаться', + 'как', + 'какая', + 'какой', + 'кем', + 'книга', + 'когда', + 'кого', + 'ком', + 'комната', + 'кому', + 'конец', + 'конечно', + 'которая', + 'которого', + 'которой', + 'которые', + 'который', + 'которых', + 'кроме', + 'кругом', + 'кто', + 'куда', + 'лежать', + 'лет', + 'ли', + 'лицо', + 'лишь', + 'лучше', + 'любить', + 'люди', + 'м', + 'маленький', + 'мало', + 'мать', + 'машина', + 'между', + 'меля', + 'менее', + 'меньше', + 'меня', + 'место', + 'миллионов', + 'мимо', + 'минута', + 'мир', + 'мира', + 'мне', + 'много', + 'многочисленная', + 'многочисленное', + 'многочисленные', + 'многочисленный', + 'мной', + 'мною', + 'мог', + 'могу', + 'могут', + 'мож', + 'может', + 'может быть', + 'можно', + 'можхо', + 'мои', + 'мой', + 'мор', + 'москва', + 'мочь', + 'моя', + 'моё', + 'мы', + 'на', + 'наверху', + 'над', + 'надо', + 'назад', + 'наиболее', + 'найти', + 'наконец', + 'нам', + 'нами', + 'народ', + 'нас', + 'начала', + 'начать', + 'наш', + 'наша', + 'наше', + 'наши', + 'не', + 'него', + 'недавно', + 'недалеко', + 'нее', + 'ней', + 'некоторый', + 'нельзя', + 'нем', + 'немного', + 'нему', + 'непрерывно', + 'нередко', + 'несколько', + 'нет', + 'нею', + 'неё', + 'ни', + 'нибудь', + 'ниже', + 'низко', + 'никакой', + 'никогда', + 'никто', + 'никуда', + 'ним', + 'ними', + 'них', + 'ничего', + 'ничто', + 'но', + 'новый', + 'нога', + 'ночь', + 'ну', + 'нужно', + 'нужный', + 'нх', + 'о', + 'об', + 'оба', + 'обычно', + 'один', + 'одиннадцатый', + 'одиннадцать', + 'однажды', + 'однако', + 'одного', + 'одной', + 'оказаться', + 'окно', + 'около', + 'он', + 'она', + 'они', + 'оно', + 'опять', + 'особенно', + 'остаться', + 'от', + 'ответить', + 'отец', + 'откуда', + 'отовсюду', + 'отсюда', + 'очень', + 'первый', + 'перед', + 'писать', + 'плечо', + 'по', + 'под', + 'подойди', + 'подумать', + 'пожалуйста', + 'позже', + 'пойти', + 'пока', + 'пол', + 'получить', + 'помнить', + 'понимать', + 'понять', + 'пор', + 'пора', + 'после', + 'последний', + 'посмотреть', + 'посреди', + 'потом', + 'потому', + 'почему', + 'почти', + 'правда', + 'прекрасно', + 'при', + 'про', + 'просто', + 'против', + 'процентов', + 'путь', + 'пятнадцатый', + 'пятнадцать', + 'пятый', + 'пять', + 'работа', + 'работать', + 'раз', + 'разве', + 'рано', + 'раньше', + 'ребенок', + 'решить', + 'россия', + 'рука', + 'русский', + 'ряд', + 'рядом', + 'с', + 'с кем', + 'сам', + 'сама', + 'сами', + 'самим', + 'самими', + 'самих', + 'само', + 'самого', + 'самой', + 'самом', + 'самому', + 'саму', + 'самый', + 'свет', + 'свое', + 'своего', + 'своей', + 'свои', + 'своих', + 'свой', + 'свою', + 'сделать', + 'сеаой', + 'себе', + 'себя', + 'сегодня', + 'седьмой', + 'сейчас', + 'семнадцатый', + 'семнадцать', + 'семь', + 'сидеть', + 'сила', + 'сих', + 'сказал', + 'сказала', + 'сказать', + 'сколько', + 'слишком', + 'слово', + 'случай', + 'смотреть', + 'сначала', + 'снова', + 'со', + 'собой', + 'собою', + 'советский', + 'совсем', + 'спасибо', + 'спросить', + 'сразу', + 'стал', + 'старый', + 'стать', + 'стол', + 'сторона', + 'стоять', + 'страна', + 'суть', + 'считать', + 'т', + 'та', + 'так', + 'такая', + 'также', + 'таки', + 'такие', + 'такое', + 'такой', + 'там', + 'твои', + 'твой', + 'твоя', + 'твоё', + 'те', + 'тебе', + 'тебя', + 'тем', + 'теми', + 'теперь', + 'тех', + 'то', + 'тобой', + 'тобою', + 'товарищ', + 'тогда', + 'того', + 'тоже', + 'только', + 'том', + 'тому', + 'тот', + 'тою', + 'третий', + 'три', + 'тринадцатый', + 'тринадцать', + 'ту', + 'туда', + 'тут', + 'ты', + 'тысяч', + 'у', + 'увидеть', + 'уж', + 'уже', + 'улица', + 'уметь', + 'утро', + 'хороший', + 'хорошо', + 'хотел бы', + 'хотеть', + 'хоть', + 'хотя', + 'хочешь', + 'час', + 'часто', + 'часть', + 'чаще', + 'чего', + 'человек', + 'чем', + 'чему', + 'через', + 'четвертый', + 'четыре', + 'четырнадцатый', + 'четырнадцать', + 'что', + 'чтоб', + 'чтобы', + 'чуть', + 'шестнадцатый', + 'шестнадцать', + 'шестой', + 'шесть', + 'эта', + 'эти', + 'этим', + 'этими', + 'этих', + 'это', + 'этого', + 'этой', + 'этом', + 'этому', + 'этот', + 'эту', + 'я', + 'являюсь', + ], + sk: [ + 'a', + 'aby', + 'aj', + 'ak', + 'akej', + 'akejže', + 'ako', + 'akom', + 'akomže', + 'akou', + 'akouže', + 'akože', + 'aká', + 'akáže', + 'aké', + 'akého', + 'akéhože', + 'akému', + 'akémuže', + 'akéže', + 'akú', + 'akúže', + 'aký', + 'akých', + 'akýchže', + 'akým', + 'akými', + 'akýmiže', + 'akýmže', + 'akýže', + 'ale', + 'alebo', + 'ani', + 'asi', + 'avšak', + 'až', + 'ba', + 'bez', + 'bezo', + 'bol', + 'bola', + 'boli', + 'bolo', + 'bude', + 'budem', + 'budeme', + 'budete', + 'budeš', + 'budú', + 'buď', + 'by', + 'byť', + 'cez', + 'cezo', + 'dnes', + 'do', + 'ešte', + 'ho', + 'hoci', + 'i', + 'iba', + 'ich', + 'im', + 'inej', + 'inom', + 'iná', + 'iné', + 'iného', + 'inému', + 'iní', + 'inú', + 'iný', + 'iných', + 'iným', + 'inými', + 'ja', + 'je', + 'jeho', + 'jej', + 'jemu', + 'ju', + 'k', + 'kam', + 'kamže', + 'každou', + 'každá', + 'každé', + 'každého', + 'každému', + 'každí', + 'každú', + 'každý', + 'každých', + 'každým', + 'každými', + 'kde', + 'kej', + 'kejže', + 'keď', + 'keďže', + 'kie', + 'kieho', + 'kiehože', + 'kiemu', + 'kiemuže', + 'kieže', + 'koho', + 'kom', + 'komu', + 'kou', + 'kouže', + 'kto', + 'ktorej', + 'ktorou', + 'ktorá', + 'ktoré', + 'ktorí', + 'ktorú', + 'ktorý', + 'ktorých', + 'ktorým', + 'ktorými', + 'ku', + 'ká', + 'káže', + 'ké', + 'kéže', + 'kú', + 'kúže', + 'ký', + 'kýho', + 'kýhože', + 'kým', + 'kýmu', + 'kýmuže', + 'kýže', + 'lebo', + 'leda', + 'ledaže', + 'len', + 'ma', + 'majú', + 'mal', + 'mala', + 'mali', + 'mať', + 'medzi', + 'mi', + 'mne', + 'mnou', + 'moja', + 'moje', + 'mojej', + 'mojich', + 'mojim', + 'mojimi', + 'mojou', + 'moju', + 'možno', + 'mu', + 'musia', + 'musieť', + 'musí', + 'musím', + 'musíme', + 'musíte', + 'musíš', + 'my', + 'má', + 'mám', + 'máme', + 'máte', + 'máš', + 'môcť', + 'môj', + 'môjho', + 'môže', + 'môžem', + 'môžeme', + 'môžete', + 'môžeš', + 'môžu', + 'mňa', + 'na', + 'nad', + 'nado', + 'najmä', + 'nami', + 'naša', + 'naše', + 'našej', + 'naši', + 'našich', + 'našim', + 'našimi', + 'našou', + 'ne', + 'nech', + 'neho', + 'nej', + 'nejakej', + 'nejakom', + 'nejakou', + 'nejaká', + 'nejaké', + 'nejakého', + 'nejakému', + 'nejakú', + 'nejaký', + 'nejakých', + 'nejakým', + 'nejakými', + 'nemu', + 'než', + 'nich', + 'nie', + 'niektorej', + 'niektorom', + 'niektorou', + 'niektorá', + 'niektoré', + 'niektorého', + 'niektorému', + 'niektorú', + 'niektorý', + 'niektorých', + 'niektorým', + 'niektorými', + 'nielen', + 'niečo', + 'nim', + 'nimi', + 'nič', + 'ničoho', + 'ničom', + 'ničomu', + 'ničím', + 'no', + 'nám', + 'nás', + 'náš', + 'nášho', + 'ním', + 'o', + 'od', + 'odo', + 'on', + 'ona', + 'oni', + 'ono', + 'ony', + 'oň', + 'oňho', + 'po', + 'pod', + 'podo', + 'podľa', + 'pokiaľ', + 'popod', + 'popri', + 'potom', + 'poza', + 'pre', + 'pred', + 'predo', + 'preto', + 'pretože', + 'prečo', + 'pri', + 'práve', + 's', + 'sa', + 'seba', + 'sebe', + 'sebou', + 'sem', + 'si', + 'sme', + 'so', + 'som', + 'ste', + 'svoj', + 'svoja', + 'svoje', + 'svojho', + 'svojich', + 'svojim', + 'svojimi', + 'svojou', + 'svoju', + 'svojím', + 'sú', + 'ta', + 'tak', + 'takej', + 'takejto', + 'taká', + 'takáto', + 'také', + 'takého', + 'takéhoto', + 'takému', + 'takémuto', + 'takéto', + 'takí', + 'takú', + 'takúto', + 'taký', + 'takýto', + 'takže', + 'tam', + 'teba', + 'tebe', + 'tebou', + 'teda', + 'tej', + 'tejto', + 'ten', + 'tento', + 'ti', + 'tie', + 'tieto', + 'tiež', + 'to', + 'toho', + 'tohoto', + 'tohto', + 'tom', + 'tomto', + 'tomu', + 'tomuto', + 'toto', + 'tou', + 'touto', + 'tu', + 'tvoj', + 'tvoja', + 'tvoje', + 'tvojej', + 'tvojho', + 'tvoji', + 'tvojich', + 'tvojim', + 'tvojimi', + 'tvojím', + 'ty', + 'tá', + 'táto', + 'tí', + 'títo', + 'tú', + 'túto', + 'tých', + 'tým', + 'tými', + 'týmto', + 'u', + 'už', + 'v', + 'vami', + 'vaša', + 'vaše', + 'vašej', + 'vaši', + 'vašich', + 'vašim', + 'vaším', + 'veď', + 'viac', + 'vo', + 'vy', + 'vám', + 'vás', + 'váš', + 'vášho', + 'však', + 'všetci', + 'všetka', + 'všetko', + 'všetky', + 'všetok', + 'z', + 'za', + 'začo', + 'začože', + 'zo', + 'áno', + 'čej', + 'či', + 'čia', + 'čie', + 'čieho', + 'čiemu', + 'čiu', + 'čo', + 'čoho', + 'čom', + 'čomu', + 'čou', + 'čože', + 'čí', + 'čím', + 'čími', + 'ďalšia', + 'ďalšie', + 'ďalšieho', + 'ďalšiemu', + 'ďalšiu', + 'ďalšom', + 'ďalšou', + 'ďalší', + 'ďalších', + 'ďalším', + 'ďalšími', + 'ňom', + 'ňou', + 'ňu', + 'že', + ], + sl: [ + 'a', + 'ali', + 'april', + 'avgust', + 'b', + 'bi', + 'bil', + 'bila', + 'bile', + 'bili', + 'bilo', + 'biti', + 'blizu', + 'bo', + 'bodo', + 'bojo', + 'bolj', + 'bom', + 'bomo', + 'boste', + 'bova', + 'boš', + 'brez', + 'c', + 'cel', + 'cela', + 'celi', + 'celo', + 'd', + 'da', + 'daleč', + 'dan', + 'danes', + 'datum', + 'december', + 'deset', + 'deseta', + 'deseti', + 'deseto', + 'devet', + 'deveta', + 'deveti', + 'deveto', + 'do', + 'dober', + 'dobra', + 'dobri', + 'dobro', + 'dokler', + 'dol', + 'dolg', + 'dolga', + 'dolgi', + 'dovolj', + 'drug', + 'druga', + 'drugi', + 'drugo', + 'dva', + 'dve', + 'e', + 'eden', + 'en', + 'ena', + 'ene', + 'eni', + 'enkrat', + 'eno', + 'etc.', + 'f', + 'februar', + 'g', + 'g.', + 'ga', + 'ga.', + 'gor', + 'gospa', + 'gospod', + 'h', + 'halo', + 'i', + 'idr.', + 'ii', + 'iii', + 'in', + 'iv', + 'ix', + 'iz', + 'j', + 'januar', + 'jaz', + 'je', + 'ji', + 'jih', + 'jim', + 'jo', + 'julij', + 'junij', + 'jutri', + 'k', + 'kadarkoli', + 'kaj', + 'kajti', + 'kako', + 'kakor', + 'kamor', + 'kamorkoli', + 'kar', + 'karkoli', + 'katerikoli', + 'kdaj', + 'kdo', + 'kdorkoli', + 'ker', + 'ki', + 'kje', + 'kjer', + 'kjerkoli', + 'ko', + 'koder', + 'koderkoli', + 'koga', + 'komu', + 'kot', + 'kratek', + 'kratka', + 'kratke', + 'kratki', + 'l', + 'lahka', + 'lahke', + 'lahki', + 'lahko', + 'le', + 'lep', + 'lepa', + 'lepe', + 'lepi', + 'lepo', + 'leto', + 'm', + 'maj', + 'majhen', + 'majhna', + 'majhni', + 'malce', + 'malo', + 'manj', + 'marec', + 'me', + 'med', + 'medtem', + 'mene', + 'mesec', + 'mi', + 'midva', + 'midve', + 'mnogo', + 'moj', + 'moja', + 'moje', + 'mora', + 'morajo', + 'moram', + 'moramo', + 'morate', + 'moraš', + 'morem', + 'mu', + 'n', + 'na', + 'nad', + 'naj', + 'najina', + 'najino', + 'najmanj', + 'naju', + 'največ', + 'nam', + 'narobe', + 'nas', + 'nato', + 'nazaj', + 'naš', + 'naša', + 'naše', + 'ne', + 'nedavno', + 'nedelja', + 'nek', + 'neka', + 'nekaj', + 'nekatere', + 'nekateri', + 'nekatero', + 'nekdo', + 'neke', + 'nekega', + 'neki', + 'nekje', + 'neko', + 'nekoga', + 'nekoč', + 'ni', + 'nikamor', + 'nikdar', + 'nikjer', + 'nikoli', + 'nič', + 'nje', + 'njega', + 'njegov', + 'njegova', + 'njegovo', + 'njej', + 'njemu', + 'njen', + 'njena', + 'njeno', + 'nji', + 'njih', + 'njihov', + 'njihova', + 'njihovo', + 'njiju', + 'njim', + 'njo', + 'njun', + 'njuna', + 'njuno', + 'no', + 'nocoj', + 'november', + 'npr.', + 'o', + 'ob', + 'oba', + 'obe', + 'oboje', + 'od', + 'odprt', + 'odprta', + 'odprti', + 'okoli', + 'oktober', + 'on', + 'onadva', + 'one', + 'oni', + 'onidve', + 'osem', + 'osma', + 'osmi', + 'osmo', + 'oz.', + 'p', + 'pa', + 'pet', + 'peta', + 'petek', + 'peti', + 'peto', + 'po', + 'pod', + 'pogosto', + 'poleg', + 'poln', + 'polna', + 'polni', + 'polno', + 'ponavadi', + 'ponedeljek', + 'ponovno', + 'potem', + 'povsod', + 'pozdravljen', + 'pozdravljeni', + 'prav', + 'prava', + 'prave', + 'pravi', + 'pravo', + 'prazen', + 'prazna', + 'prazno', + 'prbl.', + 'precej', + 'pred', + 'prej', + 'preko', + 'pri', + 'pribl.', + 'približno', + 'primer', + 'pripravljen', + 'pripravljena', + 'pripravljeni', + 'proti', + 'prva', + 'prvi', + 'prvo', + 'r', + 'ravno', + 'redko', + 'res', + 'reč', + 's', + 'saj', + 'sam', + 'sama', + 'same', + 'sami', + 'samo', + 'se', + 'sebe', + 'sebi', + 'sedaj', + 'sedem', + 'sedma', + 'sedmi', + 'sedmo', + 'sem', + 'september', + 'seveda', + 'si', + 'sicer', + 'skoraj', + 'skozi', + 'slab', + 'smo', + 'so', + 'sobota', + 'spet', + 'sreda', + 'srednja', + 'srednji', + 'sta', + 'ste', + 'stran', + 'stvar', + 'sva', + 't', + 'ta', + 'tak', + 'taka', + 'take', + 'taki', + 'tako', + 'takoj', + 'tam', + 'te', + 'tebe', + 'tebi', + 'tega', + 'težak', + 'težka', + 'težki', + 'težko', + 'ti', + 'tista', + 'tiste', + 'tisti', + 'tisto', + 'tj.', + 'tja', + 'to', + 'toda', + 'torek', + 'tretja', + 'tretje', + 'tretji', + 'tri', + 'tu', + 'tudi', + 'tukaj', + 'tvoj', + 'tvoja', + 'tvoje', + 'u', + 'v', + 'vaju', + 'vam', + 'vas', + 'vaš', + 'vaša', + 'vaše', + 've', + 'vedno', + 'velik', + 'velika', + 'veliki', + 'veliko', + 'vendar', + 'ves', + 'več', + 'vi', + 'vidva', + 'vii', + 'viii', + 'visok', + 'visoka', + 'visoke', + 'visoki', + 'vsa', + 'vsaj', + 'vsak', + 'vsaka', + 'vsakdo', + 'vsake', + 'vsaki', + 'vsakomur', + 'vse', + 'vsega', + 'vsi', + 'vso', + 'včasih', + 'včeraj', + 'x', + 'z', + 'za', + 'zadaj', + 'zadnji', + 'zakaj', + 'zaprta', + 'zaprti', + 'zaprto', + 'zdaj', + 'zelo', + 'zunaj', + 'č', + 'če', + 'često', + 'četrta', + 'četrtek', + 'četrti', + 'četrto', + 'čez', + 'čigav', + 'š', + 'šest', + 'šesta', + 'šesti', + 'šesto', + 'štiri', + 'ž', + 'že', + ], + so: [ + 'aad', + 'albaabkii', + 'atabo', + 'ay', + 'ayaa', + 'ayee', + 'ayuu', + 'dhan', + 'hadana', + 'in', + 'inuu', + 'isku', + 'jiray', + 'jirtay', + 'ka', + 'kale', + 'kasoo', + 'ku', + 'kuu', + 'lakin', + 'markii', + 'oo', + 'si', + 'soo', + 'uga', + 'ugu', + 'uu', + 'waa', + 'waxa', + 'waxuu', + ], + st: [ + 'a', + 'ba', + 'bane', + 'bona', + 'e', + 'ea', + 'eaba', + 'empa', + 'ena', + 'ha', + 'hae', + 'hape', + 'ho', + 'hore', + 'ka', + 'ke', + 'la', + 'le', + 'li', + 'me', + 'mo', + 'moo', + 'ne', + 'o', + 'oa', + 're', + 'sa', + 'se', + 'tloha', + 'tsa', + 'tse', + ], + es: [ + '0', + '1', + '2', + '3', + '4', + '5', + '6', + '7', + '8', + '9', + '_', + 'a', + 'actualmente', + 'acuerdo', + 'adelante', + 'ademas', + 'además', + 'adrede', + 'afirmó', + 'agregó', + 'ahi', + 'ahora', + 'ahí', + 'al', + 'algo', + 'alguna', + 'algunas', + 'alguno', + 'algunos', + 'algún', + 'alli', + 'allí', + 'alrededor', + 'ambos', + 'ampleamos', + 'antano', + 'antaño', + 'ante', + 'anterior', + 'antes', + 'apenas', + 'aproximadamente', + 'aquel', + 'aquella', + 'aquellas', + 'aquello', + 'aquellos', + 'aqui', + 'aquél', + 'aquélla', + 'aquéllas', + 'aquéllos', + 'aquí', + 'arriba', + 'arribaabajo', + 'aseguró', + 'asi', + 'así', + 'atras', + 'aun', + 'aunque', + 'ayer', + 'añadió', + 'aún', + 'b', + 'bajo', + 'bastante', + 'bien', + 'breve', + 'buen', + 'buena', + 'buenas', + 'bueno', + 'buenos', + 'c', + 'cada', + 'casi', + 'cerca', + 'cierta', + 'ciertas', + 'cierto', + 'ciertos', + 'cinco', + 'claro', + 'comentó', + 'como', + 'con', + 'conmigo', + 'conocer', + 'conseguimos', + 'conseguir', + 'considera', + 'consideró', + 'consigo', + 'consigue', + 'consiguen', + 'consigues', + 'contigo', + 'contra', + 'cosas', + 'creo', + 'cual', + 'cuales', + 'cualquier', + 'cuando', + 'cuanta', + 'cuantas', + 'cuanto', + 'cuantos', + 'cuatro', + 'cuenta', + 'cuál', + 'cuáles', + 'cuándo', + 'cuánta', + 'cuántas', + 'cuánto', + 'cuántos', + 'cómo', + 'd', + 'da', + 'dado', + 'dan', + 'dar', + 'de', + 'debajo', + 'debe', + 'deben', + 'debido', + 'decir', + 'dejó', + 'del', + 'delante', + 'demasiado', + 'demás', + 'dentro', + 'deprisa', + 'desde', + 'despacio', + 'despues', + 'después', + 'detras', + 'detrás', + 'dia', + 'dias', + 'dice', + 'dicen', + 'dicho', + 'dieron', + 'diferente', + 'diferentes', + 'dijeron', + 'dijo', + 'dio', + 'donde', + 'dos', + 'durante', + 'día', + 'días', + 'dónde', + 'e', + 'ejemplo', + 'el', + 'ella', + 'ellas', + 'ello', + 'ellos', + 'embargo', + 'empleais', + 'emplean', + 'emplear', + 'empleas', + 'empleo', + 'en', + 'encima', + 'encuentra', + 'enfrente', + 'enseguida', + 'entonces', + 'entre', + 'era', + 'erais', + 'eramos', + 'eran', + 'eras', + 'eres', + 'es', + 'esa', + 'esas', + 'ese', + 'eso', + 'esos', + 'esta', + 'estaba', + 'estabais', + 'estaban', + 'estabas', + 'estad', + 'estada', + 'estadas', + 'estado', + 'estados', + 'estais', + 'estamos', + 'estan', + 'estando', + 'estar', + 'estaremos', + 'estará', + 'estarán', + 'estarás', + 'estaré', + 'estaréis', + 'estaría', + 'estaríais', + 'estaríamos', + 'estarían', + 'estarías', + 'estas', + 'este', + 'estemos', + 'esto', + 'estos', + 'estoy', + 'estuve', + 'estuviera', + 'estuvierais', + 'estuvieran', + 'estuvieras', + 'estuvieron', + 'estuviese', + 'estuvieseis', + 'estuviesen', + 'estuvieses', + 'estuvimos', + 'estuviste', + 'estuvisteis', + 'estuviéramos', + 'estuviésemos', + 'estuvo', + 'está', + 'estábamos', + 'estáis', + 'están', + 'estás', + 'esté', + 'estéis', + 'estén', + 'estés', + 'ex', + 'excepto', + 'existe', + 'existen', + 'explicó', + 'expresó', + 'f', + 'fin', + 'final', + 'fue', + 'fuera', + 'fuerais', + 'fueran', + 'fueras', + 'fueron', + 'fuese', + 'fueseis', + 'fuesen', + 'fueses', + 'fui', + 'fuimos', + 'fuiste', + 'fuisteis', + 'fuéramos', + 'fuésemos', + 'g', + 'general', + 'gran', + 'grandes', + 'gueno', + 'h', + 'ha', + 'haber', + 'habia', + 'habida', + 'habidas', + 'habido', + 'habidos', + 'habiendo', + 'habla', + 'hablan', + 'habremos', + 'habrá', + 'habrán', + 'habrás', + 'habré', + 'habréis', + 'habría', + 'habríais', + 'habríamos', + 'habrían', + 'habrías', + 'habéis', + 'había', + 'habíais', + 'habíamos', + 'habían', + 'habías', + 'hace', + 'haceis', + 'hacemos', + 'hacen', + 'hacer', + 'hacerlo', + 'haces', + 'hacia', + 'haciendo', + 'hago', + 'han', + 'has', + 'hasta', + 'hay', + 'haya', + 'hayamos', + 'hayan', + 'hayas', + 'hayáis', + 'he', + 'hecho', + 'hemos', + 'hicieron', + 'hizo', + 'horas', + 'hoy', + 'hube', + 'hubiera', + 'hubierais', + 'hubieran', + 'hubieras', + 'hubieron', + 'hubiese', + 'hubieseis', + 'hubiesen', + 'hubieses', + 'hubimos', + 'hubiste', + 'hubisteis', + 'hubiéramos', + 'hubiésemos', + 'hubo', + 'i', + 'igual', + 'incluso', + 'indicó', + 'informo', + 'informó', + 'intenta', + 'intentais', + 'intentamos', + 'intentan', + 'intentar', + 'intentas', + 'intento', + 'ir', + 'j', + 'junto', + 'k', + 'l', + 'la', + 'lado', + 'largo', + 'las', + 'le', + 'lejos', + 'les', + 'llegó', + 'lleva', + 'llevar', + 'lo', + 'los', + 'luego', + 'lugar', + 'm', + 'mal', + 'manera', + 'manifestó', + 'mas', + 'mayor', + 'me', + 'mediante', + 'medio', + 'mejor', + 'mencionó', + 'menos', + 'menudo', + 'mi', + 'mia', + 'mias', + 'mientras', + 'mio', + 'mios', + 'mis', + 'misma', + 'mismas', + 'mismo', + 'mismos', + 'modo', + 'momento', + 'mucha', + 'muchas', + 'mucho', + 'muchos', + 'muy', + 'más', + 'mí', + 'mía', + 'mías', + 'mío', + 'míos', + 'n', + 'nada', + 'nadie', + 'ni', + 'ninguna', + 'ningunas', + 'ninguno', + 'ningunos', + 'ningún', + 'no', + 'nos', + 'nosotras', + 'nosotros', + 'nuestra', + 'nuestras', + 'nuestro', + 'nuestros', + 'nueva', + 'nuevas', + 'nuevo', + 'nuevos', + 'nunca', + 'o', + 'ocho', + 'os', + 'otra', + 'otras', + 'otro', + 'otros', + 'p', + 'pais', + 'para', + 'parece', + 'parte', + 'partir', + 'pasada', + 'pasado', + 'paìs', + 'peor', + 'pero', + 'pesar', + 'poca', + 'pocas', + 'poco', + 'pocos', + 'podeis', + 'podemos', + 'poder', + 'podria', + 'podriais', + 'podriamos', + 'podrian', + 'podrias', + 'podrá', + 'podrán', + 'podría', + 'podrían', + 'poner', + 'por', + 'por qué', + 'porque', + 'posible', + 'primer', + 'primera', + 'primero', + 'primeros', + 'principalmente', + 'pronto', + 'propia', + 'propias', + 'propio', + 'propios', + 'proximo', + 'próximo', + 'próximos', + 'pudo', + 'pueda', + 'puede', + 'pueden', + 'puedo', + 'pues', + 'q', + 'qeu', + 'que', + 'quedó', + 'queremos', + 'quien', + 'quienes', + 'quiere', + 'quiza', + 'quizas', + 'quizá', + 'quizás', + 'quién', + 'quiénes', + 'qué', + 'r', + 'raras', + 'realizado', + 'realizar', + 'realizó', + 'repente', + 'respecto', + 's', + 'sabe', + 'sabeis', + 'sabemos', + 'saben', + 'saber', + 'sabes', + 'sal', + 'salvo', + 'se', + 'sea', + 'seamos', + 'sean', + 'seas', + 'segun', + 'segunda', + 'segundo', + 'según', + 'seis', + 'ser', + 'sera', + 'seremos', + 'será', + 'serán', + 'serás', + 'seré', + 'seréis', + 'sería', + 'seríais', + 'seríamos', + 'serían', + 'serías', + 'seáis', + 'señaló', + 'si', + 'sido', + 'siempre', + 'siendo', + 'siete', + 'sigue', + 'siguiente', + 'sin', + 'sino', + 'sobre', + 'sois', + 'sola', + 'solamente', + 'solas', + 'solo', + 'solos', + 'somos', + 'son', + 'soy', + 'soyos', + 'su', + 'supuesto', + 'sus', + 'suya', + 'suyas', + 'suyo', + 'suyos', + 'sé', + 'sí', + 'sólo', + 't', + 'tal', + 'tambien', + 'también', + 'tampoco', + 'tan', + 'tanto', + 'tarde', + 'te', + 'temprano', + 'tendremos', + 'tendrá', + 'tendrán', + 'tendrás', + 'tendré', + 'tendréis', + 'tendría', + 'tendríais', + 'tendríamos', + 'tendrían', + 'tendrías', + 'tened', + 'teneis', + 'tenemos', + 'tener', + 'tenga', + 'tengamos', + 'tengan', + 'tengas', + 'tengo', + 'tengáis', + 'tenida', + 'tenidas', + 'tenido', + 'tenidos', + 'teniendo', + 'tenéis', + 'tenía', + 'teníais', + 'teníamos', + 'tenían', + 'tenías', + 'tercera', + 'ti', + 'tiempo', + 'tiene', + 'tienen', + 'tienes', + 'toda', + 'todas', + 'todavia', + 'todavía', + 'todo', + 'todos', + 'total', + 'trabaja', + 'trabajais', + 'trabajamos', + 'trabajan', + 'trabajar', + 'trabajas', + 'trabajo', + 'tras', + 'trata', + 'través', + 'tres', + 'tu', + 'tus', + 'tuve', + 'tuviera', + 'tuvierais', + 'tuvieran', + 'tuvieras', + 'tuvieron', + 'tuviese', + 'tuvieseis', + 'tuviesen', + 'tuvieses', + 'tuvimos', + 'tuviste', + 'tuvisteis', + 'tuviéramos', + 'tuviésemos', + 'tuvo', + 'tuya', + 'tuyas', + 'tuyo', + 'tuyos', + 'tú', + 'u', + 'ultimo', + 'un', + 'una', + 'unas', + 'uno', + 'unos', + 'usa', + 'usais', + 'usamos', + 'usan', + 'usar', + 'usas', + 'uso', + 'usted', + 'ustedes', + 'v', + 'va', + 'vais', + 'valor', + 'vamos', + 'van', + 'varias', + 'varios', + 'vaya', + 'veces', + 'ver', + 'verdad', + 'verdadera', + 'verdadero', + 'vez', + 'vosotras', + 'vosotros', + 'voy', + 'vuestra', + 'vuestras', + 'vuestro', + 'vuestros', + 'w', + 'x', + 'y', + 'ya', + 'yo', + 'z', + 'él', + 'éramos', + 'ésa', + 'ésas', + 'ése', + 'ésos', + 'ésta', + 'éstas', + 'éste', + 'éstos', + 'última', + 'últimas', + 'último', + 'últimos', + ], + sw: [ + 'akasema', + 'alikuwa', + 'alisema', + 'baada', + 'basi', + 'bila', + 'cha', + 'chini', + 'hadi', + 'hapo', + 'hata', + 'hivyo', + 'hiyo', + 'huku', + 'huo', + 'ili', + 'ilikuwa', + 'juu', + 'kama', + 'karibu', + 'katika', + 'kila', + 'kima', + 'kisha', + 'kubwa', + 'kutoka', + 'kuwa', + 'kwa', + 'kwamba', + 'kwenda', + 'kwenye', + 'la', + 'lakini', + 'mara', + 'mdogo', + 'mimi', + 'mkubwa', + 'mmoja', + 'moja', + 'muda', + 'mwenye', + 'na', + 'naye', + 'ndani', + 'ng', + 'ni', + 'nini', + 'nonkungu', + 'pamoja', + 'pia', + 'sana', + 'sasa', + 'sauti', + 'tafadhali', + 'tena', + 'tu', + 'vile', + 'wa', + 'wakati', + 'wake', + 'walikuwa', + 'wao', + 'watu', + 'wengine', + 'wote', + 'ya', + 'yake', + 'yangu', + 'yao', + 'yeye', + 'yule', + 'za', + 'zaidi', + 'zake', + ], + sv: [ + 'aderton', + 'adertonde', + 'adjö', + 'aldrig', + 'alla', + 'allas', + 'allt', + 'alltid', + 'alltså', + 'andra', + 'andras', + 'annan', + 'annat', + 'artonde', + 'artonn', + 'att', + 'av', + 'bakom', + 'bara', + 'behöva', + 'behövas', + 'behövde', + 'behövt', + 'beslut', + 'beslutat', + 'beslutit', + 'bland', + 'blev', + 'bli', + 'blir', + 'blivit', + 'bort', + 'borta', + 'bra', + 'bäst', + 'bättre', + 'båda', + 'bådas', + 'dag', + 'dagar', + 'dagarna', + 'dagen', + 'de', + 'del', + 'delen', + 'dem', + 'den', + 'denna', + 'deras', + 'dess', + 'dessa', + 'det', + 'detta', + 'dig', + 'din', + 'dina', + 'dit', + 'ditt', + 'dock', + 'dom', + 'du', + 'där', + 'därför', + 'då', + 'e', + 'efter', + 'eftersom', + 'ej', + 'elfte', + 'eller', + 'elva', + 'emot', + 'en', + 'enkel', + 'enkelt', + 'enkla', + 'enligt', + 'ens', + 'er', + 'era', + 'ers', + 'ert', + 'ett', + 'ettusen', + 'fanns', + 'fem', + 'femte', + 'femtio', + 'femtionde', + 'femton', + 'femtonde', + 'fick', + 'fin', + 'finnas', + 'finns', + 'fjorton', + 'fjortonde', + 'fjärde', + 'fler', + 'flera', + 'flesta', + 'fram', + 'framför', + 'från', + 'fyra', + 'fyrtio', + 'fyrtionde', + 'få', + 'får', + 'fått', + 'följande', + 'för', + 'före', + 'förlåt', + 'förra', + 'första', + 'genast', + 'genom', + 'gick', + 'gjorde', + 'gjort', + 'god', + 'goda', + 'godare', + 'godast', + 'gott', + 'gälla', + 'gäller', + 'gällt', + 'gärna', + 'gå', + 'går', + 'gått', + 'gör', + 'göra', + 'ha', + 'hade', + 'haft', + 'han', + 'hans', + 'har', + 'heller', + 'hellre', + 'helst', + 'helt', + 'henne', + 'hennes', + 'hit', + 'hon', + 'honom', + 'hundra', + 'hundraen', + 'hundraett', + 'hur', + 'här', + 'hög', + 'höger', + 'högre', + 'högst', + 'i', + 'ibland', + 'icke', + 'idag', + 'igen', + 'igår', + 'imorgon', + 'in', + 'inför', + 'inga', + 'ingen', + 'ingenting', + 'inget', + 'innan', + 'inne', + 'inom', + 'inte', + 'inuti', + 'ja', + 'jag', + 'jo', + 'ju', + 'just', + 'jämfört', + 'kan', + 'kanske', + 'knappast', + 'kom', + 'komma', + 'kommer', + 'kommit', + 'kr', + 'kunde', + 'kunna', + 'kunnat', + 'kvar', + 'legat', + 'ligga', + 'ligger', + 'lika', + 'likställd', + 'likställda', + 'lilla', + 'lite', + 'liten', + 'litet', + 'länge', + 'längre', + 'längst', + 'lätt', + 'lättare', + 'lättast', + 'långsam', + 'långsammare', + 'långsammast', + 'långsamt', + 'långt', + 'låt', + 'man', + 'med', + 'mej', + 'mellan', + 'men', + 'mer', + 'mera', + 'mest', + 'mig', + 'min', + 'mina', + 'mindre', + 'minst', + 'mitt', + 'mittemot', + 'mot', + 'mycket', + 'många', + 'måste', + 'möjlig', + 'möjligen', + 'möjligt', + 'möjligtvis', + 'ned', + 'nederst', + 'nedersta', + 'nedre', + 'nej', + 'ner', + 'ni', + 'nio', + 'nionde', + 'nittio', + 'nittionde', + 'nitton', + 'nittonde', + 'nog', + 'noll', + 'nr', + 'nu', + 'nummer', + 'när', + 'nästa', + 'någon', + 'någonting', + 'något', + 'några', + 'nån', + 'nånting', + 'nåt', + 'nödvändig', + 'nödvändiga', + 'nödvändigt', + 'nödvändigtvis', + 'och', + 'också', + 'ofta', + 'oftast', + 'olika', + 'olikt', + 'om', + 'oss', + 'på', + 'rakt', + 'redan', + 'rätt', + 'sa', + 'sade', + 'sagt', + 'samma', + 'sedan', + 'senare', + 'senast', + 'sent', + 'sex', + 'sextio', + 'sextionde', + 'sexton', + 'sextonde', + 'sig', + 'sin', + 'sina', + 'sist', + 'sista', + 'siste', + 'sitt', + 'sitta', + 'sju', + 'sjunde', + 'sjuttio', + 'sjuttionde', + 'sjutton', + 'sjuttonde', + 'själv', + 'sjätte', + 'ska', + 'skall', + 'skulle', + 'slutligen', + 'små', + 'smått', + 'snart', + 'som', + 'stor', + 'stora', + 'stort', + 'större', + 'störst', + 'säga', + 'säger', + 'sämre', + 'sämst', + 'så', + 'sådan', + 'sådana', + 'sådant', + 'ta', + 'tack', + 'tar', + 'tidig', + 'tidigare', + 'tidigast', + 'tidigt', + 'till', + 'tills', + 'tillsammans', + 'tio', + 'tionde', + 'tjugo', + 'tjugoen', + 'tjugoett', + 'tjugonde', + 'tjugotre', + 'tjugotvå', + 'tjungo', + 'tolfte', + 'tolv', + 'tre', + 'tredje', + 'trettio', + 'trettionde', + 'tretton', + 'trettonde', + 'två', + 'tvåhundra', + 'under', + 'upp', + 'ur', + 'ursäkt', + 'ut', + 'utan', + 'utanför', + 'ute', + 'va', + 'vad', + 'var', + 'vara', + 'varför', + 'varifrån', + 'varit', + 'varje', + 'varken', + 'vars', + 'varsågod', + 'vart', + 'vem', + 'vems', + 'verkligen', + 'vi', + 'vid', + 'vidare', + 'viktig', + 'viktigare', + 'viktigast', + 'viktigt', + 'vilka', + 'vilkas', + 'vilken', + 'vilket', + 'vill', + 'väl', + 'vänster', + 'vänstra', + 'värre', + 'vår', + 'våra', + 'vårt', + 'än', + 'ännu', + 'är', + 'även', + 'åt', + 'åtminstone', + 'åtta', + 'åttio', + 'åttionde', + 'åttonde', + 'över', + 'övermorgon', + 'överst', + 'övre', + ], + th: [ + 'กล่าว', + 'กว่า', + 'กัน', + 'กับ', + 'การ', + 'ก็', + 'ก่อน', + 'ขณะ', + 'ขอ', + 'ของ', + 'ขึ้น', + 'คง', + 'ครั้ง', + 'ความ', + 'คือ', + 'จะ', + 'จัด', + 'จาก', + 'จึง', + 'ช่วง', + 'ซึ่ง', + 'ดัง', + 'ด้วย', + 'ด้าน', + 'ตั้ง', + 'ตั้งแต่', + 'ตาม', + 'ต่อ', + 'ต่าง', + 'ต่างๆ', + 'ต้อง', + 'ถึง', + 'ถูก', + 'ถ้า', + 'ทั้ง', + 'ทั้งนี้', + 'ทาง', + 'ที่', + 'ที่สุด', + 'ทุก', + 'ทํา', + 'ทําให้', + 'นอกจาก', + 'นัก', + 'นั้น', + 'นี้', + 'น่า', + 'นํา', + 'บาง', + 'ผล', + 'ผ่าน', + 'พบ', + 'พร้อม', + 'มา', + 'มาก', + 'มี', + 'ยัง', + 'รวม', + 'ระหว่าง', + 'รับ', + 'ราย', + 'ร่วม', + 'ลง', + 'วัน', + 'ว่า', + 'สุด', + 'ส่ง', + 'ส่วน', + 'สําหรับ', + 'หนึ่ง', + 'หรือ', + 'หลัง', + 'หลังจาก', + 'หลาย', + 'หาก', + 'อยาก', + 'อยู่', + 'อย่าง', + 'ออก', + 'อะไร', + 'อาจ', + 'อีก', + 'เขา', + 'เข้า', + 'เคย', + 'เฉพาะ', + 'เช่น', + 'เดียว', + 'เดียวกัน', + 'เนื่องจาก', + 'เปิด', + 'เปิดเผย', + 'เป็น', + 'เป็นการ', + 'เพราะ', + 'เพื่อ', + 'เมื่อ', + 'เรา', + 'เริ่ม', + 'เลย', + 'เห็น', + 'เอง', + 'แต่', + 'แบบ', + 'แรก', + 'และ', + 'แล้ว', + 'แห่ง', + 'โดย', + 'ใน', + 'ให้', + 'ได้', + 'ไป', + 'ไม่', + 'ไว้', + '้ง', + ], + tl: [ + 'akin', + 'aking', + 'ako', + 'alin', + 'am', + 'amin', + 'aming', + 'ang', + 'ano', + 'anumang', + 'apat', + 'at', + 'atin', + 'ating', + 'ay', + 'bababa', + 'bago', + 'bakit', + 'bawat', + 'bilang', + 'dahil', + 'dalawa', + 'dapat', + 'din', + 'dito', + 'doon', + 'gagawin', + 'gayunman', + 'ginagawa', + 'ginawa', + 'ginawang', + 'gumawa', + 'gusto', + 'habang', + 'hanggang', + 'hindi', + 'huwag', + 'iba', + 'ibaba', + 'ibabaw', + 'ibig', + 'ikaw', + 'ilagay', + 'ilalim', + 'ilan', + 'inyong', + 'isa', + 'isang', + 'itaas', + 'ito', + 'iyo', + 'iyon', + 'iyong', + 'ka', + 'kahit', + 'kailangan', + 'kailanman', + 'kami', + 'kanila', + 'kanilang', + 'kanino', + 'kanya', + 'kanyang', + 'kapag', + 'kapwa', + 'karamihan', + 'katiyakan', + 'katulad', + 'kaya', + 'kaysa', + 'ko', + 'kong', + 'kulang', + 'kumuha', + 'kung', + 'laban', + 'lahat', + 'lamang', + 'likod', + 'lima', + 'maaari', + 'maaaring', + 'maging', + 'mahusay', + 'makita', + 'marami', + 'marapat', + 'masyado', + 'may', + 'mayroon', + 'mga', + 'minsan', + 'mismo', + 'mula', + 'muli', + 'na', + 'nabanggit', + 'naging', + 'nagkaroon', + 'nais', + 'nakita', + 'namin', + 'napaka', + 'narito', + 'nasaan', + 'ng', + 'ngayon', + 'ni', + 'nila', + 'nilang', + 'nito', + 'niya', + 'niyang', + 'noon', + 'o', + 'pa', + 'paano', + 'pababa', + 'paggawa', + 'pagitan', + 'pagkakaroon', + 'pagkatapos', + 'palabas', + 'pamamagitan', + 'panahon', + 'pangalawa', + 'para', + 'paraan', + 'pareho', + 'pataas', + 'pero', + 'pumunta', + 'pumupunta', + 'sa', + 'saan', + 'sabi', + 'sabihin', + 'sarili', + 'sila', + 'sino', + 'siya', + 'tatlo', + 'tayo', + 'tulad', + 'tungkol', + 'una', + 'walang', + ], + tr: [ + 'acaba', + 'acep', + 'adamakıllı', + 'adeta', + 'ait', + 'altmýþ', + 'altmış', + 'altý', + 'altı', + 'ama', + 'amma', + 'anca', + 'ancak', + 'arada', + 'artýk', + 'aslında', + 'aynen', + 'ayrıca', + 'az', + 'açıkça', + 'açıkçası', + 'bana', + 'bari', + 'bazen', + 'bazý', + 'bazı', + 'başkası', + 'baţka', + 'belki', + 'ben', + 'benden', + 'beni', + 'benim', + 'beri', + 'beriki', + 'beþ', + 'beş', + 'beţ', + 'bilcümle', + 'bile', + 'bin', + 'binaen', + 'binaenaleyh', + 'bir', + 'biraz', + 'birazdan', + 'birbiri', + 'birden', + 'birdenbire', + 'biri', + 'birice', + 'birileri', + 'birisi', + 'birkaç', + 'birkaçı', + 'birkez', + 'birlikte', + 'birçok', + 'birçoğu', + 'birþey', + 'birþeyi', + 'birşey', + 'birşeyi', + 'birţey', + 'bitevi', + 'biteviye', + 'bittabi', + 'biz', + 'bizatihi', + 'bizce', + 'bizcileyin', + 'bizden', + 'bize', + 'bizi', + 'bizim', + 'bizimki', + 'bizzat', + 'boşuna', + 'bu', + 'buna', + 'bunda', + 'bundan', + 'bunlar', + 'bunları', + 'bunların', + 'bunu', + 'bunun', + 'buracıkta', + 'burada', + 'buradan', + 'burası', + 'böyle', + 'böylece', + 'böylecene', + 'böylelikle', + 'böylemesine', + 'böylesine', + 'büsbütün', + 'bütün', + 'cuk', + 'cümlesi', + 'da', + 'daha', + 'dahi', + 'dahil', + 'dahilen', + 'daima', + 'dair', + 'dayanarak', + 'de', + 'defa', + 'dek', + 'demin', + 'demincek', + 'deminden', + 'denli', + 'derakap', + 'derhal', + 'derken', + 'deđil', + 'değil', + 'değin', + 'diye', + 'diđer', + 'diğer', + 'diğeri', + 'doksan', + 'dokuz', + 'dolayı', + 'dolayısıyla', + 'doğru', + 'dört', + 'edecek', + 'eden', + 'ederek', + 'edilecek', + 'ediliyor', + 'edilmesi', + 'ediyor', + 'elbet', + 'elbette', + 'elli', + 'emme', + 'en', + 'enikonu', + 'epey', + 'epeyce', + 'epeyi', + 'esasen', + 'esnasında', + 'etmesi', + 'etraflı', + 'etraflıca', + 'etti', + 'ettiği', + 'ettiğini', + 'evleviyetle', + 'evvel', + 'evvela', + 'evvelce', + 'evvelden', + 'evvelemirde', + 'evveli', + 'eđer', + 'eğer', + 'fakat', + 'filanca', + 'gah', + 'gayet', + 'gayetle', + 'gayri', + 'gayrı', + 'gelgelelim', + 'gene', + 'gerek', + 'gerçi', + 'geçende', + 'geçenlerde', + 'gibi', + 'gibilerden', + 'gibisinden', + 'gine', + 'göre', + 'gırla', + 'hakeza', + 'halbuki', + 'halen', + 'halihazırda', + 'haliyle', + 'handiyse', + 'hangi', + 'hangisi', + 'hani', + 'hariç', + 'hasebiyle', + 'hasılı', + 'hatta', + 'hele', + 'hem', + 'henüz', + 'hep', + 'hepsi', + 'her', + 'herhangi', + 'herkes', + 'herkesin', + 'hiç', + 'hiçbir', + 'hiçbiri', + 'hoş', + 'hulasaten', + 'iken', + 'iki', + 'ila', + 'ile', + 'ilen', + 'ilgili', + 'ilk', + 'illa', + 'illaki', + 'imdi', + 'indinde', + 'inen', + 'insermi', + 'ise', + 'ister', + 'itibaren', + 'itibariyle', + 'itibarıyla', + 'iyi', + 'iyice', + 'iyicene', + 'için', + 'iş', + 'işte', + 'iţte', + 'kadar', + 'kaffesi', + 'kah', + 'kala', + 'kanýmca', + 'karşın', + 'katrilyon', + 'kaynak', + 'kaçı', + 'kelli', + 'kendi', + 'kendilerine', + 'kendini', + 'kendisi', + 'kendisine', + 'kendisini', + 'kere', + 'kez', + 'keza', + 'kezalik', + 'keşke', + 'keţke', + 'ki', + 'kim', + 'kimden', + 'kime', + 'kimi', + 'kimisi', + 'kimse', + 'kimsecik', + 'kimsecikler', + 'külliyen', + 'kýrk', + 'kýsaca', + 'kırk', + 'kısaca', + 'lakin', + 'leh', + 'lütfen', + 'maada', + 'madem', + 'mademki', + 'mamafih', + 'mebni', + 'međer', + 'meğer', + 'meğerki', + 'meğerse', + 'milyar', + 'milyon', + 'mu', + 'mü', + 'mý', + 'mı', + 'nasýl', + 'nasıl', + 'nasılsa', + 'nazaran', + 'naşi', + 'ne', + 'neden', + 'nedeniyle', + 'nedenle', + 'nedense', + 'nerde', + 'nerden', + 'nerdeyse', + 'nere', + 'nerede', + 'nereden', + 'neredeyse', + 'neresi', + 'nereye', + 'netekim', + 'neye', + 'neyi', + 'neyse', + 'nice', + 'nihayet', + 'nihayetinde', + 'nitekim', + 'niye', + 'niçin', + 'o', + 'olan', + 'olarak', + 'oldu', + 'olduklarını', + 'oldukça', + 'olduğu', + 'olduğunu', + 'olmadı', + 'olmadığı', + 'olmak', + 'olması', + 'olmayan', + 'olmaz', + 'olsa', + 'olsun', + 'olup', + 'olur', + 'olursa', + 'oluyor', + 'on', + 'ona', + 'onca', + 'onculayın', + 'onda', + 'ondan', + 'onlar', + 'onlardan', + 'onlari', + 'onlarýn', + 'onları', + 'onların', + 'onu', + 'onun', + 'oracık', + 'oracıkta', + 'orada', + 'oradan', + 'oranca', + 'oranla', + 'oraya', + 'otuz', + 'oysa', + 'oysaki', + 'pek', + 'pekala', + 'peki', + 'pekçe', + 'peyderpey', + 'rağmen', + 'sadece', + 'sahi', + 'sahiden', + 'sana', + 'sanki', + 'sekiz', + 'seksen', + 'sen', + 'senden', + 'seni', + 'senin', + 'siz', + 'sizden', + 'sizi', + 'sizin', + 'sonra', + 'sonradan', + 'sonraları', + 'sonunda', + 'tabii', + 'tam', + 'tamam', + 'tamamen', + 'tamamıyla', + 'tarafından', + 'tek', + 'trilyon', + 'tüm', + 'var', + 'vardı', + 'vasıtasıyla', + 've', + 'velev', + 'velhasıl', + 'velhasılıkelam', + 'veya', + 'veyahut', + 'ya', + 'yahut', + 'yakinen', + 'yakında', + 'yakından', + 'yakınlarda', + 'yalnız', + 'yalnızca', + 'yani', + 'yapacak', + 'yapmak', + 'yaptı', + 'yaptıkları', + 'yaptığı', + 'yaptığını', + 'yapılan', + 'yapılması', + 'yapıyor', + 'yedi', + 'yeniden', + 'yenilerde', + 'yerine', + 'yetmiþ', + 'yetmiş', + 'yetmiţ', + 'yine', + 'yirmi', + 'yok', + 'yoksa', + 'yoluyla', + 'yüz', + 'yüzünden', + 'zarfında', + 'zaten', + 'zati', + 'zira', + 'çabuk', + 'çabukça', + 'çeşitli', + 'çok', + 'çokları', + 'çoklarınca', + 'çokluk', + 'çoklukla', + 'çokça', + 'çoğu', + 'çoğun', + 'çoğunca', + 'çoğunlukla', + 'çünkü', + 'öbür', + 'öbürkü', + 'öbürü', + 'önce', + 'önceden', + 'önceleri', + 'öncelikle', + 'öteki', + 'ötekisi', + 'öyle', + 'öylece', + 'öylelikle', + 'öylemesine', + 'öz', + 'üzere', + 'üç', + 'þey', + 'þeyden', + 'þeyi', + 'þeyler', + 'þu', + 'þuna', + 'þunda', + 'þundan', + 'þunu', + 'şayet', + 'şey', + 'şeyden', + 'şeyi', + 'şeyler', + 'şu', + 'şuna', + 'şuncacık', + 'şunda', + 'şundan', + 'şunlar', + 'şunları', + 'şunu', + 'şunun', + 'şura', + 'şuracık', + 'şuracıkta', + 'şurası', + 'şöyle', + 'ţayet', + 'ţimdi', + 'ţu', + 'ţöyle', + ], + uk: [ + 'авжеж', + 'адже', + 'але', + 'б', + 'без', + 'був', + 'була', + 'були', + 'було', + 'бути', + 'більш', + 'вам', + 'вас', + 'весь', + 'вздовж', + 'ви', + 'вниз', + 'внизу', + 'вона', + 'вони', + 'воно', + 'все', + 'всередині', + 'всіх', + 'від', + 'він', + 'да', + 'давай', + 'давати', + 'де', + 'дещо', + 'для', + 'до', + 'з', + 'завжди', + 'замість', + 'й', + 'коли', + 'ледве', + 'майже', + 'ми', + 'навколо', + 'навіть', + 'нам', + 'от', + 'отже', + 'отож', + 'поза', + 'про', + 'під', + 'та', + 'так', + 'такий', + 'також', + 'те', + 'ти', + 'тобто', + 'тож', + 'тощо', + 'хоча', + 'це', + 'цей', + 'чи', + 'чого', + 'що', + 'як', + 'який', + 'якої', + 'є', + 'із', + 'інших', + 'їх', + 'її', + ], + ur: [ + 'آئی', + 'آئے', + 'آج', + 'آخر', + 'آخرکبر', + 'آدهی', + 'آًب', + 'آٹھ', + 'آیب', + 'اة', + 'اخبزت', + 'اختتبم', + 'ادھر', + 'ارد', + 'اردگرد', + 'ارکبى', + 'اش', + 'اضتعوبل', + 'اضتعوبلات', + 'اضطرذ', + 'اضکب', + 'اضکی', + 'اضکے', + 'اطراف', + 'اغیب', + 'افراد', + 'الگ', + 'اور', + 'اوًچب', + 'اوًچبئی', + 'اوًچی', + 'اوًچے', + 'اى', + 'اً', + 'اًذر', + 'اًہیں', + 'اٹھبًب', + 'اپٌب', + 'اپٌے', + 'اچھب', + 'اچھی', + 'اچھے', + 'اکثر', + 'اکٹھب', + 'اکٹھی', + 'اکٹھے', + 'اکیلا', + 'اکیلی', + 'اکیلے', + 'اگرچہ', + 'اہن', + 'ایطے', + 'ایک', + 'ب', + 'ت', + 'تبزٍ', + 'تت', + 'تر', + 'ترتیت', + 'تریي', + 'تعذاد', + 'تن', + 'تو', + 'توبم', + 'توہی', + 'توہیں', + 'تٌہب', + 'تک', + 'تھب', + 'تھوڑا', + 'تھوڑی', + 'تھوڑے', + 'تھی', + 'تھے', + 'تیي', + 'ثب', + 'ثبئیں', + 'ثبترتیت', + 'ثبری', + 'ثبرے', + 'ثبعث', + 'ثبلا', + 'ثبلترتیت', + 'ثبہر', + 'ثدبئے', + 'ثرآں', + 'ثراں', + 'ثرش', + 'ثعذ', + 'ثغیر', + 'ثلٌذ', + 'ثلٌذوثبلا', + 'ثلکہ', + 'ثي', + 'ثٌب', + 'ثٌبرہب', + 'ثٌبرہی', + 'ثٌبرہے', + 'ثٌبًب', + 'ثٌذ', + 'ثٌذکرو', + 'ثٌذکرًب', + 'ثٌذی', + 'ثڑا', + 'ثڑوں', + 'ثڑی', + 'ثڑے', + 'ثھر', + 'ثھرا', + 'ثھراہوا', + 'ثھرپور', + 'ثھی', + 'ثہت', + 'ثہتر', + 'ثہتری', + 'ثہتریي', + 'ثیچ', + 'ج', + 'خب', + 'خبرہب', + 'خبرہی', + 'خبرہے', + 'خبهوظ', + 'خبًب', + 'خبًتب', + 'خبًتی', + 'خبًتے', + 'خبًٌب', + 'خت', + 'ختن', + 'خجکہ', + 'خص', + 'خططرذ', + 'خلذی', + 'خو', + 'خواى', + 'خوًہی', + 'خوکہ', + 'خٌبة', + 'خگہ', + 'خگہوں', + 'خگہیں', + 'خیطب', + 'خیطبکہ', + 'در', + 'درخبت', + 'درخہ', + 'درخے', + 'درزقیقت', + 'درضت', + 'دش', + 'دفعہ', + 'دلچطپ', + 'دلچطپی', + 'دلچطپیبں', + 'دو', + 'دور', + 'دوراى', + 'دوضرا', + 'دوضروں', + 'دوضری', + 'دوضرے', + 'دوًوں', + 'دکھبئیں', + 'دکھبتب', + 'دکھبتی', + 'دکھبتے', + 'دکھبو', + 'دکھبًب', + 'دکھبیب', + 'دی', + 'دیب', + 'دیتب', + 'دیتی', + 'دیتے', + 'دیر', + 'دیٌب', + 'دیکھو', + 'دیکھٌب', + 'دیکھی', + 'دیکھیں', + 'دے', + 'ر', + 'راضتوں', + 'راضتہ', + 'راضتے', + 'رریعہ', + 'رریعے', + 'رکي', + 'رکھ', + 'رکھب', + 'رکھتب', + 'رکھتبہوں', + 'رکھتی', + 'رکھتے', + 'رکھی', + 'رکھے', + 'رہب', + 'رہی', + 'رہے', + 'ز', + 'زبصل', + 'زبضر', + 'زبل', + 'زبلات', + 'زبلیہ', + 'زصوں', + 'زصہ', + 'زصے', + 'زقبئق', + 'زقیتیں', + 'زقیقت', + 'زکن', + 'زکویہ', + 'زیبدٍ', + 'صبف', + 'صسیر', + 'صفر', + 'صورت', + 'صورتسبل', + 'صورتوں', + 'صورتیں', + 'ض', + 'ضبت', + 'ضبتھ', + 'ضبدٍ', + 'ضبرا', + 'ضبرے', + 'ضبل', + 'ضبلوں', + 'ضت', + 'ضرور', + 'ضرورت', + 'ضروری', + 'ضلطلہ', + 'ضوچ', + 'ضوچب', + 'ضوچتب', + 'ضوچتی', + 'ضوچتے', + 'ضوچو', + 'ضوچٌب', + 'ضوچی', + 'ضوچیں', + 'ضکب', + 'ضکتب', + 'ضکتی', + 'ضکتے', + 'ضکٌب', + 'ضکی', + 'ضکے', + 'ضیذھب', + 'ضیذھی', + 'ضیذھے', + 'ضیکٌڈ', + 'ضے', + 'طرف', + 'طریق', + 'طریقوں', + 'طریقہ', + 'طریقے', + 'طور', + 'طورپر', + 'ظبہر', + 'ع', + 'عذد', + 'عظین', + 'علاقوں', + 'علاقہ', + 'علاقے', + 'علاوٍ', + 'عووهی', + 'غبیذ', + 'غخص', + 'غذ', + 'غروع', + 'غروعبت', + 'غے', + 'فرد', + 'فی', + 'ق', + 'قجل', + 'قجیلہ', + 'قطن', + 'لئے', + 'لا', + 'لازهی', + 'لو', + 'لوجب', + 'لوجی', + 'لوجے', + 'لوسبت', + 'لوسہ', + 'لوگ', + 'لوگوں', + 'لڑکپي', + 'لگتب', + 'لگتی', + 'لگتے', + 'لگٌب', + 'لگی', + 'لگیں', + 'لگے', + 'لی', + 'لیب', + 'لیٌب', + 'لیں', + 'لے', + 'ه', + 'هتعلق', + 'هختلف', + 'هسترم', + 'هسترهہ', + 'هسطوش', + 'هسیذ', + 'هطئلہ', + 'هطئلے', + 'هطبئل', + 'هطتعول', + 'هطلق', + 'هعلوم', + 'هػتول', + 'هلا', + 'هوکي', + 'هوکٌبت', + 'هوکٌہ', + 'هٌبضت', + 'هڑا', + 'هڑًب', + 'هڑے', + 'هکول', + 'هگر', + 'هہرثبى', + 'هیرا', + 'هیری', + 'هیرے', + 'هیں', + 'و', + 'وار', + 'والے', + 'وٍ', + 'ًئی', + 'ًئے', + 'ًب', + 'ًبپطٌذ', + 'ًبگسیر', + 'ًطجت', + 'ًقطہ', + 'ًو', + 'ًوخواى', + 'ًکبلٌب', + 'ًکتہ', + 'ًہ', + 'ًہیں', + 'ًیب', + 'ًے', + 'ٓ آش', + 'ٹھیک', + 'پبئے', + 'پبش', + 'پبًب', + 'پبًچ', + 'پر', + 'پراًب', + 'پطٌذ', + 'پل', + 'پورا', + 'پوچھب', + 'پوچھتب', + 'پوچھتی', + 'پوچھتے', + 'پوچھو', + 'پوچھوں', + 'پوچھٌب', + 'پوچھیں', + 'پچھلا', + 'پھر', + 'پہلا', + 'پہلی', + 'پہلےضی', + 'پہلےضے', + 'پہلےضےہی', + 'پیع', + 'چبر', + 'چبہب', + 'چبہٌب', + 'چبہے', + 'چلا', + 'چلو', + 'چلیں', + 'چلے', + 'چکب', + 'چکی', + 'چکیں', + 'چکے', + 'چھوٹب', + 'چھوٹوں', + 'چھوٹی', + 'چھوٹے', + 'چھہ', + 'چیسیں', + 'ڈھوًڈا', + 'ڈھوًڈلیب', + 'ڈھوًڈو', + 'ڈھوًڈًب', + 'ڈھوًڈی', + 'ڈھوًڈیں', + 'ک', + 'کئی', + 'کئے', + 'کب', + 'کبفی', + 'کبم', + 'کت', + 'کجھی', + 'کرا', + 'کرتب', + 'کرتبہوں', + 'کرتی', + 'کرتے', + 'کرتےہو', + 'کررہب', + 'کررہی', + 'کررہے', + 'کرو', + 'کرًب', + 'کریں', + 'کرے', + 'کطی', + 'کل', + 'کن', + 'کوئی', + 'کوتر', + 'کورا', + 'کوروں', + 'کورٍ', + 'کورے', + 'کوطي', + 'کوى', + 'کوًطب', + 'کوًطی', + 'کوًطے', + 'کھولا', + 'کھولو', + 'کھولٌب', + 'کھولی', + 'کھولیں', + 'کھولے', + 'کہ', + 'کہب', + 'کہتب', + 'کہتی', + 'کہتے', + 'کہو', + 'کہوں', + 'کہٌب', + 'کہی', + 'کہیں', + 'کہے', + 'کی', + 'کیب', + 'کیطب', + 'کیطرف', + 'کیطے', + 'کیلئے', + 'کیوًکہ', + 'کیوں', + 'کیے', + 'کے', + 'کےثعذ', + 'کےرریعے', + 'گئی', + 'گئے', + 'گب', + 'گرد', + 'گروٍ', + 'گروپ', + 'گروہوں', + 'گٌتی', + 'گی', + 'گیب', + 'گے', + 'ہر', + 'ہن', + 'ہو', + 'ہوئی', + 'ہوئے', + 'ہوا', + 'ہوبرا', + 'ہوبری', + 'ہوبرے', + 'ہوتب', + 'ہوتی', + 'ہوتے', + 'ہورہب', + 'ہورہی', + 'ہورہے', + 'ہوضکتب', + 'ہوضکتی', + 'ہوضکتے', + 'ہوًب', + 'ہوًی', + 'ہوًے', + 'ہوچکب', + 'ہوچکی', + 'ہوچکے', + 'ہوگئی', + 'ہوگئے', + 'ہوگیب', + 'ہوں', + 'ہی', + 'ہیں', + 'ہے', + 'ی', + 'یقیٌی', + 'یہ', + 'یہبں', + ], + vi: [ + 'a ha', + 'a-lô', + 'ai', + 'ai ai', + 'ai nấy', + 'alô', + 'amen', + 'anh', + 'bao giờ', + 'bao lâu', + 'bao nhiêu', + 'bao nả', + 'bay biến', + 'biết', + 'biết bao', + 'biết bao nhiêu', + 'biết chừng nào', + 'biết mấy', + 'biết đâu', + 'biết đâu chừng', + 'biết đâu đấy', + 'bà', + 'bài', + 'bác', + 'bây bẩy', + 'bây chừ', + 'bây giờ', + 'bây nhiêu', + 'bèn', + 'béng', + 'bông', + 'bạn', + 'bản', + 'bất chợt', + 'bất cứ', + 'bất giác', + 'bất kì', + 'bất kể', + 'bất kỳ', + 'bất luận', + 'bất nhược', + 'bất quá', + 'bất thình lình', + 'bất tử', + 'bất đồ', + 'bấy', + 'bấy chầy', + 'bấy chừ', + 'bấy giờ', + 'bấy lâu', + 'bấy lâu nay', + 'bấy nay', + 'bấy nhiêu', + 'bập bà bập bõm', + 'bập bõm', + 'bắt đầu từ', + 'bằng', + 'bằng không', + 'bằng nấy', + 'bằng ấy', + 'bển', + 'bệt', + 'bị', + 'bỏ mẹ', + 'bỗng', + 'bỗng chốc', + 'bỗng dưng', + 'bỗng không', + 'bỗng nhiên', + 'bỗng đâu', + 'bộ', + 'bội phần', + 'bớ', + 'bởi', + 'bởi chưng', + 'bởi nhưng', + 'bởi thế', + 'bởi vì', + 'bởi vậy', + 'bức', + 'cao', + 'cha', + 'cha chả', + 'chao ôi', + 'chiếc', + 'cho', + 'cho nên', + 'cho tới', + 'cho tới khi', + 'cho đến', + 'cho đến khi', + 'choa', + 'chu cha', + 'chui cha', + 'chung cục', + 'chung qui', + 'chung quy', + 'chung quy lại', + 'chuyện', + 'chành chạnh', + 'chí chết', + 'chính', + 'chính là', + 'chính thị', + 'chùn chùn', + 'chùn chũn', + 'chú', + 'chú mày', + 'chú mình', + 'chúng mình', + 'chúng ta', + 'chúng tôi', + 'chăn chắn', + 'chăng', + 'chưa', + 'chầm chập', + 'chậc', + 'chắc', + 'chắc hẳn', + 'chẳng lẽ', + 'chẳng những', + 'chẳng nữa', + 'chẳng phải', + 'chết nỗi', + 'chết thật', + 'chết tiệt', + 'chỉ', + 'chỉn', + 'chốc chốc', + 'chớ', + 'chớ chi', + 'chợt', + 'chủn', + 'chứ', + 'chứ lị', + 'coi bộ', + 'coi mòi', + 'con', + 'cu cậu', + 'cuốn', + 'cuộc', + 'càng', + 'các', + 'cái', + 'cây', + 'còn', + 'có', + 'có chăng là', + 'có dễ', + 'có thể', + 'có vẻ', + 'cóc khô', + 'cô', + 'cô mình', + 'công nhiên', + 'cùng', + 'cùng cực', + 'cùng nhau', + 'cùng với', + 'căn', + 'căn cắt', + 'cũng', + 'cũng như', + 'cũng vậy', + 'cũng vậy thôi', + 'cơ', + 'cơ chừng', + 'cơ hồ', + 'cơ mà', + 'cơn', + 'cả', + 'cả thảy', + 'cả thể', + 'cảm ơn', + 'cần', + 'cật lực', + 'cật sức', + 'cậu', + 'cổ lai', + 'của', + 'cứ', + 'cứ việc', + 'cực lực', + 'do', + 'do vì', + 'do vậy', + 'do đó', + 'duy', + 'dào', + 'dì', + 'dù cho', + 'dù rằng', + 'dưới', + 'dạ', + 'dần dà', + 'dần dần', + 'dầu sao', + 'dẫu', + 'dẫu sao', + 'dễ sợ', + 'dễ thường', + 'dở chừng', + 'dữ', + 'em', + 'giữa', + 'gì', + 'hay', + 'hoàn toàn', + 'hoặc', + 'hơn', + 'hầu hết', + 'họ', + 'hỏi', + 'khi', + 'khác', + 'không', + 'luôn', + 'là', + 'làm', + 'lên', + 'lúc', + 'lại', + 'lần', + 'lớn', + 'muốn', + 'mà', + 'mình', + 'mỗi', + 'một', + 'một cách', + 'mới', + 'mợ', + 'ngay', + 'ngay cả', + 'ngay khi', + 'ngay lúc', + 'ngay lập tức', + 'ngay tức khắc', + 'ngay từ', + 'nghe chừng', + 'nghe đâu', + 'nghen', + 'nghiễm nhiên', + 'nghỉm', + 'ngoài', + 'ngoài ra', + 'ngoải', + 'ngày', + 'ngày càng', + 'ngày ngày', + 'ngày xưa', + 'ngày xửa', + 'ngôi', + 'ngõ hầu', + 'ngăn ngắt', + 'ngươi', + 'người', + 'ngọn', + 'ngọt', + 'ngộ nhỡ', + 'nh', + 'nhau', + 'nhiên hậu', + 'nhiều', + 'nhiệt liệt', + 'nhung nhăng', + 'nhà', + 'nhân dịp', + 'nhân tiện', + 'nhé', + 'nhón nhén', + 'như', + 'như chơi', + 'như không', + 'như quả', + 'như thể', + 'như tuồng', + 'như vậy', + 'nhưng', + 'nhưng mà', + 'nhược bằng', + 'nhất', + 'nhất loạt', + 'nhất luật', + 'nhất mực', + 'nhất nhất', + 'nhất quyết', + 'nhất sinh', + 'nhất thiết', + 'nhất tâm', + 'nhất tề', + 'nhất đán', + 'nhất định', + 'nhận', + 'nhỉ', + 'nhỡ ra', + 'những', + 'những ai', + 'những như', + 'nào', + 'này', + 'nên', + 'nên chi', + 'nó', + 'nóc', + 'nói', + 'năm', + 'nơi', + 'nấy', + 'nếu', + 'nếu như', + 'nền', + 'nọ', + 'nớ', + 'nức nở', + 'nữa', + 'oai oái', + 'oái', + 'pho', + 'phè', + 'phóc', + 'phót', + 'phăn phắt', + 'phương chi', + 'phải', + 'phải chi', + 'phải chăng', + 'phắt', + 'phỉ phui', + 'phỏng', + 'phỏng như', + 'phốc', + 'phụt', + 'phứt', + 'qua', + 'qua quít', + 'qua quýt', + 'quyết', + 'quyết nhiên', + 'quyển', + 'quá', + 'quá chừng', + 'quá lắm', + 'quá sá', + 'quá thể', + 'quá trời', + 'quá xá', + 'quá đỗi', + 'quá độ', + 'quá ư', + 'quý hồ', + 'quả', + 'quả là', + 'quả tang', + 'quả thật', + 'quả tình', + 'quả vậy', + 'quả đúng', + 'ra', + 'ra phết', + 'ra sao', + 'ra trò', + 'ren rén', + 'riu ríu', + 'riêng', + 'riệt', + 'rày', + 'ráo', + 'ráo trọi', + 'rén', + 'rích', + 'rón rén', + 'rút cục', + 'răng', + 'rất', + 'rằng', + 'rằng là', + 'rốt cuộc', + 'rốt cục', + 'rồi', + 'rứa', + 'sa sả', + 'sao', + 'sau', + 'sau chót', + 'sau cuối', + 'sau cùng', + 'sau đó', + 'so', + 'song le', + 'suýt', + 'sì', + 'sạch', + 'sất', + 'sắp', + 'sẽ', + 'số', + 'số là', + 'sốt sột', + 'sở dĩ', + 'sự', + 'tanh', + 'tha hồ', + 'than ôi', + 'thanh', + 'theo', + 'thi thoảng', + 'thoạt', + 'thoạt nhiên', + 'thoắt', + 'thuần', + 'thà', + 'thà là', + 'thà rằng', + 'thành ra', + 'thành thử', + 'thái quá', + 'tháng', + 'thì', + 'thì thôi', + 'thình lình', + 'thím', + 'thôi', + 'thúng thắng', + 'thương ôi', + 'thường', + 'thảo hèn', + 'thảo nào', + 'thấy', + 'thẩy', + 'thậm', + 'thậm chí', + 'thật lực', + 'thật ra', + 'thật vậy', + 'thế', + 'thế là', + 'thế mà', + 'thế nào', + 'thế nên', + 'thế ra', + 'thế thì', + 'thế à', + 'thếch', + 'thỉnh thoảng', + 'thỏm', + 'thốc', + 'thốc tháo', + 'thốt', + 'thốt nhiên', + 'thộc', + 'thời gian', + 'thục mạng', + 'thửa', + 'thực ra', + 'thực sự', + 'thực vậy', + 'tiếp theo', + 'tiếp đó', + 'tiện thể', + 'toà', + 'toé khói', + 'toẹt', + 'trong', + 'trên', + 'trước', + 'trước kia', + 'trước nay', + 'trước tiên', + 'trước đây', + 'trước đó', + 'trếu tráo', + 'trển', + 'trệt', + 'trệu trạo', + 'trỏng', + 'trời đất ơi', + 'trừ phi', + 'tuy', + 'tuy nhiên', + 'tuy rằng', + 'tuy thế', + 'tuy vậy', + 'tuyệt nhiên', + 'tuần tự', + 'tuốt luốt', + 'tuốt tuồn tuột', + 'tuốt tuột', + 'tà tà', + 'tênh', + 'tít mù', + 'tò te', + 'tôi', + 'tông tốc', + 'tù tì', + 'tăm tắp', + 'tại', + 'tại vì', + 'tấm', + 'tấn', + 'tất cả', + 'tất thảy', + 'tất tần tật', + 'tất tật', + 'tắp', + 'tắp lự', + 'tọt', + 'tỏ ra', + 'tỏ vẻ', + 'tốc tả', + 'tối ư', + 'tột', + 'tớ', + 'tới', + 'tức thì', + 'tức tốc', + 'từ', + 'từng', + 'tự vì', + 'tựu trung', + 'veo', + 'veo veo', + 'việc', + 'vung thiên địa', + 'vung tàn tán', + 'vung tán tàn', + 'và', + 'vào', + 'vâng', + 'vèo', + 'vì', + 'vì chưng', + 'vì thế', + 'vì vậy', + 'ví bằng', + 'ví dù', + 'ví phỏng', + 'ví thử', + 'vô hình trung', + 'vô kể', + 'vô luận', + 'vô vàn', + 'văng tê', + 'vạn nhất', + 'vả chăng', + 'vả lại', + 'vẫn', + 'vậy', + 'vậy là', + 'vậy thì', + 'về', + 'vị tất', + 'vốn dĩ', + 'với', + 'với lại', + 'vở', + 'vụt', + 'vừa', + 'vừa mới', + 'xa xả', + 'xiết bao', + 'xon xón', + 'xoành xoạch', + 'xoét', + 'xoẳn', + 'xoẹt', + 'xuất kì bất ý', + 'xuất kỳ bất ý', + 'xuể', + 'xuống', + 'xăm xúi', + 'xăm xăm', + 'xăm xắm', + 'xềnh xệch', + 'xệp', + 'à', + 'à ơi', + 'ào', + 'á', + 'á à', + 'ái', + 'ái chà', + 'ái dà', + 'áng', + 'âu là', + 'ô hay', + 'ô hô', + 'ô kê', + 'ô kìa', + 'ôi chao', + 'ôi thôi', + 'ông', + 'úi', + 'úi chà', + 'úi dào', + 'ý', + 'ý chừng', + 'ý da', + 'đang', + 'đi', + 'điều', + 'đành đạch', + 'đáng lí', + 'đáng lý', + 'đáng lẽ', + 'đánh đùng', + 'đáo để', + 'đây', + 'đã', + 'đó', + 'được', + 'đại loại', + 'đại nhân', + 'đại phàm', + 'đại để', + 'đến', + 'đến nỗi', + 'đều', + 'để', + 'ơ', + 'ơ hay', + 'ơ kìa', + 'ơi', + 'ư', + 'ạ', + 'ạ ơi', + 'ấy', + 'ầu ơ', + 'ắt', + 'ắt hẳn', + 'ắt là', + 'ối dào', + 'ối giời', + 'ối giời ơi', + 'ồ', + 'ổng', + 'ớ', + 'ờ', + 'ở', + 'ở trên', + 'ủa', + 'ứ hự', + 'ứ ừ', + 'ừ', + 'ử', + ], + yo: [ + 'a', + 'an', + 'bá', + 'bí', + 'bẹ̀rẹ̀', + 'fún', + 'fẹ́', + 'gbogbo', + 'inú', + 'jù', + 'jẹ', + 'jẹ́', + 'kan', + 'kì', + 'kí', + 'kò', + 'láti', + 'lè', + 'lọ', + 'mi', + 'mo', + 'máa', + 'mọ̀', + 'ni', + 'náà', + 'ní', + 'nígbà', + 'nítorí', + 'nǹkan', + 'o', + 'padà', + 'pé', + 'púpọ̀', + 'pẹ̀lú', + 'rẹ̀', + 'sì', + 'sí', + 'sínú', + 'ṣ', + 'ti', + 'tí', + 'wà', + 'wá', + 'wọn', + 'wọ́n', + 'yìí', + 'àti', + 'àwọn', + 'é', + 'í', + 'òun', + 'ó', + 'ń', + 'ńlá', + 'ṣe', + 'ṣé', + 'ṣùgbọ́n', + 'ẹmọ́', + 'ọjọ́', + 'ọ̀pọ̀lọpọ̀', + ], + zu: [ + 'futhi', + 'kahle', + 'kakhulu', + 'kanye', + 'khona', + 'kodwa', + 'kungani', + 'kusho', + 'la', + 'lakhe', + 'lapho', + 'mina', + 'ngesikhathi', + 'nje', + 'phansi', + 'phezulu', + 'u', + 'ukuba', + 'ukuthi', + 'ukuze', + 'uma', + 'wahamba', + 'wakhe', + 'wami', + 'wase', + 'wathi', + 'yakhe', + 'zakhe', + 'zonke', + ], +} +//# sourceMappingURL=utils.js.map diff --git a/build/indexing_pipeline/utils.js.map b/build/indexing_pipeline/utils.js.map new file mode 100644 index 0000000..4ae6fe5 --- /dev/null +++ b/build/indexing_pipeline/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/indexing_pipeline/utils.ts"],"names":[],"mappings":"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IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,GAAG;QACH,GAAG;QACH,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,KAAK;QACL,MAAM;QACN,IAAI;QACJ,GAAG;QACH,MAAM;QACN,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,GAAG;QACH,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;QACH,IAAI;QACJ,GAAG;QACH,GAAG;QACH,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;QACH,IAAI;QACJ,GAAG;QACH,GAAG;QACH,GAAG;QACH,IAAI;QACJ,GAAG;QACH,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,GAAG;QACH,IAAI;QACJ,GAAG;QACH,GAAG;QACH,IAAI;QACJ,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;QACH,IAAI;QACJ,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;QACH,IAAI;QACJ,GAAG;QACH,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,GAAG;QACH,GAAG;QACH,IAAI;QACJ,MAAM;QACN,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,GAAG;QACH,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,KAAK;QACL,KAAK;QACL,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,MAAM;QACN,IAAI;QACJ,GAAG;QACH,GAAG;QACH,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,GAAG;QACH,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;QACH,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,KAAK;QACL,KAAK;QACL,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,MAAM;QACN,MAAM;QACN,MAAM;QACN,MAAM;QACN,MAAM;QACN,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,GAAG;QACH,GAAG;QACH,IAAI;QACJ,MAAM;QACN,KAAK;QACL,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,GAAG;QACH,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,GAAG;QACH,GAAG;QACH,IAAI;QACJ,GAAG;QACH,GAAG;QACH,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,GAAG;QACH,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,KAAK;QACL,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,KAAK;QACL,GAAG;QACH,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,MAAM;QACN,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,MAAM;QACN,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,GAAG;QACH,GAAG;QACH,IAAI;QACJ,GAAG;QACH,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,KAAK;QACL,GAAG;QACH,IAAI;QACJ,KAAK;QACL,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,MAAM;QACN,IAAI;QACJ,GAAG;QACH,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,GAAG;QACH,GAAG;QACH,KAAK;QACL,IAAI;QACJ,KAAK;QACL,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,KAAK;QACL,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,GAAG;QACH,IAAI;QACJ,KAAK;QACL,KAAK;QACL,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,GAAG;QACH,IAAI;QACJ,GAAG;QACH,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,GAAG;QACH,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,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"} \ No newline at end of file diff --git a/build/preload.js b/build/preload.js new file mode 100644 index 0000000..7d30840 --- /dev/null +++ b/build/preload.js @@ -0,0 +1,15 @@ +// src/preload.ts +// See the Electron documentation for details on how to use preload scripts: +// https://www.electronjs.org/docs/latest/tutorial/process-model#preload-scripts +import { contextBridge, ipcRenderer } from 'electron' +contextBridge.exposeInMainWorld('electron', { + ipcRenderer: { + send: function (channel, data) { + ipcRenderer.send(channel, data) + }, + on: function (channel, func) { + ipcRenderer.on(channel, func) + }, + }, +}) +//# sourceMappingURL=preload.js.map diff --git a/build/preload.js.map b/build/preload.js.map new file mode 100644 index 0000000..cb3c4d4 --- /dev/null +++ b/build/preload.js.map @@ -0,0 +1 @@ +{"version":3,"file":"preload.js","sourceRoot":"","sources":["../src/preload.ts"],"names":[],"mappings":"AAAA,iBAAiB;AACjB,4EAA4E;AAC5E,gFAAgF;AAEhF,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAErD,aAAa,CAAC,iBAAiB,CAAC,UAAU,EAAE;IACxC,WAAW,EAAE;QACT,IAAI,EAAE,UAAC,OAAe,EAAE,IAAS;YAC7B,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QACnC,CAAC;QACD,EAAE,EAAE,UACA,OAAe,EACf,IAA0C;YAE1C,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QACjC,CAAC;KACJ;CACJ,CAAC,CAAA"} \ No newline at end of file diff --git a/build/renderer.js b/build/renderer.js new file mode 100644 index 0000000..52dd267 --- /dev/null +++ b/build/renderer.js @@ -0,0 +1,32 @@ +/** + * This file will automatically be loaded by webpack and run in the "renderer" context. + * To learn more about the differences between the "main" and the "renderer" context in + * Electron, visit: + * + * https://electronjs.org/docs/latest/tutorial/process-model + * + * By default, Node.js integration in this file is disabled. When enabling Node.js integration + * in a renderer process, please be aware of potential security implications. You can read + * more about security risks here: + * + * https://electronjs.org/docs/tutorial/security + * + * To enable Node.js integration in this file, open up `main.js` and enable the `nodeIntegration` + * flag: + * + * ``` + * // Create the browser window. + * mainWindow = new BrowserWindow({ + * width: 800, + * height: 600, + * webPreferences: { + * nodeIntegration: true + * } + * }); + * ``` + */ +import './index.css' +console.log( + '👋 This message is being logged by "renderer.js", included via webpack', +) +//# sourceMappingURL=renderer.js.map diff --git a/build/renderer.js.map b/build/renderer.js.map new file mode 100644 index 0000000..bad75d1 --- /dev/null +++ b/build/renderer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,aAAa,CAAA;AAEpB,OAAO,CAAC,GAAG,CACP,wEAAwE,CAC3E,CAAA"} \ No newline at end of file diff --git a/build/search/find_similar.js b/build/search/find_similar.js new file mode 100644 index 0000000..e05e0ed --- /dev/null +++ b/build/search/find_similar.js @@ -0,0 +1,343 @@ +var __awaiter = + (this && this.__awaiter) || + function (thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P + ? value + : new P(function (resolve) { + resolve(value) + }) + } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)) + } catch (e) { + reject(e) + } + } + function rejected(value) { + try { + step(generator['throw'](value)) + } catch (e) { + reject(e) + } + } + function step(result) { + result.done + ? resolve(result.value) + : adopt(result.value).then(fulfilled, rejected) + } + step( + (generator = generator.apply(thisArg, _arguments || [])).next(), + ) + }) + } +var __generator = + (this && this.__generator) || + function (thisArg, body) { + var _ = { + label: 0, + sent: function () { + if (t[0] & 1) throw t[1] + return t[1] + }, + trys: [], + ops: [], + }, + f, + y, + t, + g + return ( + (g = { next: verb(0), throw: verb(1), return: verb(2) }), + typeof Symbol === 'function' && + (g[Symbol.iterator] = function () { + return this + }), + g + ) + function verb(n) { + return function (v) { + return step([n, v]) + } + } + function step(op) { + if (f) throw new TypeError('Generator is already executing.') + while ((g && ((g = 0), op[0] && (_ = 0)), _)) + try { + if ( + ((f = 1), + y && + (t = + op[0] & 2 + ? y['return'] + : op[0] + ? y['throw'] || + ((t = y['return']) && t.call(y), 0) + : y.next) && + !(t = t.call(y, op[1])).done) + ) + return t + if (((y = 0), t)) op = [op[0] & 2, t.value] + switch (op[0]) { + case 0: + case 1: + t = op + break + case 4: + _.label++ + return { value: op[1], done: false } + case 5: + _.label++ + y = op[1] + op = [0] + continue + case 7: + op = _.ops.pop() + _.trys.pop() + continue + default: + if ( + !((t = _.trys), + (t = t.length > 0 && t[t.length - 1])) && + (op[0] === 6 || op[0] === 2) + ) { + _ = 0 + continue + } + if ( + op[0] === 3 && + (!t || (op[1] > t[0] && op[1] < t[3])) + ) { + _.label = op[1] + break + } + if (op[0] === 6 && _.label < t[1]) { + _.label = t[1] + t = op + break + } + if (t && _.label < t[2]) { + _.label = t[2] + _.ops.push(op) + break + } + if (t[2]) _.ops.pop() + _.trys.pop() + continue + } + op = body.call(thisArg, _) + } catch (e) { + op = [6, e] + y = 0 + } finally { + f = t = 0 + } + if (op[0] & 5) throw op[1] + return { value: op[0] ? op[1] : void 0, done: true } + } + } +import log from 'electron-log' +function findSimilar( + req, + res, + embedTextFunction, + allTables, + entityExtractionFunction, +) { + return __awaiter(this, void 0, void 0, function () { + var embeddedChunk, + vectors, + vectorDocsTable, + result, + filteredResult, + endResults, + error_1 + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + _a.trys.push([0, 4, , 5]) + return [ + 4 /*yield*/, + embedTextFunction(req.body.contentText), + ] + case 1: + embeddedChunk = _a.sent() + vectors = embeddedChunk[0].data + vectorDocsTable = allTables.vectorDocsTable + return [ + 4 /*yield*/, + vectorDocsTable + .search(Array.from(vectors)) + .where( + "fullurl != '".concat( + req.body.fullUrl, + "' AND createdwhen != 0", + ), + ) + .limit(30) + .execute(), + ] + case 2: + result = _a.sent() + filteredResult = result.filter(function (item) { + var _a + if (item.contenttype === 'annotation') { + var splitUrl = + (_a = item.fullurl) === null || _a === void 0 + ? void 0 + : _a.split('/#') + if (splitUrl[0] === req.body.fullUrl) { + return false + } + } + return item._distance < 1.25 && item.fullurl !== 'null' + }) + filteredResult = Object.values( + filteredResult.reduce(function (acc, item) { + if ( + !acc[item.fullurl] || + acc[item.fullurl]._distance > item._distance + ) { + acc[item.fullurl] = item + } + return acc + }, {}), + ) + return [ + 4 /*yield*/, + Promise.all( + filteredResult.map(function (item) { + return __awaiter( + this, + void 0, + void 0, + function () { + var path, topLevelFolder + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if ( + !( + item.sourceapplication === + 'obsidian' || + item.sourceapplication === + 'logseq' + ) + ) + return [3 /*break*/, 2] + return [ + 4 /*yield*/, + allTables.sourcesDB.get( + 'SELECT path FROM watchedFoldersTable WHERE type = ?', + [ + item.sourceapplication, + ], + ), + ] + case 1: + topLevelFolder = _a.sent() + topLevelFolder = + topLevelFolder.path + .split('/') + .pop() + _a.label = 2 + case 2: + if ( + !( + item.contenttype === + 'pdf' + ) + ) + return [3 /*break*/, 4] + return [ + 4 /*yield*/, + allTables.sourcesDB.get( + 'SELECT path FROM pdfTable WHERE fingerPrint = ?', + [item.fullurl], + ), + ] + case 3: + path = _a.sent() + _a.label = 4 + case 4: + if ( + !( + item.contenttype === + 'markdown' + ) + ) + return [3 /*break*/, 6] + return [ + 4 /*yield*/, + allTables.sourcesDB.get( + 'SELECT path FROM markdownDocsTable WHERE fingerPrint = ?', + [item.fullurl], + ), + ] + case 5: + path = _a.sent() + _a.label = 6 + case 6: + console.log( + 'item', + item.sourceapplication, + ) + return [ + 2 /*return*/, + { + fullUrl: + item.fullurl, + pageTitle: + item.pagetitle, + contentText: + item.contenttext, + createdWhen: + item.createdwhen, + contentType: + item.contenttype, + sourceApplication: + item.sourceapplication, + creatorId: + item.creatorid, + distance: + item._distance, + entities: + item.entities, + path: + path === null || + path === void 0 + ? void 0 + : path.path, + topLevelFolder: + topLevelFolder, + }, + ] + } + }) + }, + ) + }), + ), + ] + case 3: + endResults = _a.sent() + return [2 /*return*/, res.status(200).send(endResults)] + case 4: + error_1 = _a.sent() + log.error('Error in /find_similar', error_1) + return [ + 2 /*return*/, + res + .status(500) + .json({ error: 'Internal server error' }), + ] + case 5: + return [2 /*return*/] + } + }) + }) +} +export { findSimilar } +//# sourceMappingURL=find_similar.js.map diff --git a/build/search/find_similar.js.map b/build/search/find_similar.js.map new file mode 100644 index 0000000..eefaffb --- /dev/null +++ b/build/search/find_similar.js.map @@ -0,0 +1 @@ +{"version":3,"file":"find_similar.js","sourceRoot":"","sources":["../../src/search/find_similar.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,GAAG,MAAM,cAAc,CAAA;AAoB9B,SAAe,WAAW,CACtB,GAAY,EACZ,GAAa,EACb,iBAA2B,EAC3B,SAAoB,EACpB,wBAAkC;;;;;;;oBAGR,qBAAM,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,EAAA;;oBAA7D,aAAa,GAAG,SAA6C;oBAC7D,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;oBAE/B,eAAe,GAAG,SAAS,CAAC,eAAe,CAAA;oBAG5B,qBAAM,eAAe;6BACrC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;6BAC3B,KAAK,CAAC,sBAAe,GAAG,CAAC,IAAI,CAAC,OAAO,2BAAwB,CAAC;6BAC9D,KAAK,CAAC,EAAE,CAAC;6BACT,OAAO,EAAE,EAAA;;oBAJV,MAAM,GAAW,SAIP;oBAEV,cAAc,GAAW,MAAM,CAAC,MAAM,CAAC,UAAC,IAAU;;wBAClD,IAAI,IAAI,CAAC,WAAW,KAAK,YAAY,EAAE;4BACnC,IAAI,QAAQ,GAAG,MAAA,IAAI,CAAC,OAAO,0CAAE,KAAK,CAAC,IAAI,CAAC,CAAA;4BACxC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE;gCAClC,OAAO,KAAK,CAAA;6BACf;yBACJ;wBACD,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,CAAA;oBAC3D,CAAC,CAAC,CAAA;oBAEF,cAAc,GAAG,MAAM,CAAC,MAAM,CAC1B,cAAc,CAAC,MAAM,CAAC,UAAC,GAAyB,EAAE,IAAU;wBACxD,IACI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;4BAClB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,EAC9C;4BACE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAA;yBAC3B;wBACD,OAAO,GAAG,CAAA;oBACd,CAAC,EAAE,EAAE,CAAC,CACT,CAAA;oBAEkB,qBAAM,OAAO,CAAC,GAAG,CAChC,cAAc,CAAC,GAAG,CAAC,UAAgB,IAAU;;;;;;iDAKrC,CAAA,IAAI,CAAC,iBAAiB,KAAK,UAAU;gDACrC,IAAI,CAAC,iBAAiB,KAAK,QAAQ,CAAA,EADnC,wBACmC;4CAElB,qBAAM,SAAS,CAAC,SAAS,CAAC,GAAG,CAC1C,qDAAqD,EACrD,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAC3B,EAAA;;4CAHD,cAAc,GAAG,SAGhB,CAAA;4CACD,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAA;;;iDAErD,CAAA,IAAI,CAAC,WAAW,KAAK,KAAK,CAAA,EAA1B,wBAA0B;4CACnB,qBAAM,SAAS,CAAC,SAAS,CAAC,GAAG,CAChC,iDAAiD,EACjD,CAAC,IAAI,CAAC,OAAO,CAAC,CACjB,EAAA;;4CAHD,IAAI,GAAG,SAGN,CAAA;;;iDAED,CAAA,IAAI,CAAC,WAAW,KAAK,UAAU,CAAA,EAA/B,wBAA+B;4CACxB,qBAAM,SAAS,CAAC,SAAS,CAAC,GAAG,CAChC,0DAA0D,EAC1D,CAAC,IAAI,CAAC,OAAO,CAAC,CACjB,EAAA;;4CAHD,IAAI,GAAG,SAGN,CAAA;;;4CAGL,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAA;4CAE3C,sBAAO;oDACH,OAAO,EAAE,IAAI,CAAC,OAAO;oDACrB,SAAS,EAAE,IAAI,CAAC,SAAS;oDACzB,WAAW,EAAE,IAAI,CAAC,WAAW;oDAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;oDAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;oDAC7B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;oDACzC,SAAS,EAAE,IAAI,CAAC,SAAS;oDACzB,QAAQ,EAAE,IAAI,CAAC,SAAS;oDACxB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oDACvB,IAAI,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI;oDAChB,cAAc,EAAE,cAAc;iDACjC,EAAA;;;;yBACJ,CAAC,CACL,EAAA;;oBA5CK,UAAU,GAAG,SA4ClB;oBAED,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAA;;;oBAEvC,GAAG,CAAC,KAAK,CAAC,wBAAwB,EAAE,OAAK,CAAC,CAAA;oBAC1C,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,EAAA;;;;;CAEtE;AAED,OAAO,EAAE,WAAW,EAAE,CAAA"} \ No newline at end of file diff --git a/package.json b/package.json index af6bc06..34a541a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "memex-desktop", "productName": "Memex Desktop", - "version": "0.0.25", + "version": "0.0.27", "description": "Backup and sync to your favorite PKM tools", "main": "build/index.js", "type": "module", @@ -29,7 +29,7 @@ "build:mac": "tsc && electron-builder build --mac dmg zip --x64 --arm64", "build:win": "tsc && electron-builder build --win nsis --x64", "build:linux": "tsc && electron-builder build --linux AppImage --x64", - "build:all": "yarn build:mac && yarn build:win && yarn build:linux", + "build:all": "tsc && yarn build:mac && yarn build:win && yarn build:linux", "build:allbutMac": "yarn build:win:x64 && yarn build:win:ia32 && yarn build:linux:x64", "prepare": "husky install" },