diff --git a/client/out/extension.js b/client/out/extension.js
deleted file mode 100644
index ce0594edb8b25fb021ab227d693a13dac1ace5d9..0000000000000000000000000000000000000000
--- a/client/out/extension.js
+++ /dev/null
@@ -1,47 +0,0 @@
-"use strict";
-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());
-    });
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.deactivate = exports.activate = void 0;
-const languageserver = require("./languageserver");
-const psi = require("./psi/psiViewer");
-let luadoc = require('../3rd/vscode-lua-doc/extension.js');
-function activate(context) {
-    languageserver.activate(context);
-    let luaDocContext = {
-        ViewType: undefined,
-        OpenCommand: undefined,
-        extensionPath: undefined,
-    };
-    for (const k in context) {
-        try {
-            luaDocContext[k] = context[k];
-        }
-        catch (error) { }
-    }
-    luaDocContext.ViewType = 'lua-doc';
-    luaDocContext.OpenCommand = 'extension.lua.doc';
-    luaDocContext.extensionPath = context.extensionPath + '/client/3rd/vscode-lua-doc';
-    luadoc.activate(luaDocContext);
-    psi.activate(context);
-    return {
-        reportAPIDoc(params) {
-            return __awaiter(this, void 0, void 0, function* () {
-                yield languageserver.reportAPIDoc(params);
-            });
-        }
-    };
-}
-exports.activate = activate;
-function deactivate() {
-    languageserver.deactivate();
-}
-exports.deactivate = deactivate;
-//# sourceMappingURL=extension.js.map
\ No newline at end of file
diff --git a/client/out/languageserver.js b/client/out/languageserver.js
deleted file mode 100644
index 71300aa1bdea8e3573cbebf450631225eedc999f..0000000000000000000000000000000000000000
--- a/client/out/languageserver.js
+++ /dev/null
@@ -1,183 +0,0 @@
-"use strict";
-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());
-    });
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.reportAPIDoc = exports.deactivate = exports.activate = exports.defaultClient = void 0;
-const path = require("path");
-const os = require("os");
-const fs = require("fs");
-const vscode = require("vscode");
-const vscode_1 = require("vscode");
-const node_1 = require("vscode-languageclient/node");
-function registerCustomCommands(context) {
-    context.subscriptions.push(vscode_1.commands.registerCommand('lua.config', (changes) => {
-        let propMap = new Map();
-        for (const data of changes) {
-            let config = vscode_1.workspace.getConfiguration(undefined, vscode_1.Uri.parse(data.uri));
-            if (data.action == 'add') {
-                let value = config.get(data.key);
-                value.push(data.value);
-                config.update(data.key, value, data.global);
-                continue;
-            }
-            if (data.action == 'set') {
-                config.update(data.key, data.value, data.global);
-                continue;
-            }
-            if (data.action == 'prop') {
-                if (!propMap[data.key]) {
-                    propMap[data.key] = config.get(data.key);
-                }
-                propMap[data.key][data.prop] = data.value;
-                config.update(data.key, propMap[data.key], data.global);
-                continue;
-            }
-        }
-    }));
-}
-class LuaClient {
-    constructor(context, documentSelector) {
-        this.context = context;
-        this.documentSelector = documentSelector;
-        this.disposables = new Array();
-    }
-    start() {
-        var _a;
-        return __awaiter(this, void 0, void 0, function* () {
-            // Options to control the language client
-            let clientOptions = {
-                // Register the server for plain text documents
-                documentSelector: this.documentSelector,
-                progressOnInitialization: true,
-                markdown: {
-                    isTrusted: true,
-                    supportHtml: true,
-                },
-                initializationOptions: {
-                    changeConfiguration: true,
-                }
-            };
-            let config = vscode_1.workspace.getConfiguration(undefined, (_a = vscode.workspace.workspaceFolders) === null || _a === void 0 ? void 0 : _a[0]);
-            let commandParam = config.get("Lua.misc.parameters");
-            let command = yield this.getCommand(config);
-            let serverOptions = {
-                command: command,
-                args: commandParam,
-            };
-            this.client = new node_1.LanguageClient('Lua', 'Lua', serverOptions, clientOptions);
-            //client.registerProposedFeatures();
-            yield this.client.start();
-            this.onCommand();
-            this.statusBar();
-        });
-    }
-    getCommand(config) {
-        return __awaiter(this, void 0, void 0, function* () {
-            let executablePath = config.get("Lua.misc.executablePath");
-            if (executablePath && executablePath != "") {
-                return executablePath;
-            }
-            let command;
-            let platform = os.platform();
-            let binDir;
-            if ((yield fs.promises.stat(this.context.asAbsolutePath('server/bin'))).isDirectory()) {
-                binDir = 'bin';
-            }
-            switch (platform) {
-                case "win32":
-                    command = this.context.asAbsolutePath(path.join('server', binDir ? binDir : 'bin-Windows', 'lua-language-server.exe'));
-                    break;
-                case "linux":
-                    command = this.context.asAbsolutePath(path.join('server', binDir ? binDir : 'bin-Linux', 'lua-language-server'));
-                    yield fs.promises.chmod(command, '777');
-                    break;
-                case "darwin":
-                    command = this.context.asAbsolutePath(path.join('server', binDir ? binDir : 'bin-macOS', 'lua-language-server'));
-                    yield fs.promises.chmod(command, '777');
-                    break;
-            }
-            return command;
-        });
-    }
-    stop() {
-        return __awaiter(this, void 0, void 0, function* () {
-            this.client.stop();
-            for (const disposable of this.disposables) {
-                disposable.dispose();
-            }
-        });
-    }
-    statusBar() {
-        let client = this.client;
-        let bar = vscode_1.window.createStatusBarItem();
-        bar.text = 'Lua';
-        bar.command = 'Lua.statusBar';
-        this.disposables.push(vscode_1.commands.registerCommand(bar.command, () => {
-            client.sendNotification('$/status/click');
-        }));
-        this.disposables.push(client.onNotification('$/status/show', (params) => {
-            bar.show();
-        }));
-        this.disposables.push(client.onNotification('$/status/hide', (params) => {
-            bar.hide();
-        }));
-        this.disposables.push(client.onNotification('$/status/report', (params) => {
-            bar.text = params.text;
-            bar.tooltip = params.tooltip;
-        }));
-        client.sendNotification('$/status/refresh');
-        this.disposables.push(bar);
-    }
-    onCommand() {
-        this.disposables.push(this.client.onNotification('$/command', (params) => {
-            vscode_1.commands.executeCommand(params.command, params.data);
-        }));
-    }
-}
-function activate(context) {
-    registerCustomCommands(context);
-    function didOpenTextDocument(document) {
-        // We are only interested in language mode text
-        if (document.languageId !== 'lua' || (document.uri.scheme !== 'file' && document.uri.scheme !== 'untitled')) {
-            return;
-        }
-        // Untitled files go to a default client.
-        if (!exports.defaultClient) {
-            exports.defaultClient = new LuaClient(context, [
-                { language: 'lua' }
-            ]);
-            exports.defaultClient.start();
-            return;
-        }
-    }
-    vscode_1.workspace.onDidOpenTextDocument(didOpenTextDocument);
-    vscode_1.workspace.textDocuments.forEach(didOpenTextDocument);
-}
-exports.activate = activate;
-function deactivate() {
-    return __awaiter(this, void 0, void 0, function* () {
-        if (exports.defaultClient) {
-            exports.defaultClient.stop();
-            exports.defaultClient = null;
-        }
-        return undefined;
-    });
-}
-exports.deactivate = deactivate;
-function reportAPIDoc(params) {
-    return __awaiter(this, void 0, void 0, function* () {
-        if (!exports.defaultClient) {
-            return;
-        }
-        exports.defaultClient.client.sendNotification('$/api/report', params);
-    });
-}
-exports.reportAPIDoc = reportAPIDoc;
-//# sourceMappingURL=languageserver.js.map
\ No newline at end of file
diff --git a/client/out/psi/psiViewer.js b/client/out/psi/psiViewer.js
deleted file mode 100644
index f527dc60f39932a764d929c68ad0952889a7a0a6..0000000000000000000000000000000000000000
--- a/client/out/psi/psiViewer.js
+++ /dev/null
@@ -1,147 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.activate = void 0;
-const fs = require("fs");
-const path = require("path");
-const vscode = require("vscode");
-const languageserver_1 = require("../languageserver");
-const LANGUAGE_ID = "lua";
-/**
- * Manages webview panels
- */
-class PsiViewer {
-    constructor(context, column) {
-        this.context = context;
-        this.disposables = [];
-        this.extensionPath = context.extensionPath;
-        this.builtAppFolder = PsiViewer.distDirectory;
-        // Create and show a new webview panel
-        this.panel = vscode.window.createWebviewPanel(PsiViewer.viewType, PsiViewer.title, column, {
-            // Enable javascript in the webview
-            enableScripts: true,
-            // And restrict the webview to only loading content from our extension's `media` directory.
-            localResourceRoots: [vscode.Uri.file(path.join(this.extensionPath, this.builtAppFolder))]
-        });
-        // Set the webview's initial html content
-        this.panel.webview.html = this._getHtmlForWebview();
-        // Listen for when the panel is disposed
-        // This happens when the user closes the panel or when the panel is closed programatically
-        this.panel.onDidDispose(() => this.dispose(), null, this.disposables);
-    }
-    static createOrShow(context) {
-        // const column = vscode.window.activeTextEditor ? vscode.window.activeTextEditor.viewColumn : undefined;
-        // If we already have a panel, show it.
-        // Otherwise, create angular panel.
-        if (PsiViewer.currentPanel) {
-            PsiViewer.currentPanel.panel.reveal(vscode.ViewColumn.Two);
-        }
-        else {
-            PsiViewer.currentPanel = new PsiViewer(context, vscode.ViewColumn.Two);
-            PsiViewer.currentPanel.active(context);
-        }
-        return PsiViewer.currentPanel;
-    }
-    dispose() {
-        PsiViewer.currentPanel = undefined;
-        // Clean up our resources
-        this.panel.dispose();
-        while (this.disposables.length) {
-            const x = this.disposables.pop();
-            if (x) {
-                x.dispose();
-            }
-        }
-    }
-    post(message) {
-        this.panel.webview.postMessage(message);
-    }
-    /**
-     * Returns html of the start page (index.html)
-     */
-    _getHtmlForWebview() {
-        // path to dist folder
-        const appDistPath = path.join(this.extensionPath, PsiViewer.distDirectory);
-        const appDistPathUri = vscode.Uri.file(appDistPath);
-        // path as uri
-        const baseUri = this.panel.webview.asWebviewUri(appDistPathUri);
-        // get path to index.html file from dist folder
-        const indexPath = path.join(appDistPath, 'index.html');
-        // read index file from file system
-        let indexHtml = fs.readFileSync(indexPath, { encoding: 'utf8' });
-        // update the base URI tag
-        indexHtml = indexHtml.replace('<base href="/">', `<base href="${String(baseUri)}/">`);
-        return indexHtml;
-    }
-    active(context) {
-        context.subscriptions.push(vscode.workspace.onDidChangeTextDocument(PsiViewer.onDidChangeTextDocument, null, context.subscriptions));
-        context.subscriptions.push(vscode.window.onDidChangeActiveTextEditor(PsiViewer.onDidChangeActiveTextEditor, null, context.subscriptions));
-        context.subscriptions.push(vscode.window.onDidChangeTextEditorSelection(PsiViewer.onDidChangeSelection, null, context.subscriptions));
-    }
-    requestPsi(editor) {
-        if (this.timeoutToReqAnn) {
-            clearTimeout(this.timeoutToReqAnn);
-        }
-        this.timeoutToReqAnn = setTimeout(() => {
-            this.requestPsiImpl(editor);
-        }, 150);
-    }
-    requestPsiImpl(editor) {
-        const client = languageserver_1.defaultClient.client;
-        let params = { uri: editor.document.uri.toString() };
-        client === null || client === void 0 ? void 0 : client.sendRequest("$/psi/view", params).then(result => {
-            if (result) {
-                this.post({
-                    type: "psi",
-                    value: [result.data]
-                });
-            }
-        });
-    }
-    requestPsiSelect(position, uri) {
-        const client = languageserver_1.defaultClient.client;
-        let params = { uri: uri.toString(), position };
-        client === null || client === void 0 ? void 0 : client.sendRequest("$/psi/select", params).then(result => {
-            if (result) {
-                this.post({
-                    type: "psi_select",
-                    value: result.data
-                });
-            }
-        });
-    }
-    static onDidChangeTextDocument(event) {
-        const activeEditor = vscode.window.activeTextEditor;
-        const viewer = PsiViewer.currentPanel;
-        if (activeEditor
-            && activeEditor.document === event.document
-            && activeEditor.document.languageId === LANGUAGE_ID) {
-            viewer.requestPsi(activeEditor);
-        }
-    }
-    static onDidChangeActiveTextEditor(editor) {
-        const viewer = PsiViewer.currentPanel;
-        if (editor
-            && editor.document.languageId === LANGUAGE_ID) {
-            viewer.requestPsi(editor);
-        }
-    }
-    static onDidChangeSelection(e) {
-        if (e.kind == vscode.TextEditorSelectionChangeKind.Mouse
-            || e.kind == vscode.TextEditorSelectionChangeKind.Keyboard) {
-            const viewer = PsiViewer.currentPanel;
-            if (viewer) {
-                viewer.requestPsiSelect(e.selections[0].start, e.textEditor.document.uri);
-            }
-        }
-    }
-}
-PsiViewer.viewType = 'LuaPsiView';
-PsiViewer.title = "LuaPsiView";
-PsiViewer.distDirectory = "client/web/dist";
-function activate(context) {
-    context.subscriptions.push(vscode.commands.registerCommand('lua.psi.view', () => {
-        PsiViewer.createOrShow(context);
-    }));
-}
-exports.activate = activate;
-//# sourceMappingURL=psiViewer.js.map
\ No newline at end of file
diff --git a/client/out/psi/psiViewer.js.map b/client/out/psi/psiViewer.js.map
deleted file mode 100644
index d359a07c5959b75b907d53503470fa1e5df35840..0000000000000000000000000000000000000000
--- a/client/out/psi/psiViewer.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"psiViewer.js","sourceRoot":"","sources":["../../src/psi/psiViewer.ts"],"names":[],"mappings":";;;AAAA,yBAAyB;AACzB,6BAA6B;AAC7B,iCAAiC;AACjC,sDAAkD;AAElD,MAAM,WAAW,GAAW,KAAK,CAAC;AAClC;;GAEG;AACH,MAAM,SAAS;IA8BX,YAA4B,OAAgC,EAAE,MAAyB;QAA3D,YAAO,GAAP,OAAO,CAAyB;QAjBpD,gBAAW,GAAwB,EAAE,CAAC;QAkB1C,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,aAAa,CAAC;QAE9C,sCAAsC;QACtC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE;YACvF,mCAAmC;YACnC,aAAa,EAAE,IAAI;YAEnB,2FAA2F;YAC3F,kBAAkB,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;SAC5F,CAAC,CAAC;QAEH,yCAAyC;QACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAEpD,wCAAwC;QACxC,0FAA0F;QAC1F,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1E,CAAC;IAjCM,MAAM,CAAC,YAAY,CAAC,OAAgC;QACvD,yGAAyG;QAEzG,uCAAuC;QACvC,mCAAmC;QACnC,IAAI,SAAS,CAAC,YAAY,EAAE;YACxB,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;SAC9D;aAAM;YACH,SAAS,CAAC,YAAY,GAAG,IAAI,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACvE,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SAC1C;QACD,OAAO,SAAS,CAAC,YAAY,CAAC;IAClC,CAAC;IAuBM,OAAO;QACV,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC;QAEnC,yBAAyB;QACzB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAErB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;YACjC,IAAI,CAAC,EAAE;gBACH,CAAC,CAAC,OAAO,EAAE,CAAC;aACf;SACJ;IACL,CAAC;IAEM,IAAI,CAAC,OAAY;QACpB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACK,kBAAkB;QACtB,sBAAsB;QACtB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;QAC3E,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEpD,cAAc;QACd,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;QAEhE,+CAA+C;QAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAEvD,mCAAmC;QACnC,IAAI,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QAEjE,0BAA0B;QAC1B,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,iBAAiB,EAAE,eAAe,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEtF,OAAO,SAAS,CAAC;IACrB,CAAC;IAEO,MAAM,CAAC,OAAgC;QAC3C,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,SAAS,CAAC,uBAAuB,EAAE,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;QACrI,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,2BAA2B,CAAC,SAAS,CAAC,2BAA2B,EAAE,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;QAC1I,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,8BAA8B,CAAC,SAAS,CAAC,oBAAoB,EAAE,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;IAC1I,CAAC;IAEO,UAAU,CAAC,MAAyB;QACxC,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SACtC;QACD,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,GAAG,EAAE;YACnC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC,EAAE,GAAG,CAAC,CAAC;IACZ,CAAC;IAEO,cAAc,CAAC,MAAyB;QAC5C,MAAM,MAAM,GAAG,8BAAa,CAAC,MAAM,CAAC;QACpC,IAAI,MAAM,GAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC;QAC1D,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,CAAgB,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;YACnE,IAAI,MAAM,EAAE;gBACR,IAAI,CAAC,IAAI,CAAC;oBACN,IAAI,EAAE,KAAK;oBACX,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;iBACvB,CAAC,CAAC;aACN;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,gBAAgB,CAAC,QAAyB,EAAE,GAAe;QAC/D,MAAM,MAAM,GAAG,8BAAa,CAAC,MAAM,CAAC;QACpC,IAAI,MAAM,GAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC;QACpD,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,CAAgB,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;YACrE,IAAI,MAAM,EAAE;gBACR,IAAI,CAAC,IAAI,CAAC;oBACN,IAAI,EAAE,YAAY;oBAClB,KAAK,EAAE,MAAM,CAAC,IAAI;iBACrB,CAAC,CAAC;aACN;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,MAAM,CAAC,uBAAuB,CAAC,KAAqC;QACxE,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC;QACpD,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC;QACtC,IAAI,YAAY;eACT,YAAY,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ;eACxC,YAAY,CAAC,QAAQ,CAAC,UAAU,KAAK,WAAW,EAAE;YACrD,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;SACnC;IACL,CAAC;IAEO,MAAM,CAAC,2BAA2B,CAAC,MAAqC;QAC5E,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC;QACtC,IAAI,MAAM;eACH,MAAM,CAAC,QAAQ,CAAC,UAAU,KAAK,WAAW,EAAE;YAC/C,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;SAC7B;IACL,CAAC;IAEO,MAAM,CAAC,oBAAoB,CAAC,CAAwC;QACxE,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,6BAA6B,CAAC,KAAK;eACjD,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,6BAA6B,CAAC,QAAQ,EAAE;YAC5D,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC;YACtC,IAAI,MAAM,EAAE;gBACR,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;aAC5E;SACJ;IACL,CAAC;;AAzJuB,kBAAQ,GAAG,YAAY,CAAC;AACxB,eAAK,GAAG,YAAY,CAAC;AACrB,uBAAa,GAAG,iBAAiB,CAAC;AA2J9D,SAAgB,QAAQ,CAAC,OAAgC;IACrD,OAAO,CAAC,aAAa,CAAC,IAAI,CACtB,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,cAAc,EAAE,GAAG,EAAE;QACjD,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC,CAAC,CACL,CAAC;AACN,CAAC;AAND,4BAMC"}
\ No newline at end of file
diff --git a/publish.lua b/publish.lua
index a40d6e8ad0732f185f644937eb2c607efbbaf6c8..7598c930bed0a577e4702c9605dfb2ecf92a660c 100644
--- a/publish.lua
+++ b/publish.lua
@@ -128,7 +128,6 @@ print('开始复制文件...')
 local count = copyFiles(ROOT , out) {
     ['client'] = {
         ['node_modules']      = true,
-        ['out']               = true,
         ['package.json']      = true,
         ['3rd']               = {
             ['vscode-lua-doc']  = {