diff --git a/build/index.css b/build/index.css deleted file mode 100644 index c4a38fa..0000000 --- a/build/index.css +++ /dev/null @@ -1,51 +0,0 @@ -body { - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, - Helvetica, Arial, sans-serif; - margin: auto; - max-width: 38rem; - padding: 2rem; - background-color: #12131b; - display: flex; - align-items: center; - justify-content: center; - flex-direction: column; - grid-gap: 20px; - height: 500px; - - & > svg { - height: 50px; - width: 50px; - } -} - -h1 { - font-family: Arial, sans-serif; - color: #cacad1; - text-align: center; - font-size: 18px; - margin-bottom: -25px; -} -p { - font-family: Arial, sans-serif; - color: #a9a9b1; - font-size: 16px; - text-align: center; -} - -.downloadProgress { - margin-right: 10px; -} - -.warning { - border: 1px solid #ff0000; - font-size: 14px; - text-align: center; - margin-top: 10px; - padding: 10px; - color: #ff0000; - border-radius: 5px; -} - -#dbPath { - color: white; -} diff --git a/build/index.html b/build/index.html deleted file mode 100644 index d92c98c..0000000 --- a/build/index.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - Successfully connected - - - - - - - -

The desktop app is now connected

-

You can close this window and return to the Memex sidebar

-

- Important: Your index is all stored locally, please make sure to - back it up.
- Folder to back up: -

- - - diff --git a/build/index.js b/build/index.js deleted file mode 100644 index 2947571..0000000 --- a/build/index.js +++ /dev/null @@ -1,1719 +0,0 @@ -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, ipcMain, 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: '*' })); -ipcMain.handle('get-db-path', function () { - return path.join(app.getPath('userData')); -}); -//////////////////////////////// -/// 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.cjs'), - nodeIntegration: true - } - }); - var indexPath; - if (isPackaged) { - indexPath = path.join(electron.app.getAppPath(), 'build', '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: isPackaged - ? path.join(electron.app.getAppPath(), 'build', 'index.html') - : 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*/]; - } - return [4 /*yield*/, initializeFileSystemWatchers()]; - case 10: - _a.sent(); - try { - startExpress(); // Start Express server first - log.catchErrors(); - trayIconPath = ''; - 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, createPDFTable, createIndexQuery, createIndexQueryForPath, createFoldersTable, createIndexQueryForType, createMarkdownTable, createIndexForMarkdownPath, createIndexForMarkdownFingerPrint, vectorDB, generateZeroVector, defaultVectorDocument, _a, error_1; - var _this = this; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - dbPath = ''; - 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 - ]; - case 4: - _b.sent(); - createPDFTable = "CREATE TABLE IF NOT EXISTS pdfTable(\n id INTEGER PRIMARY KEY,\n path STRING,\n fingerPrint STRING,\n pageTitle STRING,\n extractedContent STRING,\n createdWhen INTEGER,\n sourceApplication STRING,\n creatorId STRING,\n metaDataJSON STRING\n )\n "; - return [4 /*yield*/, sourcesDB.run(createPDFTable)]; - case 5: - _b.sent(); - createIndexQuery = "CREATE INDEX IF NOT EXISTS idx_pdfTable_fingerPrint ON pdfTable(fingerPrint)"; - return [4 /*yield*/, sourcesDB.run(createIndexQuery)]; - case 6: - _b.sent(); - createIndexQueryForPath = "CREATE INDEX IF NOT EXISTS idx_pdfTable_path ON pdfTable(path)"; - return [4 /*yield*/, sourcesDB.run(createIndexQueryForPath) - // Create the folders to watch table - ]; - case 7: - _b.sent(); - createFoldersTable = "CREATE TABLE IF NOT EXISTS watchedFoldersTable(\n id INTEGER PRIMARY KEY,\n path STRING,\n sourceApplication STRING,\n metaDataJSON STRING\n )\n "; - return [4 /*yield*/, sourcesDB.run(createFoldersTable)]; - case 8: - _b.sent(); - createIndexQueryForType = "CREATE INDEX IF NOT EXISTS idx_watchedFoldersTable_type ON watchedFoldersTable(sourceApplication)"; - return [4 /*yield*/, sourcesDB.run(createIndexQueryForType) - // create the markdown table - ]; - case 9: - _b.sent(); - createMarkdownTable = "CREATE TABLE IF NOT EXISTS markdownDocsTable(\n id INTEGER PRIMARY KEY,\n path STRING,\n fingerPrint STRING,\n pageTitle STRING,\n content STRING,\n sourceApplication STRING,\n createdWhen INTEGER,\n creatorId STRING,\n metaDataJSON STRING\n )\n "; - return [4 /*yield*/, sourcesDB.run(createMarkdownTable)]; - case 10: - _b.sent(); - createIndexForMarkdownPath = "CREATE INDEX IF NOT EXISTS idx_markdownDocsTable_path ON markdownDocsTable(path)"; - return [4 /*yield*/, sourcesDB.run(createIndexForMarkdownPath)]; - case 11: - _b.sent(); - createIndexForMarkdownFingerPrint = "CREATE INDEX IF NOT EXISTS idx_markdownDocsTable_fingerPrint ON markdownDocsTable(fingerPrint)"; - return [4 /*yield*/, sourcesDB.run(createIndexForMarkdownFingerPrint)]; - case 12: - _b.sent(); - console.log('SourcesDB initialized at: ', dbPath); - return [4 /*yield*/, lancedb.connect(vectorDBuri)]; - case 13: - 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 = 14; - case 14: - _b.trys.push([14, 22, , 23]); - _b.label = 15; - case 15: - _b.trys.push([15, 17, , 20]); - return [4 /*yield*/, vectorDB.openTable(vectorDocsTableName)]; - case 16: - vectorDocsTable = _b.sent(); - return [3 /*break*/, 20]; - case 17: - _a = _b.sent(); - if (!(vectorDocsTable == null)) return [3 /*break*/, 19]; - return [4 /*yield*/, vectorDB.createTable(vectorDocsTableName, [defaultVectorDocument])]; - case 18: - vectorDocsTable = _b.sent(); - _b.label = 19; - case 19: return [3 /*break*/, 20]; - case 20: return [4 /*yield*/, vectorDocsTable.countRows()]; - case 21: - if ((_b.sent()) === 0) { - vectorDocsTable.add([defaultVectorDocument]); - } - return [3 /*break*/, 23]; - case 22: - error_1 = _b.sent(); - console.log('error', error_1); - return [3 /*break*/, 23]; - case 23: - 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 - }); }); - 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; - feedSourceQueue = __spreadArray(__spreadArray([], feedSourceQueue, true), feedSources, true); - console.log('feedSourceQueue', feedSourceQueue, req.body); - _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; - 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.post('/remove_feed_source', function (req, res) { - return __awaiter(this, void 0, void 0, function () { - var feedUrl, error_7; - 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]); - feedUrl = req.body.feedUrl; - return [4 /*yield*/, (sourcesDB === null || sourcesDB === void 0 ? void 0 : sourcesDB.run("DELETE FROM rssSourcesTable WHERE feedUrl = ?", [ - feedUrl, - ]))]; - case 2: - _a.sent(); - return [2 /*return*/, res.status(200).send('Feed source removed successfully')]; - case 3: - error_7 = _a.sent(); - log.error("Error removing ".concat(req.body.feedUrl, " in /remove_feed_source"), error_7); - return [2 /*return*/, res.status(500).json({ error: error_7 })]; - case 4: return [2 /*return*/]; - } - }); - }); -}); -expressApp.post('/open_file', function (req, res) { - return __awaiter(this, void 0, void 0, function () { - var path, error_8; - 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]); - console.log('path', path); - return [4 /*yield*/, shell.openPath(path)]; - case 2: - _a.sent(); - console.log('worked'); - return [2 /*return*/, res.status(200).send('File opened successfully')]; - case 3: - error_8 = _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(); - 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, sourceApplication, metaDataJSON) 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; - 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_9; - 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_9 = _a.sent(); - // Handle error if max retries reached - console.error(error_9); - 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')]; - } - 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 \ No newline at end of file diff --git a/build/index.js.map b/build/index.js.map deleted file mode 100644 index 2943179..0000000 --- a/build/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"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,OAAO,EACP,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,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE;IAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAA;AAC7C,CAAC,CAAC,CAAA;AAEF,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,aAAa,CAAC;4BAC5C,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,OAAO,EACP,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,UAAU;wBAChB,CAAC,CAAC,IAAI,CAAC,IAAI,CACL,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,EACzB,OAAO,EACP,YAAY,CACf;wBACH,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC;oBAC/D,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,qBAAM,4BAA4B,EAAE,EAAA;;gBAApC,SAAoC,CAAA;gBACpC,IAAI;oBACA,YAAY,EAAE,CAAA,CAAC,6BAA6B;oBAE5C,GAAG,CAAC,WAAW,EAAE,CAAA;oBACb,YAAY,GAAG,EAAE,CAAA;oBACrB,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,EAAE,CAAA;oBAEf,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;oBAEW,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;sBAFW;;oBAA3C,SAA2C,CAAA;oBAIvC,cAAc,GAAG,iXAWZ,CAAA;oBACT,qBAAM,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,EAAA;;oBAAnC,SAAmC,CAAA;oBAC/B,gBAAgB,GAAG,8EAA8E,CAAA;oBACrG,qBAAM,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAA;;oBAArC,SAAqC,CAAA;oBAEjC,uBAAuB,GAAG,gEAAgE,CAAA;oBAC9F,qBAAM,SAAS,CAAC,GAAG,CAAC,uBAAuB,CAAC;wBAE5C,oCAAoC;sBAFQ;;oBAA5C,SAA4C,CAAA;oBAIxC,kBAAkB,GAAG,yLAMxB,CAAA;oBACD,qBAAM,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAA;;oBAAvC,SAAuC,CAAA;oBACnC,uBAAuB,GAAG,mGAAmG,CAAA;oBACjI,qBAAM,SAAS,CAAC,GAAG,CAAC,uBAAuB,CAAC;wBAE5C,4BAA4B;sBAFgB;;oBAA5C,SAA4C,CAAA;oBAGxC,mBAAmB,GAAG,iUAWzB,CAAA;oBAED,qBAAM,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAA;;oBAAxC,SAAwC,CAAA;oBACpC,0BAA0B,GAAG,kFAAkF,CAAA;oBACnH,qBAAM,SAAS,CAAC,GAAG,CAAC,0BAA0B,CAAC,EAAA;;oBAA/C,SAA+C,CAAA;oBAE3C,iCAAiC,GAAG,gGAAgG,CAAA;oBACxI,qBAAM,SAAS,CAAC,GAAG,CAAC,iCAAiC,CAAC,EAAA;;oBAAtD,SAAsD,CAAA;oBAEtD,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,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,eAAe,mCAAO,eAAe,SAAK,WAAW,OAAC,CAAA;;;;wCAIzC,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,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;;;oBAVoB,IAAe,CAAA;;wBAiBxC,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,IAAI,CAAC,qBAAqB,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;;;;oBAGS,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAA;oBAChC,qBAAM,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,GAAG,CAAC,+CAA+C,EAAE;4BAClE,OAAO;yBACV,CAAC,CAAA,EAAA;;oBAFF,SAEE,CAAA;oBACF,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,kCAAkC,CAAC,EAAA;;;oBAE/D,GAAG,CAAC,KAAK,CACL,yBAAkB,GAAG,CAAC,IAAI,CAAC,OAAO,4BAAyB,EAC3D,OAAK,CACR,CAAA;oBACD,sBAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAK,EAAE,CAAC,EAAA;;;;;CAIpD,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,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;oBACzB,qBAAM,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAA;;oBAA1B,SAA0B,CAAA;oBAC1B,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;oBACrB,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,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,wFAAwF,EACxF,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;oBAEjD,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;QAEG,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 deleted file mode 100644 index e471fc3..0000000 --- a/build/indexing_pipeline/index.js +++ /dev/null @@ -1,159 +0,0 @@ -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; - 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 \ No newline at end of file diff --git a/build/indexing_pipeline/index.js.map b/build/indexing_pipeline/index.js.map deleted file mode 100644 index f69b850..0000000 --- a/build/indexing_pipeline/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"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 deleted file mode 100644 index c8e24d4..0000000 --- a/build/indexing_pipeline/markdown_indexing.js +++ /dev/null @@ -1,220 +0,0 @@ -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(); - 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 endIndex, chunks, chunkedMarkdown, lastHeadline; - return __generator(this, function (_a) { - // chunk it up by using any double \n as the delimiter, except when the previous item was a headline, then include it - // also include the last headline in every chunk until a new headline is found - // Check if the first line of the document has a "---" - if (markdown.startsWith('---')) { - endIndex = markdown.indexOf('\n---', 4); - if (endIndex !== -1) { - // Delete everything in between, including the "---" delimiters - markdown = markdown.slice(endIndex + 4); - } - } - // Replace all lines that are only "---" with "\n" - markdown = markdown.replace(/^---$/gm, '\n'); - markdown = markdown - .split('\n') - .filter(function (line) { return !/^[^a-zA-Z0-9]+$/.test(line); }) - .join('\n'); - chunks = markdown.split('\n'); - chunkedMarkdown = []; - lastHeadline = ''; - chunks.forEach(function (chunk) { - if (chunk === '\n' || chunk === '') { - return; - } - if (/^[^a-zA-Z0-9]+$/.test(chunk)) { - return; - } - if (chunk.startsWith('#')) { - lastHeadline = chunk; - } - if (lastHeadline.length > 0 && !chunk.startsWith('#')) { - chunkedMarkdown.push(lastHeadline + '\n' + chunk); - lastHeadline = ''; - } - else if (lastHeadline.length === 0 && !chunk.startsWith('#')) { - chunkedMarkdown.push(chunk); - } - // Clean the chunk by converting markdown to text - }); - return [2 /*return*/, chunkedMarkdown]; - }); - }); -} -//# sourceMappingURL=markdown_indexing.js.map \ No newline at end of file diff --git a/build/indexing_pipeline/markdown_indexing.js.map b/build/indexing_pipeline/markdown_indexing.js.map deleted file mode 100644 index 04327fd..0000000 --- a/build/indexing_pipeline/markdown_indexing.js.map +++ /dev/null @@ -1 +0,0 @@ -{"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 deleted file mode 100644 index ff40fd0..0000000 --- a/build/indexing_pipeline/pdf_indexing.js +++ /dev/null @@ -1,286 +0,0 @@ -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 \ No newline at end of file diff --git a/build/indexing_pipeline/pdf_indexing.js.map b/build/indexing_pipeline/pdf_indexing.js.map deleted file mode 100644 index 93f9244..0000000 --- a/build/indexing_pipeline/pdf_indexing.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pdf_indexing.js","sourceRoot":"","sources":["../../src/indexing_pipeline/pdf_indexing.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,MAAM,MAAM,QAAQ,CAAA;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAwB1C,SAAe,UAAU,CACrB,IAAY,EACZ,SAAoB,EACpB,KAAU,EACV,iBAAiD;;;;;;;;;oBAE3C,SAAS,GAAG,SAAS,CAAC,SAAS,CAAA;oBACjB,qBAAM,SAAS,CAAC,GAAG,CACnC,uCAAuC,EACvC,CAAC,IAAI,CAAC,CACT,EAAA;;oBAHK,WAAW,GAAG,SAGnB;yBACG,CAAA,WAAW,KAAK,SAAS,CAAA,EAAzB,yBAAyB;oBAEnB,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;oBAC/B,UAAU,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;oBAClC,qBAAM,KAAK,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,OAAO,EAAA;;oBAA9D,WAAS,SAAqD;oBAC9D,WAAW,GAAG,QAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;oBAGhB,qBAAM,SAAS,CAAC,GAAG,CAClD,8CAA8C,EAC9C,CAAC,WAAW,CAAC,CAChB;wBAED,8DAA8D;sBAF7D;;oBAHK,0BAA0B,GAAG,SAGlC;yBAGG,0BAA0B,EAA1B,wBAA0B;oBACpB,gBAAgB,GAAG,0BAA0B,CAAC,IAAI,CAAC,SAAS,CAC9D,CAAC,EACD,0BAA0B,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CACnD,CAAA;oBACK,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;yBAExD,CAAA,gBAAgB,KAAK,WAAW,CAAA,EAAhC,wBAAgC;oBAChC,qBAAM,SAAS,CAAC,SAAS,CAAC,GAAG,CACzB,oDAAoD,EACpD,CAAC,IAAI,EAAE,WAAW,CAAC,CACtB,EAAA;;oBAHD,SAGC,CAAA;;;oBAEL,IAAI,0BAA0B,CAAC,IAAI,KAAK,IAAI,EAAE;wBAC1C,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;qBACrC;oBACD,sBAAM;wBAIO,qBAAM,QAAM,CAAC,WAAW,EAAE,EAAA;;oBAArC,QAAQ,GAAG,SAA0B;oBACvC,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAA;oBAEpD,IAAI;wBACA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAA;qBAC3C;oBAAC,OAAO,KAAK,EAAE;wBACZ,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;qBAC3B;oBAEG,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAA;oBAGnC,iBAA8B,EAAE,CAAA;oBAE9B,OAAO,GAAG;;;;;oCACR,GAAG,GAAG,QAAM,CAAA;oCACZ,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAA;oCAE3B,CAAC,GAAG,CAAC;;;yCAAE,CAAA,CAAC,IAAI,QAAQ,CAAA;oCACd,qBAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAA;;oCAA3B,IAAI,GAAG,SAAoB;oCACb,qBAAM,IAAI,CAAC,cAAc,EAAE;wCAE7C,2BAA2B;sCAFkB;;oCAAzC,WAAW,GAAG,SAA2B;oCAE7C,2BAA2B;oCAC3B,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CACxC,UAAC,IAAiB,IAAK,OAAA,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,EAAtB,CAAsB,CAChD,CAAA;oCAED,cAAY,mCAAO,cAAY,SAAK,WAAW,CAAC,KAAK,OAAC,CAAA;;;oCAT3B,CAAC,EAAE,CAAA;;;;;yBAWrC,CAAA;oBAED,qBAAM,OAAO,EAAE;wBACf,mDAAmD;sBADpC;;oBAAf,SAAe,CAAA;oBAEX,OAAO,GAAG,EAAE,CAAA;oBAGZ,iBAA0C,EAAE,CAAA;oBAChD,cAAY,CAAC,OAAO,CAAC,UAAC,WAAwB;wBAC1C,IAAI,MAAM,GAAW,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;wBAC7C,IAAI,cAAY,CAAC,MAAM,CAAC,EAAE;4BACtB,cAAY,CAAC,MAAM,CAAC,EAAE,CAAA;yBACzB;6BAAM;4BACH,cAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;yBAC3B;oBACL,CAAC,CAAC,CAAA;oBAEE,aAAa,GAAa,MAAM,CAAC,IAAI,CAAC,cAAY,CAAC;yBAClD,GAAG,CAAC,MAAM,CAAC;yBACX,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,cAAY,CAAC,CAAC,CAAC,GAAG,cAAY,CAAC,CAAC,CAAC,EAAjC,CAAiC,CAAC,CAAA;oBAElD,oBAA0B,aAAa,CAAC,CAAC,CAAC,CAAA;oBAC1C,cAAc,GAAa,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;oBAErD,cAAc,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAArB,CAAqB,CAAC,CAAA;oBAEhD,iBAA0C,EAAE,CAAA;oBAChD,iEAAiE;oBACjE,cAAY,CAAC,iBAAe,CAAC,GAAG,WAAW,CAAA;oBAE3C,4CAA4C;oBAC5C,cAAc,CAAC,OAAO,CAAC,UAAC,MAAM,EAAE,KAAK;wBACjC,IAAI,MAAM,GAAG,iBAAe,EAAE;4BAC1B,cAAY,CAAC,MAAM,CAAC,GAAG,WAAW,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;yBACnD;6BAAM;4BACH,cAAY,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;yBACjD;oBACL,CAAC,CAAC,CAAA;oBAGE,SAAS,GAAG,EAAE,CAAA;oBAElB,KAAS,CAAC,GAAG,CAAC,EAAE,CAAC,IAAG,cAAY,aAAZ,cAAY,uBAAZ,cAAY,CAAE,MAAM,CAAA,EAAE,CAAC,EAAE,EAAE;wBACrC,WAAW,GAAG,cAAY,CAAC,CAAC,CAAC,CAAA;wBAC/B,mBAAmB,SAAA,CAAA;wBACvB,IACI,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,SAAS,CAAC,CAAC,CAAC;6BACrB,MAAA,cAAY,CAAC,CAAC,GAAG,CAAC,CAAC,0CAAE,SAAS,CAAC,CAAC,CAAC,CAAA;4BACrC,CAAC,OAAO,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,SAAS,CAAC,CAAC,CAAC,CAAA,KAAK,QAAQ;gCAC1C,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,SAAS,CAAC,CAAC,CAAC,KAAI,iBAAe;gCAC5C,WAAW,CAAC,GAAG,KAAK,EAAE,CAAC,EAC7B;4BACE,IACI,WAAW,CAAC,MAAM;gCAClB,CAAA,MAAA,cAAY,CAAC,CAAC,GAAG,CAAC,CAAC,0CAAE,SAAS,CAAC,CAAC,CAAC;oCAC7B,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,EAC9B;gCACE,SAAS,IAAI,WAAW,CAAC,GAAG,GAAG,GAAG,CAAA;6BACrC;iCAAM;gCACH,SAAS,IAAI,WAAW,CAAC,GAAG,CAAA;6BAC/B;yBACJ;6BAAM,IAAI,CAAC,KAAK,CAAA,cAAY,aAAZ,cAAY,uBAAZ,cAAY,CAAE,MAAM,IAAG,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;4BAC/D,mBAAmB;gCACf,cAAY,CAAC,MAAA,cAAY,CAAC,CAAC,CAAC,0CAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;4BAC/C,OAAO,CAAC,IAAI;gCACR,GAAC,mBAAmB,IAAG,SAAS;oCAClC,CAAA;yBACL;6BAAM;4BACH,IAAI,CAAA,MAAA,cAAY,CAAC,CAAC,GAAG,CAAC,CAAC,0CAAE,SAAS,CAAC,CAAC,CAAC,KAAI,IAAI,EAAE;gCAC3C,mBAAmB;oCACf,cAAY,CAAC,MAAA,cAAY,CAAC,CAAC,CAAC,0CAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;6BAClD;iCAAM;gCACH,mBAAmB;oCACf,cAAY,CAAC,MAAA,cAAY,CAAC,CAAC,GAAG,CAAC,CAAC,0CAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;6BACtD;4BAED,gDAAgD;4BAChD,IAAI,SAAS,CAAC,MAAM,GAAG,EAAE,EAAE;gCACvB,OAAO,CAAC,IAAI;oCACR,GAAC,mBAAmB,IAAG,SAAS,CAAC,OAAO,CACpC,aAAa,EACb,EAAE,CACL;wCACH,CAAA;6BACL;4BAED,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;gCAC1B,IACI,WAAW,CAAC,MAAM;oCAClB,CAAA,MAAA,cAAY,CAAC,CAAC,GAAG,CAAC,CAAC,0CAAE,SAAS,CAAC,CAAC,CAAC;wCAC7B,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,EAC9B;oCACE,SAAS,GAAG,WAAW,CAAC,GAAG,GAAG,GAAG,CAAA;iCACpC;qCAAM;oCACH,SAAS,GAAG,WAAW,CAAC,GAAG,CAAA;iCAC9B;6BACJ;iCAAM;gCACH,SAAS,GAAG,EAAE,CAAA;6BACjB;yBACJ;qBACJ;oBAED,iGAAiG;oBAEjG,IAAI,CAAC,KAAK,EAAE;wBACF,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;wBACtC,kBAAgB,EAAE,CAAA;wBACtB,cAAc,CAAC,OAAO,CAAC,UAAC,IAAI;4BACxB,IAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;4BAC9B,IAAI,CAAC,OAAO,CAAC,UAAC,GAAG;gCACb,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;oCAC3B,IAAM,aAAa,GAAG,QAAQ,CAC1B,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAC7B,CAAA;oCACD,IAAI,aAAa,GAAG,eAAa,EAAE;wCAC/B,eAAa,GAAG,aAAa,CAAA;qCAChC;iCACJ;4BACL,CAAC,CAAC,CAAA;wBACN,CAAC,CAAC,CAAA;wBACE,gBAAgB,GAAG,cAAc,CAAC,IAAI,CACtC,UAAC,IAAI,IAAK,OAAA,UAAU,IAAI,IAAI,EAAlB,CAAkB,CAC/B,CAAA;wBACD,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;wBAE9D,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;4BACxB,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;4BACtB,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;4BAC1C,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;yBAC9B;qBACJ;oBAEK,cAAc,GAAG;wBACnB,IAAI,EAAE,IAAI,IAAI,EAAE;wBAChB,OAAO,EAAE,WAAW,IAAI,EAAE;wBAC1B,SAAS,EAAE,KAAK,IAAI,EAAE;wBACtB,iBAAiB,EAAE,UAAU,IAAI,EAAE;wBACnC,WAAW,EAAE,WAAW,IAAI,IAAI,CAAC,GAAG,EAAE;wBACtC,SAAS,EAAE,GAAG,IAAI,EAAE;wBACpB,WAAW,EAAE,KAAK,IAAI,EAAE;wBACxB,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE;qBAC7C,CAAA;oBAED,qBAAM,SAAS,CAAC,SAAS,CAAC,GAAG,CACzB,2DAA2D,EAC3D;4BACI,cAAc,CAAC,IAAI;4BACnB,cAAc,CAAC,OAAO;4BACtB,cAAc,CAAC,SAAS;4BACxB,cAAc,CAAC,WAAW;4BAC1B,cAAc,CAAC,WAAW;4BAC1B,cAAc,CAAC,iBAAiB;4BAChC,cAAc,CAAC,SAAS;4BACxB,EAAE;yBACL,CACJ,EAAA;;oBAZD,SAYC,CAAA;oBACD,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,cAAc,CAAC,OAAO,CAAC,CAAA;oBAE7D,qBAAM,aAAa,CAAC;4BAChB,OAAO,EAAE,cAAc,CAAC,OAAO;4BAC/B,SAAS,EAAE,cAAc,CAAC,SAAS;4BACnC,QAAQ,EAAE,cAAc,CAAC,WAAW;4BACpC,WAAW,EAAE,cAAc,CAAC,WAAW;4BACvC,WAAW,EAAE,cAAc,CAAC,WAAW;4BACvC,iBAAiB,EAAE,cAAc,CAAC,iBAAiB;4BACnD,SAAS,EAAE,cAAc,CAAC,SAAS;4BACnC,iBAAiB,EAAE,iBAAiB;4BACpC,SAAS,EAAE,SAAS;4BACpB,wBAAwB,EAAE,IAAI;yBACjC,CAAC,EAAA;;oBAXF,SAWE,CAAA;oBACF,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,cAAc,CAAC,OAAO,CAAC,CAAA;oBAE/D,sBAAO,cAAc,EAAA;yBAErB,sBAAM;;;;CAEb;AAED,OAAO,EAAE,UAAU,EAAE,CAAA"} \ No newline at end of file diff --git a/build/indexing_pipeline/rssFeeds/index.js b/build/indexing_pipeline/rssFeeds/index.js deleted file mode 100644 index 801c69a..0000000 --- a/build/indexing_pipeline/rssFeeds/index.js +++ /dev/null @@ -1,432 +0,0 @@ -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')) { - 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]; - 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 \ No newline at end of file diff --git a/build/indexing_pipeline/rssFeeds/index.js.map b/build/indexing_pipeline/rssFeeds/index.js.map deleted file mode 100644 index dc29277..0000000 --- a/build/indexing_pipeline/rssFeeds/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"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 deleted file mode 100644 index 8c25020..0000000 --- a/build/indexing_pipeline/utils.js +++ /dev/null @@ -1,22138 +0,0 @@ -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 \ No newline at end of file diff --git a/build/indexing_pipeline/utils.js.map b/build/indexing_pipeline/utils.js.map deleted file mode 100644 index 4ae6fe5..0000000 --- a/build/indexing_pipeline/utils.js.map +++ /dev/null @@ -1 +0,0 @@ -{"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/loading.html b/build/loading.html deleted file mode 100644 index 0d652df..0000000 --- a/build/loading.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - Preparing Indexing - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

- Preparing the app -

-

- We have to download a few things to enable the indexing of your - content. Allow notifications to get notified even if you close or - not focus on this screen. -

- - - diff --git a/build/preload.cjs b/build/preload.cjs deleted file mode 100644 index 15bdfbb..0000000 --- a/build/preload.cjs +++ /dev/null @@ -1,19 +0,0 @@ -// 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 - -const { contextBridge, ipcRenderer } = require('electron') - -contextBridge.exposeInMainWorld('electron', { - ipcRenderer: { - send: function (channel, data) { - ipcRenderer.send(channel, data) - }, - on: function (channel, func) { - ipcRenderer.on(channel, func) - }, - getDbPath: async function () { - return await ipcRenderer.invoke('get-db-path') - }, - }, -}) diff --git a/build/preload.cjs.map b/build/preload.cjs.map deleted file mode 100644 index db0d727..0000000 --- a/build/preload.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"preload.cjs","sourceRoot":"","sources":["../src/preload.cjs"],"names":[],"mappings":"AAAA,iBAAiB;AACjB,4EAA4E;AAC5E,gFAAgF;AAE1E,IAAA,KAAiC,OAAO,CAAC,UAAU,CAAC,EAAlD,aAAa,mBAAA,EAAE,WAAW,iBAAwB,CAAA;AAE1D,aAAa,CAAC,iBAAiB,CAAC,UAAU,EAAE;IACxC,WAAW,EAAE;QACT,IAAI,EAAE,UAAU,OAAO,EAAE,IAAI;YACzB,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QACnC,CAAC;QACD,EAAE,EAAE,UAAU,OAAO,EAAE,IAAI;YACvB,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QACjC,CAAC;QACD,SAAS,EAAE;YACP,OAAO,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;QAC5C,CAAC;KACJ;CACJ,CAAC,CAAA"} \ No newline at end of file diff --git a/build/preload.js b/build/preload.js deleted file mode 100644 index 99bf8b1..0000000 --- a/build/preload.js +++ /dev/null @@ -1,19 +0,0 @@ -// 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 - -const { contextBridge, ipcRenderer } = require('electron') - -contextBridge.exposeInMainWorld('electron', { - ipcRenderer: { - send: function (channel, data) { - ipcRenderer.send(channel, data) - }, - on: function (channel, func) { - ipcRenderer.on(channel, func) - }, - getDbPath: function () { - return ipcRenderer.invoke('get-db-path') - }, - }, -}) diff --git a/build/renderer.js b/build/renderer.js deleted file mode 100644 index 22f0ac7..0000000 --- a/build/renderer.js +++ /dev/null @@ -1,30 +0,0 @@ -/** - * 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 \ No newline at end of file diff --git a/build/renderer.js.map b/build/renderer.js.map deleted file mode 100644 index bad75d1..0000000 --- a/build/renderer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"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 deleted file mode 100644 index b725bb5..0000000 --- a/build/search/find_similar.js +++ /dev/null @@ -1,129 +0,0 @@ -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 sourceApplication = ?", [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: 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 \ No newline at end of file diff --git a/build/search/find_similar.js.map b/build/search/find_similar.js.map deleted file mode 100644 index a2f7a42..0000000 --- a/build/search/find_similar.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"find_similar.js","sourceRoot":"","sources":["../../src/search/find_similar.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 01521bb..1ea6961 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "memex-desktop", "productName": "Memex Desktop", - "version": "0.0.30", + "version": "0.0.36", "description": "Backup and sync to your favorite PKM tools", "main": "build/index.js", "type": "module", diff --git a/src/index.ts b/src/index.ts index 39b1211..5845f87 100644 --- a/src/index.ts +++ b/src/index.ts @@ -47,6 +47,7 @@ import { Server } from 'http' dotEnv.config() const isPackaged = app.isPackaged +let updateStage: 'pristine' | 'checking' | 'downloading' | string = 'pristine' let tray: Tray | null = null let mainWindow: BrowserWindow let downloadProgress: number = 0 @@ -392,6 +393,15 @@ app.on('ready', async () => { tray = new Tray(trayIcon) tray.setImage(trayIcon) + let updateLabel = 'Check for Updates' + + if (updateStage === 'checking') { + updateLabel = 'Checking for Updates' + } + if (updateStage === 'downloading') { + updateLabel = 'Update Downloading' + } + var updateMenuItem = { label: 'Check for Updates', click: function () { @@ -419,12 +429,6 @@ app.on('ready', async () => { store.delete('syncKey') }, }, - { - label: 'Add Local folder', - click: async function () { - await watchNewFolder() - }, - }, updateMenuItem, { label: 'Exit', @@ -444,12 +448,15 @@ app.on('ready', async () => { try { autoUpdater .checkForUpdates() - .then(function () {}) + .then(function () { + updateStage = 'checking' + }) .catch(function (err) { log.error('err', err) }) autoUpdater.on('update-available', async function () { log.info('update available') + updateStage = 'downloading' log.info(autoUpdater.downloadUpdate()) })